曼德拉
读完需要
分钟
速读仅需 1 分钟
在测试站点的时候发现有个登录口,但是存在图片验证码,想爆破一下,于是像往常一下打开burp ,想使用xp_CAPTCHA 插件来识别验证码
1
测试过程
先把获取图片验证码的请求抠出来访问一下,f12调出控制台,选择验证码的请求包,右键,在新标签页中打开
发现打开直接就跳转到百度了
然后用控制台网络调试发现是POST的包
设置成POST请求可以正常访问到验证码数据
xp_CAPTCHA默认是使用GET去请求验证码接口的
自己动手解决问题的能力很重要,简单写了个中转,代码如下:
#coding:utf-8
from flask import Flask
import requests
app = Flask(__name__)
def get_captcha():
burp0_url = "https://xxx.com:443/api/007/captcha" // 请求验证码接口
burp0_headers = {"Sec-Ch-Ua": "" Not A;Brand";v="99", "Chromium";v="99", "Google Chrome";v="99"", "Accept": "application/json, text/plain, */*", "Sec-Ch-Ua-Mobile": "?0", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36", "Sec-Ch-Ua-Platform": ""Windows"","Sec-Fetch-Site": "cross-site", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Dest": "empty", "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,zh;q=0.9", "Connection": "close"}
requ = requests.post(burp0_url, headers=burp0_headers)
return requ.text
if __name__ == "__main__":
app.run(host='0.0.0.0', port=80, debug=False) // 监听本地80端口
运行脚本,然后在插件里面设置验证码的url为:http://127.0.0.1/
验证码编号 1 的关键字为: @xiapao_api@1@
我们把请求包的验证码内容替换为此关键字,随后插件会把识别后的结果填入到此标志位处。
设置好关键字发送请求,但是回显还是验证码字段值不正确,而且我们看到监听的80端口也没有任何请求过来
看下插件的控制台,发现提示:该数据包中没找到 cookie,需要有 cookie 的数据包才支持验证码识别!
那我们就给数据包随便加个cookie,再发包,这时候有请求过来了,但还是返回验证码字段值不正确
猜测可能还有这个key的参数需要从外部获取
一般情况下这个key是跟着验证码一起返回给我们的,我们这里也是这种情况
xp_CAPTCHA插件的高级功能支持从验证码返回包中获取内容填充到请求包中。
点击插件面板的高级设置,数据来源选验证码响应体,正则按照自己的需求写一下就行,然后点击开启
把正则匹配的关键字@xiapao_api@x@ 设置到数据包中的key处,再发包就可以看到回显登录密码不正确了
现在就可以愉快的爆破了
验证码识别插件项目地址:https://github.com/smxiazi/xp_CAPTCHA
感谢算命瞎子师傅的共享精神
原文始发于微信公众号(刨洞技术交流):验证码识别插件-xp_CAPTCHA的高级用法
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论