【Pikachu 靶场精讲】验证码绕过(on server)

兄弟们,我想请讲解下,【Pikachu 靶场精讲】验证码绕过(on server)
最新回答
看不见的坚强

2026-06-07 20:15:35

【Pikachu 靶场精讲】验证码绕过(on server)

验证码生成原理:

  • 核心要点:验证码在服务端生成,点击验证码刷新按钮会向服务器请求新的验证码图片。

在Pikachu靶场中,我们可以通过以下步骤来分析并绕过服务端的验证码:

  1. 验证码请求逻辑:

    点击验证码刷新按钮,浏览器会向/inc/showvcode.php路径请求验证码。

    每次刷新都会生成一个新的验证码图片,并显示在网页上。

    无论是登录成功还是失败,都会请求新的验证码。

  2. 最优解法——验证码复用漏洞:

    发现漏洞:通过抓包工具(如Burp Suite)对登录页面进行抓包,填写正确的验证码后,将请求包发送到重放器(Ctrl+R)多次发送。若HTTP响应码始终返回200,且验证码未失效,则可判断存在验证码复用漏洞。

    利用漏洞:将存在复用漏洞的验证码保持不变,将用户名和密码区域作为Payload,使用Intruder模块进行爆破。

  3. 通用解法——OCR识别验证码:

    工具选择:使用ddddocr或captcha-killer-modified等工具进行验证码识别。

    环境配置:

    下载captcha-killer-modified.jar包并导入Burp Suite(需JDK 8环境)。

    安装Python pip库,并安装Pillow、aiohttp、argparse等依赖。

    搭建验证码识别服务ddddocr(Python版本不能高于3.11)。

    运行codereg.py脚本,成功配置后出现======== Running on

    http://0.0.0.0:8888
    ========。

    Pikachu靶场实践:

    打开Burp Suite开始抓包,将用户登录页面的数据包发送到captcha-killer-modified插件。

    将POST请求的URL地址改为验证码的请求路径/inc/showvcode.php,以便正确请求到验证码图片。

    配置接口URL为

    http://127.0.0.1:8888
    ,点击识别,检查环境和功能是否正常。

    根据实际情况调整验证码识别位数(如Pikachu靶场默认为6位)。

    将数据包发送到Intruder模块进行爆破,使用Pitchfork(交叉)功能,并设置Payload-3为Extension-generated Payload类型,使用captcha-killer-modified作为生成器。

    设置资源池中最大并发数为1,请求间隔建议设定为1000毫秒。

    确保Intruder模块和captcha-killer-modified中的Cookie保持一致。

    进行攻击,查看结果。

总结:

  • 验证码OCR识别方法成本较低、工具化较为成熟,但本地验证码识别成功率可能不高(如ddddocr识别成功率约为65%)。
  • 针对特定网站的验证码,可以进行针对性的机器学习训练,或采用付费的第三方验证码识别接口,以提高识别准确率。
  • 在利用验证码复用漏洞时,需注意并非所有验证码功能都存在复用漏洞,需根据实际情况进行判断。

通过以上步骤,我们可以有效地绕过服务端的验证码,进行进一步的渗透测试或安全评估。但请注意,这些技术仅应用于合法的安全测试和评估,未经授权的渗透测试是违法的。