Brupsuite插件--验证码自动爆破
今天在测试时遇到一个网站需要进入后台,但是在登陆处设置了验证码,正好之前看到个文章有一款brup插件可以识别验证码并进行爆破,所以安装学习了一下。
安装
项目地址:https://github.com/f0ng/captcha-killer-modified
将项目下载,如图依次选择好安装好我们的插件
出现如下图片则证明安装完成。
此时我们如果想不加载该插件仅需将其前面的对勾删除即可。而同时,我们在brup的菜单栏中可以看到多了一个captcha-killer-modified一栏,这个就是我们的工具栏。
使用
需要注意的是,该插件仅仅能帮我们将图片发送给图片识别的接口,并从接口中获取接口识别的图片的内容,并不能直接帮我们识别图片中的内容。这就需要我们去一个验证码识别的API接口。好的验证码识别接口有很多,比如百度的等等,但是本着不花钱的原则,在github上找到这样一个图片识别的项目可以免费来帮助我们识别验证码。
项目地址:https://github.com/sml2h3/ddddocr
该项目安装十分简单
我们使用pip即可完成安装
pip install ddddocr
pip install aiohttp此时我们验证码识别的接口已经安装完成。但是因为他是以python库的形式存在,我们没有办法直接使用,所以我们还要编写一个调用他的代码。
# -*- coding:utf-8 -*-
# author:f0ngf0ngimport argparse
import ddddocr # 导入 ddddocr
from aiohttp import webparser = argparse.ArgumentParser()
parser.add_argument("-p", help="http port",default="8888")
args = parser.parse_args()ocr = ddddocr.DdddOcr()
port = args.pasync def handle_cb(request):
# 如果下面的报错可以试试上面这个
# return web.Response(text=ocr.classification(img_base64=await request.text()))
return web.Response(text=ocr.classification(await request.text()))app = web.Application()
app.add_routes([
web.post('/reg', handle_cb),
])if __name__ == '__main__':
web.run_app(app, port=port)代码运行界面如下
我们可以看到,其在我们本机的8888端口开了一个web服务,我们通过将图片以相应的请求包的形式发送过去,即可获取识别到的我们图片中的内容信息。
然后我们回到brup,将如下内容粘贴到插件中。当然,如果你不是在本机开的接口,那么需要你修改对应的服务器ip和端口。
POST /reg HTTP/1.1
Host: 127.0.0.1:8888
Connection: close
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Sec-Fetch-Site: none
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Content-Type: application/x-www-form-urlencoded
Content-Length: 55<@BASE64><@IMG_RAW></@IMG_RAW></@BASE64>
此时我们找一个验证码的图片,这里建议我们可以直接点击验证码,来将其刷新,这时使用brup抓包便可以很轻松的抓到验证码图片的包了。并且安装如下操作将发送给我们的插件。
然后我们回到插件中,点击获取,可以在右边的验证码中看到我们刚刚获取到的图片。
我们输入好接口URL,点击识别即可看到我们的验证码成功被识别出来。因为我们的接口返回包比较简单,所以不需要进行匹配,如果返回包比较复杂的话,还可以在匹配规则处编写正则表达式进行匹配。
好了,如果如上测试都没问题了,那么我们便可以正式开始我们的爆破了。
如下依次选择我们的插件。
此时我们点击爆破就可以开始了,不过这里建议我们将线程调小一些。经过测试,这个验证码识别的准确率还是比较高的,主要问题还是出在容易将1、7、I混淆,数字0,字母O混淆。此时我们便可以在我们的插件中看到验证码不断被识别了。
星球的最近主题和星球内部工具一些展示
欢迎加入星球!
关 注 有 礼
还在等什么?赶紧点击下方名片关注学习吧!
推荐阅读