haibo3434358/scareaisec/captcha-bypass

Claude Code and agent skill by haibo3434358/scareaisec

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

验证码/短信验证码/邮件验证码/滑块/人机验证绕过方法论。当登录、注册、找回密码、短信发送、邮箱验证、支付确认、MFA、评论提交等流程出现 captcha/code/otp/sms/email verify/geetest/TCaptcha 时使用。覆盖验证码重放、泄露、万能码、空值绕过、接收者未绑定、限频绕过、短信轰炸和时间窗口问题。

Install

npx vskill@latest install haibo3434358/scareaisec/captcha-bypass

SKILL.md

验证码绕过方法论

🤖 Agent 工具映射

场景优先使用的 Agent 工具
捕获登录、注册、找回密码、MFA、支付确认、短信/邮件发送等验证码流程browser_* + proxy_get_traffic
删除验证码字段、传空字符串、null、万能码,验证服务端是否强制校验proxy_replay / proxy_send_request
重放已成功使用的验证码、短信码、邮件码或滑块 token,验证是否一次性失效proxy_replay
用 A 手机/邮箱收到的验证码验证 B 手机/邮箱或 B 账号,检查接收者绑定proxy_send_request / proxy_diff_responses
少量重复调用发送接口,测试同号限频、IP/session 限频和手机号格式变形绕过proxy_send_request / proxy_batch_send
检查响应 body/header/Cookie/JS/localStorage 是否泄露验证码或验证 tokenproxy_get_flow_detail + browser_evaluate + browser_get_cookies
对比正确码、错误码、空值、复用、跨账号、流程跳步的业务结果proxy_diff_responses
固化绕过、复用、泄露、未绑定、限频缺失或短信轰炸证据checklist_mark + note_add

执行要点:验证码安全要验证“绑定、一次性、限频、服务端校验、泄露”五件事;短信轰炸只做少量验证,不能进行真实大规模发送。


0. 立即执行摘要:验证码要验证“绑定、一次性、限频、服务端校验”

看到登录、注册、找回密码、短信/邮件发送、MFA、支付确认、敏感操作确认中的 captcha、code、otp、verify_code、sms、email_code、滑块 token 时,必须进入本 skill。验证码安全不是“有没有验证码”,而是 是否服务端校验、是否绑定账号/手机号/session/场景、是否一次性、是否限频、是否泄露。

优先顺序:

  1. 删除验证码、空值、null、万能码,确认服务端是否强制校验。
  2. 成功使用后的验证码再次提交,确认是否一次性失效。
  3. A 手机/邮箱收到的验证码能否验证 B 手机/邮箱或 B 账号。
  4. 发送接口是否限频,手机号格式变形是否绕过限频。
  5. 响应、Cookie、JS、localStorage 是否泄露验证码或验证 token。

1. 数据包特征触发矩阵

特征漏洞假设立即测试
code/otp/captcha空值/万能码绕过删除、空、null、0000、123456
发送验证码接口短信轰炸/限频绕过同号少量重复、格式变形、IP/session 对照
验证接口含手机号/邮箱接收者未绑定A 收码验证 B 账号/手机号
响应返回 code/token验证码泄露检查 body/header/cookie/localStorage
滑块/三方验证 tokentoken 重放复用 token、跨 session、过期时间
MFA/支付确认验证码流程跳步未验证直接调业务 API

Phase 1: 识别验证码类型

验证码类型:
├─ 图形验证码(CAPTCHA 图片)
├─ 短信验证码(4-6 位数字)
├─ 邮件验证码
├─ 滑动/拼图验证(极验 geetest、腾讯 TCaptcha)
├─ 点击验证(点选文字/图标)
└─ 计算题验证(1+2=?)

Phase 2: 通用绕过手法

2.1 验证码重放(最常见!)
1. 正常获取验证码,填写正确提交(抓包)
2. 重放同一请求 → 如果仍然成功 → 验证码可重用
3. 说明服务端没有在验证后使验证码失效
→ 可用同一验证码无限次提交(配合爆破密码等)
2.2 响应中泄露验证码
检查以下位置:
1. 发送验证码的接口响应 body — 直接返回验证码明文
2. 响应 header — 偶尔在 X-Verify-Code 等自定义头中
3. Cookie — 验证码 MD5/Base64 编码存在 Cookie 中
4. 前端 JS — 验证码生成逻辑在前端
→ proxy_get_flow_detail 查看完整响应
→ browser_evaluate 检查页面变量和 Cookie
2.3 空值/万能验证码
尝试以下值:
- 空字符串: ""
- null: null
- 删除验证码参数(整个字段不传)
- 常见万能码: 0000, 1234, 6666, 8888, 9999
- -1, 000000
→ proxy_replay 逐个尝试
2.4 前端校验绕过
如果验证码只在前端校验:
1. 直接改包删除验证码字段 → proxy_replay
2. 或随便填一个值,看服务端是否再次校验
3. browser_evaluate 检查是否有前端 JS 校验逻辑
2.5 修改接收者
短信/邮件验证码场景:
1. 发送验证码到自己手机 A
2. 改包修改验证接口的手机号为目标手机 B
3. 用发到 A 的验证码去验证 B → 验证码与手机号未绑定

Phase 3: 短信验证码专项

爆破 4-6 位数字
4 位数字: 0000-9999(10000 种)
6 位数字: 000000-999999(100 万种,通常不可行)
判断是否可爆破:
1. 验证码有效期多长?(通常 5-15 分钟)
2. 有无频率限制?(连续错误 N 次后锁定)
3. 有无 IP 限制?
如果 4 位 + 无限制 → 直接爆破
如果有频率限制 → 尝试 proxy_batch_send 并发绕过
短信轰炸
发送验证码接口无频率限制:
1. 连续调用发送接口 → 目标手机收到大量短信
2. 改手机号遍历 → 批量轰炸
测试方法:
- 同一手机号连续请求 5 次发送接口
- 如果都返回成功 → 存在短信轰炸
- 注意:只需证明无频率限制即可,不要真的大量发送
验证码时间窗口
1. 请求发送新验证码
2. 用旧验证码提交 → 如果仍有效 → 旧码未失效
3. 说明可以无限获取新码同时旧码仍可用

Phase 4: 图形验证码专项

1. 不带验证码参数直接提交 → 服务端是否强制校验
2. 同一验证码重复提交多次 → 是否一次性
3. 验证码图片 URL 是否包含答案(如 /captcha?text=A3Bx)
4. 验证码图片是否有规律(固定几张轮换)
5. OCR 识别简单验证码(Agent 无此能力,记录为建议)

Phase 5: 滑动/智能验证码

这类验证码通常较难绕过,但可以尝试:
1. 抓包分析验证参数,是否有固定值可重放
2. 验证结果 token 是否过期(获取后多久失效)
3. 验证是否绑定 session(换 session 是否需重新验证)
4. 删除验证相关参数,看业务接口是否仍可调用

验证与记录

验证码绕过需要证明:
1. 可以在不正确输入验证码的情况下完成操作
2. 或验证码可被重用/预测
3. 截图完整的绕过过程
4. vuln_verify + note_add(type="result")

结果判定与误报排除

  • confirmed_vuln:无需正确验证码即可完成受保护动作,或验证码可重放/泄露/跨账号使用/无限发送造成实际绕过。
  • suspected_vuln:存在响应差异、限频弱、token 可复用迹象,但缺少最终业务动作成功证据。
  • needs_review:缺少接收短信/邮件条件、三方验证码环境或测试账号。
  • not_vuln:完成空值、复用、绑定、泄露、限频、格式变形、流程跳步检查后无异常。

误报排除:

  • 发送接口返回成功不代表短信真的发送,需要结合实际接收或服务端计数。
  • 前端提示验证码错误不够,要看业务接口是否仍执行。
  • 图形验证码 OCR 难不代表安全,服务端绑定和一次性仍必须测。

⛔ 「最低必测自检」— 标 not_vuln/skipped 前必答(验证码绕过/短信轰炸)

#必测项跳过的合法理由
1空值绕过:把 captcha/code 字段去掉、传空字符串、传 null,看是否仍能继续接口无验证码字段
2复用绕过:用过的验证码再次提交,看是否仍接受(一次性验证码失效检查)-
3OCR 识别:图形验证码用 OCR 自动识别(如简单数字/英文)是滑块/三方验证
4客户端绕过:检查响应 JS 是否泄露验证码(变量、cookie、localStorage)-
5短信轰炸:连发同一手机号 10 次,看后端是否限频(应该只发 1-2 次后限制)接口非短信发送
6手机号枚举:发送验证码接口,输入存在的手机号 vs 不存在的,响应是否不同-
7限频参数篡改:在 phone/mobile 字段中加空格、+86 前缀、unicode 不可见字符,看是否绕过限频(同一号码不同表达式)-

输出格式

text
[验证码检查]
入口/流程:登录/注册/找回密码/MFA/支付/短信发送/邮箱验证/其他
验证码类型:图形/短信/邮件/滑块/三方token/未知
测试动作:空值/万能码/复用/接收者绑定/限频/泄露/流程跳步/token重放
业务结果:成功/失败/响应差异/未知
结论:confirmed_vuln | suspected_vuln | needs_review | not_vuln
安全边界:仅测试账号/少量发送/禁止轰炸/其他

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
61
Repository forks
31
7-day trend score
0

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/haibo3434358/scareaisec/captcha-bypass/badge)](https://verified-skill.com/skills/haibo3434358/scareaisec/captcha-bypass)

Something wrong with this skill or its page? Tell us.