记一次实战绕过计算型验证码
字数 1450 2025-08-19 12:41:46

绕过计算型验证码实战教学文档

1. 场景介绍

目标网站:某已授权的违法网站后台登录页面
验证码类型:加法计算型验证码(如"29+8")
攻击目的:绕过验证码进行弱口令爆破

2. 工具准备

  • HTTP抓包测试工具(如Burp Suite、TangGo测试平台)
  • 第三方验证码识别API服务
  • 弱口令字典

3. 攻击流程详解

3.1 数据抓取阶段

  1. 拦截验证码请求

    • 打开HTTP抓包工具的拦截功能
    • 在浏览器中刷新验证码图片
    • 捕获验证码请求数据包(GET/POST请求)
    • 将数据包发送到重放模块保存
  2. 拦截登录请求

    • 填写任意用户名(如admin)、密码和验证码
    • 点击登录按钮
    • 捕获登录请求数据包

3.2 验证码识别方案

由于社区版工具无法直接识别计算型验证码,采用第三方API方案:

  1. API接口选择

    • 使用支持计算型验证码识别的Web API
    • 需要注册账号获取username和password
    • 选择正确的typeid(计算型验证码对应的模式)
  2. 图片处理要求

    • 验证码图片需要转换为base64编码
    • 对base64编码结果再进行URL编码(防止+号被当作空格)

3.3 模糊测试配置

  1. 参数标记

    • 在登录数据包中标记用户名和密码字段
    • 准备弱口令字典(可交叉爆破)
  2. 自定义流程设置(关键步骤):

步骤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"
  1. 登录请求配置
  • 在登录请求的验证码字段(captch)中插入"YZM"变量
  • 设置多字典交叉爆破模式

3.4 测试执行

  1. 启动测试,观察流程执行顺序:

    • 先获取验证码图片(如"29+8")
    • 然后进行编码转换
    • 最后调用API获取计算结果(如"37")
  2. 验证流程正确性:

    • 检查每一步的输入输出是否符合预期
    • 确认最终提交的验证码值正确

4. 关键技术点

  1. 验证码请求重放

    • 保持原始请求头完整性
    • 注意HTTPS/HTTP协议选择
  2. 图片编码处理

    • Base64编码是必须的
    • URL编码解决base64中+号的问题
    • 双重编码顺序不能错
  3. API响应解析

    • 正确选择正则表达式提取结果
    • 测试正则匹配准确性
  4. 变量传递

    • 确保变量作用域正确
    • 变量名前后一致

5. 防御建议

  1. 对验证码系统:

    • 增加时间戳或一次性token
    • 限制验证码请求频率
    • 使用更复杂的验证码类型(如行为验证)
  2. 对登录系统:

    • 增加登录失败锁定机制
    • 使用多因素认证
    • 监控异常登录尝试

6. 注意事项

  1. 法律合规:

    • 仅用于已授权测试
    • 不得用于非法用途
  2. 工具限制:

    • 不同API接口可能有不同要求
    • 验证码识别准确率影响成功率
  3. 环境准备:

    • 确保网络能访问第三方API
    • 准备充足的测试账号(防止API限制)

本教学文档详细介绍了绕过计算型验证码的完整流程,重点突出了数据抓取、API集成和自定义流程配置等关键环节,可作为授权渗透测试中的参考方案。

绕过计算型验证码实战教学文档 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集成和自定义流程配置等关键环节,可作为授权渗透测试中的参考方案。