记一次实战绕过计算型验证码
字数 1450 2025-08-19 12:41:46
绕过计算型验证码实战教学文档
1. 场景介绍
目标网站:某已授权的违法网站后台登录页面
验证码类型:加法计算型验证码(如"29+8")
攻击目的:绕过验证码进行弱口令爆破
2. 工具准备
- HTTP抓包测试工具(如Burp Suite、TangGo测试平台)
- 第三方验证码识别API服务
- 弱口令字典
3. 攻击流程详解
3.1 数据抓取阶段
-
拦截验证码请求:
- 打开HTTP抓包工具的拦截功能
- 在浏览器中刷新验证码图片
- 捕获验证码请求数据包(GET/POST请求)
- 将数据包发送到重放模块保存
-
拦截登录请求:
- 填写任意用户名(如admin)、密码和验证码
- 点击登录按钮
- 捕获登录请求数据包
3.2 验证码识别方案
由于社区版工具无法直接识别计算型验证码,采用第三方API方案:
-
API接口选择:
- 使用支持计算型验证码识别的Web API
- 需要注册账号获取username和password
- 选择正确的typeid(计算型验证码对应的模式)
-
图片处理要求:
- 验证码图片需要转换为base64编码
- 对base64编码结果再进行URL编码(防止+号被当作空格)
3.3 模糊测试配置
-
参数标记:
- 在登录数据包中标记用户名和密码字段
- 准备弱口令字典(可交叉爆破)
-
自定义流程设置(关键步骤):
步骤1:获取验证码图片
- 发送之前保存的验证码请求数据包
- 绑定响应结果为变量"YZM_Respons"
- 确保HTTPS开关开启(如果是HTTPS请求)
步骤2:图片编码处理
- 对"YZM_Respons"的HTTP响应Body进行处理
- 先进行BASE64编码
- 再进行URL编码
- 绑定结果为变量"PNG_base64"
步骤3:调用API识别验证码
- 构造API请求包,包含:
- username:API账号
- password:API密码
- typeid:验证码类型ID
- image:填入"PNG_base64"变量
- 使用正则表达式从API响应中提取识别结果
- 示例正则:提取"result"字段内容
- 绑定结果为变量"YZM"
- 登录请求配置:
- 在登录请求的验证码字段(captch)中插入"YZM"变量
- 设置多字典交叉爆破模式
3.4 测试执行
-
启动测试,观察流程执行顺序:
- 先获取验证码图片(如"29+8")
- 然后进行编码转换
- 最后调用API获取计算结果(如"37")
-
验证流程正确性:
- 检查每一步的输入输出是否符合预期
- 确认最终提交的验证码值正确
4. 关键技术点
-
验证码请求重放:
- 保持原始请求头完整性
- 注意HTTPS/HTTP协议选择
-
图片编码处理:
- Base64编码是必须的
- URL编码解决base64中+号的问题
- 双重编码顺序不能错
-
API响应解析:
- 正确选择正则表达式提取结果
- 测试正则匹配准确性
-
变量传递:
- 确保变量作用域正确
- 变量名前后一致
5. 防御建议
-
对验证码系统:
- 增加时间戳或一次性token
- 限制验证码请求频率
- 使用更复杂的验证码类型(如行为验证)
-
对登录系统:
- 增加登录失败锁定机制
- 使用多因素认证
- 监控异常登录尝试
6. 注意事项
-
法律合规:
- 仅用于已授权测试
- 不得用于非法用途
-
工具限制:
- 不同API接口可能有不同要求
- 验证码识别准确率影响成功率
-
环境准备:
- 确保网络能访问第三方API
- 准备充足的测试账号(防止API限制)
本教学文档详细介绍了绕过计算型验证码的完整流程,重点突出了数据抓取、API集成和自定义流程配置等关键环节,可作为授权渗透测试中的参考方案。