实战案例 | 绕过计算型验证码
字数 1588 2025-08-19 12:41:46
绕过计算型验证码实战教学文档
1. 场景介绍
本教学案例针对一个已授权的违法网站后台页面,演示如何通过HTTP模糊测试工具和第三方API调用绕过加法型验证码识别,从而进行后台弱口令爆破测试。
2. 工具准备
- TangGo测试平台(HTTP模糊测试工具)
- HTTP抓包测试工具(内置浏览器功能)
- 第三方验证码识别API服务
3. 测试流程详解
3.1 数据抓取阶段
- 访问目标网站:打开HTTP抓包测试工具的内置浏览器,访问目标网站登录页面
- 拦截验证码请求:
- 开启拦截开关
- 刷新验证码图片
- 捕获验证码请求数据包
- 保存验证码请求:
- 将验证码请求发送到"重放模块"
- 命名为"验证码请求数据包"备用
3.2 验证码识别方案
由于社区版模糊测试工具无法直接识别计算型验证码,采用第三方API方案:
- 选择API类型:使用Web API(基于HTTP/HTTPS)
- API配置要求:
- username:注册账号
- password:账号密码
- typeid:数字选择对应模式
- image:base64编码后的图片
3.3 登录数据包抓取
- 关闭拦截开关放行验证码请求
- 重新开启拦截
- 在浏览器填写任意用户名(如admin)、密码和验证码
- 点击登录捕获登录数据包
4. 模糊测试参数设置
4.1 基本参数标记
- 将登录数据发送到HTTP模糊测试工具
- 标记爆破参数:
- 账号"admin"
- 密码"123456"
4.2 变体参数设置
- 选择爆破模式:多字典交叉爆破模式
- 导入字典:
- 为变体1和变体2分别导入账号和密码字典
- 可清除错误数据重新导入
5. 自定义流程实现验证码绕过
5.1 发包前流程设置
步骤1:获取验证码图片
- 新建"发送HTTP请求"流程
- 复制"验证码请求数据包"内容到请求数据块
- 启用HTTPS开关(如为HTTPS请求)
- 绑定结果变量为"YZM_Respons"(全局变量)
步骤2:图片编码处理
- 新建"对数据进行处理"流程
- 操作变量:"YZM_Respons"
- 对象属性:"HTTP响应Body"
- 结果绑定变量:"PNG_base64"
- 添加处理规则:
- BASE64编码
- URL编码(防止base64中的+号被当作空格)
步骤3:调用API识别验证码
- 新建"发送HTTP请求"流程
- 填入API接口请求包
- "image"字段填入"PNG_base64"变量
- 绑定结果变量为"YZM"
- 使用正则表达式提取识别结果:
- 根据API返回格式提取"result"内容
- 选择匹配的正则表达式(案例中使用倒数第五个)
- 测试确认匹配数据正确
5.2 请求包参数设置
- 在登录请求包的"captch"字段插入"YZM"变量
- 完成所有参数设置
6. 测试执行与验证
- 启动测试,观察数据包交互
- 查看自定义流程执行顺序:
- 执行1:提取验证码(如"29+8")
- 执行2:数据编码处理
- 执行3:API调用和结果提取(如"37")
- 确认验证码被成功计算和填充
7. 关键注意事项
- 编码处理顺序:必须先BASE64编码,再进行URL编码
- HTTPS开关:确保与实际情况一致
- 正则表达式选择:需根据API返回格式精确匹配
- 变量作用域:确保关键变量设置为全局变量
- 测试环境:仅限已授权网站测试
8. 技术要点总结
- 通过拦截和重放技术捕获验证码请求
- 利用第三方API服务解决特殊验证码识别问题
- 采用多阶段自定义流程实现复杂验证码绕过
- 数据编码转换确保API接口兼容性
- 正则表达式精确提取关键数据
9. 流程图概要
- 捕获验证码请求 → 获取验证码图片
- 图片BASE64+URL编码 → 准备API输入
- 调用API接口 → 获取计算结果
- 自动填充验证码 → 执行爆破测试
本方案成功实现了对计算型验证码的自动化绕过,为授权安全测试提供了有效方法。实际应用中需根据具体API接口和验证码形式调整处理流程。