基于百度OCR-文字识别的验证码暴力破解
0x01 前言
在之前的学习中,我们学习过暴力破解的方法,比如暴力破解蓝奏云的密码.理论上讲,只要字典足够,和方法正确.暴力破解总能出现我们想要的效果.但是在真实的环境中,我们在进行密码猜解的时候,总会遇到一些验证码的阻拦.比如下方这种情景
当字典准备充足的情况下,如何正确的自动化的识别验证码,是我们要思考的问题.
0x02 正文
1.准备条件
BurpSuite插件captcha-killer:https://github.com/c0ny1/captcha-killer/releases/tag/0.1.2
演示爆破网站
百度云OCR平台账户
2.插件导入
在BurpSuite的Extender模块中,点击Add,将下载的captcha-killer.jar文件导入
此时可以看到BurpSuite的栏目里多了一块选择:Captcha-Killer,插件导入成功。
3.验证码抓取
在测试页面随意输入账户名和密码及验证码,使用BurpSuite,进行抓包,抓取页面如下:
将抓到的数据包发送到Intruder模块,一会儿进行重放爆破.
然后点击forward,寻找获取验证码的数据包,找到一个数据包,其中包含captcha,怀疑是获取验证码的数据包
右击找到captcha-killer,发送到captcha-panel,点击获取,成功找到验证码,验证码抓取成功.
4.百度OCR识别
在Request Template中右击选择模版库,找到百度OCR,我们通过使用captcha-killer自带的模块进行识别,但是调用百度OCR识别需要Access_token,将我们在百度OCR中获得的access_token修改进数据包中去,即可自动识别验证码.
4.1领取免费资源
进入百度OCR:https://console.bce.baidu.com/ai/#/ai/ocr/overview/index[1],首先领取免费的资源,这样可以帮助我们识别一些文字类型的验证码,也可以按量计费购买一些流量
4.2 创建应用
领取完免费资源或者购买了一些服务后点击创建应用,选择应用归属为个人,创建成功后出现如下列表,可以看到创建的应用被分配了API KEY和Secret Key
通过API KEY 和 Secret Key我们需要获取到调用此应用的Access Token
4.3 Token 获取
根据开发文档,我们构造如下语句
curl -i -k 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[你的API KEY]&client_secret=[你的Secret Key]'
将API KEY 和Secret KEY代换进去(注意没有中括号),在Linux命令行中执行,成功返回来了就json数据,找到Access token
4.4 验证码识别
将Access_token复制进captcha-killer,点击识别,成功识别到验证码
4.5 识别验证码的暴力破解
在识别成功后,将识别到的结果选中,右击中标记为识别结果
回到Intruder模块,我们本次试验选择用户名不变,猜解密码的模式,于是设置Intruder模块中的两个变量作为参数,一个是密码,另一个是验证码.选择PitchFork模块
将password中的内容导入字典
而将captcha中内容选择为Extension-generated,通过captcha-killer生成.
由于百度OCR的特点,爆破速度不能太快,所以我们选择以更慢的速度来进行暴力破解
点击Start Attack,成功进行暴力破解,绕过验证码成功!
0x03 总结
在渗透测试的过程中,登录框中遇到验证码是很常见的一件事情,所以大家一定要掌握验证码识别这个技巧,有时候百度OCR可能识别精度不高,也欢迎大家尝试别的OCR平台的方法,可以一起交流!
