網(wǎng)站建設(shè)初期,很多網(wǎng)站把密碼放到數(shù)據(jù)庫中,在登陸驗(yàn)證中用sql="select * from user where username='"&username&"'and pass='"& pass &'"查詢用戶名、密碼,這種是很不安全的。
解決辦法:構(gòu)造特殊用戶名和密碼
方法一
構(gòu)造以下的用戶名:
username='aa' or username<>'aa'
pass='
相應(yīng)的在瀏覽器端的用戶名框內(nèi)寫入:aa' or username<>'aa,口令框內(nèi)寫入:aa' or pass<>'aa,注意這兩個字符串兩頭是沒有'的。這樣就可以成功的騙過系統(tǒng)而進(jìn)入。
注:必須具備兩個條件:
1. 首先要能夠準(zhǔn)確的知道系統(tǒng)在表中是用哪兩個字段存儲用戶名和口令的,只有這樣你才能準(zhǔn)確的構(gòu)造出這個進(jìn)攻性的字符串。
2.系統(tǒng)對你輸入的字符串不進(jìn)行有效性檢查。
方法二
只要根據(jù)sql構(gòu)造一個特殊的用戶名和密碼,如:ben' or '1'='1,程序?qū)兂蛇@樣: sql="select*from username where username="&ben'or'1'=1&"and pass="&pass&"。
注:or是一個邏輯運(yùn)算符,作用是在判斷兩個條件的時候,只要其中一個條件成立,那么等式將會成立.而在語言中,是以1來代表真的.那么在這行語句中,原語句的"and"驗(yàn)證將不再繼續(xù),而因?yàn)?quot;1=1"和"or"令語句返回為真值。
新聞熱點(diǎn)
疑難解答
圖片精選