环境:
dvwa: 192.168.11.135 dvwa版本: Version 1.9 (Release date: 2015-09-19)
kail机器:192.168.11.156
1、Low级别
代码:
![](https://i-blog.csdnimg.cn/blog_migrate/fce8214e05981592278da12d1110d2f7.png)
1、启动 burpsuite 开始抓包,然后点击 login,然后在 bp 里面就能看见抓包到的包。这就是我们刚刚输入的账号密码:
![](https://i-blog.csdnimg.cn/blog_migrate/2e8786507d0b4df3685a664e8d577da0.png)
2、发送抓到的包到暴力破解bp的Intruder 模块
点击Positions,选择要要爆破的用户和密码,选择attack type为Cluster bomb
![](https://i-blog.csdnimg.cn/blog_migrate/a5ac6c6a9be30120471d9d80bda7a99d.png)
点击 payloads 添加字典,先添加第一个用户名字典,再切换成2,添加密码字典:
![](https://i-blog.csdnimg.cn/blog_migrate/14e5a1362d6b0eb1157fa968540f51cc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/01138379f594036bb5c4945860efcbe0.png)
3、然后点击 start attack 开始爆破
4、看回复的字节长度(其余都是5270,成功项长度5329)与响应内容,确定用户与密码分别是admin、password
![](https://i-blog.csdnimg.cn/blog_migrate/6f8688d443f640e5b2cf83dcc9355796.png)
2、Medium级别
代码:增加了mysql_real_escape_string函数对参数的过滤
![](https://i-blog.csdnimg.cn/blog_migrate/514e1c1681f36a883ec0f0ebe35b90f7.png)
用 burpsuite爆破:发现成功破解的字段长度是不同的,能确定用户与密码分别是admin、password。中级的暴力破解相对来说较慢是因为有个sleep函数,在破解失败后会使程序停止运行两秒。
![](https://i-blog.csdnimg.cn/blog_migrate/4ec1d4573633e2c1dfc5f7e64d7c9ffa.png)
3、High级别
代码:增加了token机制(CSRF)、stripslashes函数实现转义字符(返回一个去除转义反斜线后的字符串(\' 转换为 ' 等等)。双反斜线(\\)被转换为单个反斜线(\))、mysql_real_escape_string函数对参数的过滤
![](https://i-blog.csdnimg.cn/blog_migrate/6a8f46d7fe16c4911de600d22b631b29.png)
1、抓包,发送到Intruder模块:选择attack type为Pitchfork(因为每次token不同,不能用cluster bomb模式),定义变量 username、password 和 token
![](https://i-blog.csdnimg.cn/blog_migrate/6fdc16403559d6876bd68d7794e616d7.png)
2、选择options将线程数设置为1
因为需要顺序发送请求,才能以此获取token,所以设置单线程:
![](https://i-blog.csdnimg.cn/blog_migrate/71dc6d7c3ed3a6115069759b685f4d4e.png)
否则攻击报错:
![](https://i-blog.csdnimg.cn/blog_migrate/8236b97f2226ad86c66f4ac1e73ef3aa.png)
3、设置payload
参数 username、password的payload正常通过load加载,Payload type设置为Simple list,切记:attack type为Pitchfork时,用户名要和密码对应(位置相同,此处都是第三个)
![](https://i-blog.csdnimg.cn/blog_migrate/132882167580b3ee6b162dc7bd2b9048.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f1aa918b5854acf9a38c877c745c2297.png)
找到Grep-Extract模块进行相应设置:
![](https://i-blog.csdnimg.cn/blog_migrate/fb70e68f933489a4ec1f886b0c8c81bf.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ccc0cd524cd120d067e1a392ff0790c6.png)
复制token对应的value值(77b869ce00b774e3dfd701fe1d969897),这个值后面会用到:
![](https://i-blog.csdnimg.cn/blog_migrate/a06876883cae4aba0b8cf22a65974c54.png)
intruder会自动为我们编写,提取这个位置的值的正则表达式:
![](https://i-blog.csdnimg.cn/blog_migrate/303290868b9712743142c9cc214f12dc.png)
找到Redirections模块设置允许重定向,选择always:
![](https://i-blog.csdnimg.cn/blog_migrate/3e248b1833806f03b273687bdd64e639.png)
参数token设置payload:因为每次爆破的token,需要从上一次的回应中提取,所以payload type选择Recursive grep(表示将服务器每次返回的数据来替换payload中的变量,这里用来每次替换user_token的值),然后将刚才复制token的值粘贴进去:
![](https://i-blog.csdnimg.cn/blog_migrate/7805d8d6d4c2ccebd409eaede1cf4fae.png)
这样intruder会自动利用正则表达式,从上一次的请求中帮我们提取token的值。
4、攻击:对比返回长度大小与回应数据,找到用户名与密码
![](https://i-blog.csdnimg.cn/blog_migrate/80e54423e72d9c97502aee6ae642446c.png)