表單的SQL注入

所謂SQL注入:就是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令。也就是說用sql代碼登入你想進(jìn)的網(wǎng)站,但是你沒有賬號或密碼或是你有一個賬號,你就可以用sql注入進(jìn)入相關(guān)的網(wǎng)站,提前你想要的信息。

密碼SQL注入:

比如:我的用戶名是:foo? 密碼是:‘or‘1'=’1

sql語句在查詢時就變成了下面一句話:

$sql = “select count(*) as ctr from users where username=’foo’ and password=” or ‘1′=’1′ limit 1″;

很明顯,現(xiàn)在變成又多了一個條件1=1?只要兩個條件有一條符合,就可以返回1,所以foo可以在密碼為空的情況可以登錄網(wǎng)站。

用戶名SQL注入:

比如:填好正確的用戶名(marcofly)和密碼(test)后,點(diǎn)擊提交,將會返回給我們“歡迎管理員”的界面。

sql如下:

$sql=“select * from users where username='marcofly' and password=md5('test')”;

很明顯,如果給出正確的用戶名和密碼就能成功登錄網(wǎng)站;但是,如果我們輸入一個錯誤的用戶名或密碼呢?很明顯,登入不了吧。恩,正常情況下是如此,但是對于有sql注入漏洞的網(wǎng)站來說,只要構(gòu)造特殊的“字符串”,照樣能夠登入成功。

比如:在用戶名輸入框中輸入:’ or 1=1#,密碼隨便輸入,這時候的合成后的SQL查詢語句為:

$sql="select * from users where username='' or 1=1#' and password=md5('')";

語義分析:“#”在mysql中是注釋符,這樣井號后面的內(nèi)容將被mysql視為注釋內(nèi)容,這樣就不會去執(zhí)行了,換句話說,以下的兩句sql語句等價:

$sql="select * from users where username='' or 1=1#' and password=md5('test')";

等價于

$sql="select * from users where username='' or 1=1";

因?yàn)?=1永遠(yuǎn)是都是成立的,即where子句總是為真,將該sql進(jìn)一步簡化之后,等價于如下select語句:

select * from users 沒錯,該sql語句的作用是檢索users表中的所有字段。

有漏洞的腳本才有機(jī)會給你攻擊,比如一個帶參數(shù)的刪除腳本a.asp?action=del&id=2你可以改為a.asp?action=del&id=2 or 1這樣就有可能刪除全部數(shù)據(jù)------sql注入就是通過類似的手段來破壞數(shù)據(jù)。

說了以上這么多,總結(jié)下來,在測試登錄時,只需記住在用戶名或密碼文本框中輸入:'or' 1 '=' 1就可以了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容