DVWA Brute Force 暴力破解通关教程
漏洞简介
Brute Force,说白了就是暴力破解。拿一堆账号密码挨个试,总有一个能蒙对的。虽然听着挺 low 的,但说实话很多系统还是会被这种方式攻破,尤其是那些密码设得简单的。
这关主要用 Burp Suite 来搞,算是入门必备工具了。
Low 级别
先看源码:
1 | $getid = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';"; |
好家伙,直接拼 SQL,连注入带爆破都能搞。
方法一:SQL 注入直接绕过
既然有注入,那还爆什么破,直接绕登录:
用户名填 admin'# 或者 admin' or '1'='1'#,密码随便填,直接进。

方法二:Burp Suite 暴力破解
想练手 Burp Suite 的话,还是走爆破路线。
第一步:抓包
打开 DVWA 的 Brute Force 页面,随便输个账号密码,点登录。Burp 会把请求拦下来,右键选 Send to Intruder。

第二步:设置攻击点
进 Intruder -> Positions,把预设的标记都清掉,然后选中用户名和密码这两个值,点 Add § 加标记:
1 | username=§admin§&password=§123456§&Login=Login |

第三步:配置字典
切到 Payloads 选项卡:
Payload set 1 填几个常见用户名:admin、administrator、root、test

Payload set 2 填密码,可以自己写几个常用的,也可以加载字典文件。

第四步:开跑
点 Start attack,等着就行。看 Length 这一列,响应长度不一样的那个就是成功了。

跑出来用户名 admin,密码 password。
Medium 级别
Medium 级别加了个 mysql_real_escape_string() 转义特殊字符,还有个 sleep(2) 延迟:
1 | $user = mysql_real_escape_string($user); |
注入是没法注入了,但爆破还是能爆,就是慢了点,每次都要等 2 秒。耐心点就行,反正又不是手工试。
High 级别
High 级别加了 CSRF Token,每次请求都要带上有效的 user_token:
1 | checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' ); |
这就麻烦了,普通的 Intruder 模式没法用,因为每次都要先获取新的 Token。
绕过方法
用 Burp 的 Pitchfork 模式配合 Recursive grep。
第一步:设置攻击类型
攻击类型选 Pitchfork,标记密码和 token:
1 | username=admin&password=§123456§&Login=Login&user_token=§token_here§ |

第二步:配置提取 Token
在 Options -> Grep - Extract 里添加规则,从响应里提取 user_token 的值。

第三步:设置重定向
把 Follow redirections 改成 Always。

第四步:配置 Payload
第一个 Payload 用密码字典。
第二个 Payload 类型选 Recursive grep,从上一个响应里提取 Token。

第五步:开跑
点开始,观察结果,找到对的密码。

Impossible 级别
Impossible 级别是真没法爆了:
1 | $total_failed_login = $row[ 'total_failed_login' ]; |
连续失败 3 次就锁 15 分钟,这就没法玩了。加上还有 CSRF Token、PDO 预处理、密码加密存储,这才是正确的安全姿势。
小结
暴力破解虽然听着土,但真挺有效的,尤其是那种密码设得简单还没防护的系统。做防护的话,记住几点:
- 限制登录次数,失败几次就锁定
- 加验证码
- 强制强密码
- 最好上个双因素认证