DVWA-Brute Force(暴力破解)
本系列文集:DVWA學習筆記
Low:

1.png
分析:
isset函式
在php中用來檢測變數是否設定(該函式返回的是布林型別的值,即true/false)
可以看到,伺服器只是驗證了引數Login是否被設定,沒有任何的防爆破機制,且對引數username、password沒有做任何過濾,存在明顯的sql注入漏洞。
方法一利用burpsuite爆破
1.抓包

2.png
2.傳送到intruder模組,進行爆破密碼

3.png
3.根據在爆破結果中找到正確的密碼,可以看到password的響應包長度(length)“與眾不同”,可推測password為正確密碼,手工驗證登陸成功。

4.png
方法二手工sql注入
-
Username:admin’ or ’1′=’1
Password:(空)
-
Username :admin’ #
Password :(空)

5.png
Medium:

6.png
分析:
Medium級別的程式碼主要增加了 mysql_real_escape_string函式
,這個函式會對字串中的特殊符號(x00,n,r,,’,”,x1a)進行轉義,基本上能夠抵禦sql注入攻擊,同時$pass做了MD5校驗,杜絕了通過引數password進行sql注入的可能性。但是,依然沒有加入有效的防爆破機制.
方法:
雖然sql注入不再有效,但依然可以使用Burpsuite進行爆破,與Low級別的爆破方法基本一樣。
High:

7.png
分析:
High級別的程式碼加入了checkToken,可以抵禦CSRF攻擊,同時也增加了爆破的難度,通過抓包,可以看到,登入驗證時提交了四個引數:username、password、Login以及user_token。

8.png
每次伺服器返回的登陸頁面中都會包含一個隨機的user_token的值,使用者每次登入時都要將user_token一起提交。伺服器收到請求後,會優先做token的檢查,再進行sql查詢。同時,High級別的程式碼中,使用了stripslashes(去除字串中的反斜線字元,如果有兩個連續的反斜線,則只去掉一個)、 mysql_real_escape_string對引數username、password進行過濾、轉義,進一步抵禦sql注入。