这不315晚会burp都上了嘛,蹭蹭时事热点。
最近遇到了很多验证码登录口,验证码识别项目github上找了几个,但是不是装不上就是准确率不高的问题,后续也是慢慢修改出来了还算满意的识别验证码插件。
原插件项目地址为:
https://github.com/c0ny1/captcha-killer
修改后的项目地址为:
https://github.com/f0ng/captcha-killer-modified
已征得原作者同意进行二开
直接下载原项目的jar包,按照项目说明进行使用,发现intruder无法进行爆破,有些情况也满足不了需求,后面优化了一下,总共修改了两处地方
发现使用过程中出现了报错
后面查了一下,原因是sun.misc.BASE64Encoder
类不在jdk8+支持了,因为都在用新版burp了,而新版burp启动需要高版本的jdk,这里我是jdk10启动的burp,所以没有sun.misc.BASE64Encoder
类
下载源码,修改java.utils.Util里的源码如下:
// FileName: Util.java
public static String base64Encode(byte[] byteArray){
byte[] res = Base64.getEncoder().encode(byteArray);
String res2 = new String(res);
res2 = res2.replace(System.lineSeparator(),"");
return res2;
}
public static String base64Encode(String str){
byte[] b = new byte[]{};
try {
b = str.getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
byte[] res = Base64.getEncoder().encode(b);
String res2 = new String(res);
//去除base64结果中的换行符,java base64编码默认会76个字母换行一次
res2 = res2.replace(System.lineSeparator(),"");
return res2;
}
public static byte[] base64Decode(String str){
byte[] byteRes = new byte[]{};
byteRes = Base64.getDecoder().decode(str);
return byteRes;
}
再导入依赖
import java.util.Base64;
这里还有个不是很完美的地方,只能识别响应包为图片的验证码,但是遇到的真实环境中,也有一种data:image
这种格式的验证码,这个插件就无法识别了,如下:
安装好ocr库以后直接运行代码:
# -*- coding:utf-8 -*-
# author:f0ngf0ng
import argparse
import ddddocr # 导入 ddddocr
from aiohttp import web
parser = argparse.ArgumentParser()
parser.add_argument("-p", help="http port",default="8888")
args = parser.parse_args()
ocr = ddddocr.DdddOcr()
port = args.p
async def handle_cb(request):
return web.Response(text=ocr.classification(img_base64=await request.text()))
app = web.Application()
app.add_routes([
web.post('/reg', handle_cb),
])
if __name__ == '__main__':
web.run_app(app, port=port)
$ python3 codereg.py
运行代码界面
识别模板如下:
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>
记得设置接口地址为:http://127.0.0.1:8888
即可识别出来验证码,准确率还不错,在85%以上,重要的是免费,无限使用
关于captcha-killer的用法可以参考c0ny1师傅的文章
注:
https://github.com/c0ny1/captcha-killer [插件源项目]
https://gv7.me/articles/2019/burp-captcha-killer-usage/ [插件用法]
https://github.com/sml2h3/ddddocr [验证码识别项目]
https://github.com/PoJun-Lab/blaster [验证码登录爆破]
https://github.com/f0ng/captcha-killer-modified [修改后的burp验证码识别插件]