【验证码暴力破解】

发布于:2025-09-10 ⋅ 阅读:(23) ⋅ 点赞:(0)

       接下来小编为大家演示一个有验证码的密码爆破流程。基于本地127.0.0.1搭建的Web渗透测试环境。包含yanzheng的PHP登录系统。login.html:登录页面,login.php:处理登录逻辑的后端文件,yanzhengma.php:生成验证码的接口.数据库​​:使用 MySQL,数据库名为 wuya(名字随便起,这里小编带的是小编老师的名字),其中 users表存储了用户凭证。

声明:本篇内容基于网络安全知识体系,所学用途皆不可用于法律之外的攻击与入侵

首先打开bp,在下图面板存入jdk的jar包,文件已放上去资源包。

稍后我们可以看到已经添加了java的这个modified

在放codereg.py文件路径下打开终端

在这个路径下输入codereg.py 如果没有给python配置环境变量的话要输入python codereg.py。在python环境下启动ddddocr,文件已经在资源包放上去了

打开phpstudy的mysql,等会要用到。yanzheng文件要解压放在PHP study文件WWW的根目录下。

打开navicat,新建数据库并导入数据库文件(导入用户名和密码)

打开burp,在proxy上开启浏览器输入网址打开burp,在proxy上开启浏览器输入网址       http://127.0.0.1/yanzheng/yanzhengma.php

打开intercept on 拦截网址get请求

在pretty界面右边操作Extensions > captcha-killer-modified 0.16 > captcha-killer > Send to captcha panel,然后在captcha-killer-modified界面点击获取,获取右边方框的信息,按一次获取可以生成不同的验证码。

接下来操作左下角的方框,URL必须是http://127.0.0.1:8888

内容必须是:
POST /reg HTTP/1.1
Host:127.0.0.1:8888
Authorization:Basic f0ngauth
User-Agent:Mozilla/5.0(Macintosh;Intel Mac OS X 10.15;rv:97.0)Gecko/20100101 Firefox/97.0Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-Language:zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding:gzip,deflate
Connection:keep-aliveUpgrade-Insecure-Requests:1Content-Type:application/x-www-form-urlencodedContent-Length:8332
<@BASE64><@IMG_RAW></@IMG_RAW></@BASE64>
 

按一下获取然后按一下识别出现右下角的验证码信息即为成功

停掉拦截,输入网址http://12.0.0.1/yanzheng/login.html登录页面,用户名输入admin,密码和验证码随便输入,我们爆破的内容就是这两个

拦截到的POST请在pretty面板上右键发送到intruder

1. Sniper(狙击模式)

  • ​工作原理​​:你只准备​​1份​​Payload字典(Set)。Intruder会把你标记的​​每一个位置​​(Position)都分别用这份字典里的所有Payload​​逐个替换并发送​​。

    • 假设你标记了2个位置(A和B),字典里有3个Payload(1, 2, 3)。

    • 攻击顺序为:(A=1, B=原始值)-> (A=2, B=原始值)-> (A=3, B=原始值)-> (A=原始值, B=1)-> (A=原始值, B=2)-> (A=原始值, B=3)

  • ​适用场景​​:这是​​最常用​​的模式。适用于:

    • ​暴力破解(Brute-force)​​:比如破解密码。你通常只标记password一个参数,然后用一份密码字典进行攻击。

    • ​模糊测试(Fuzzing)​​:寻找SQL注入、XSS等漏洞。你标记一个参数(如id=123中的123),用各种攻击Payload去测试,观察响应。

2. Battering ram(攻城锤模式)

  • ​工作原理​​:你只准备​​1份​​Payload字典。Intruder会把你标记的​​所有位置​​,​​同时​​替换成字典里​​同一个​​Payload,然后发送。

    • 同样标记2个位置(A和B),字典有3个Payload(1, 2, 3)。

    • 攻击顺序为:(A=1, B=1)-> (A=2, B=2)-> (A=3, B=3)

  • ​适用场景​​:相对少见。适用于需要​​所有被标记位置的值始终保持一致​​的场景。

    • 例如,一个请求中可能在多个地方(如Body和Header)都出现了同一个Session ID或CSRF Token,你需要同时修改它们为同一个新值。

3. Pitchfork(草叉模式)

  • ​工作原理​​:你需要为​​每一个​​标记的位置都提供​​一份独立的​​Payload字典。Intruder会​​并行地​​遍历这些字典,即第一组字典的第1个值、第二组字典的第1个值... 组合成一个请求,然后是所有字典的第2个值,以此类推。

    • 你标记了2个位置(A和B)。为位置A准备字典A(值: a1, a2, a3),为位置B准备字典B(值: b1, b2, b3)。

    • 攻击顺序为:(A=a1, B=b1)-> (A=a2, B=b2)-> (A=a3, B=b3)

  • ​适用场景​​:适用于攻击​​两个或多个有关联性的参数​​,并且你拥有​​一一对应​​的字典。

    • ​经典应用:撞库攻击​​:你通过其他渠道获取了一批用户名和密码的对应关系。你标记usernamepassword两个参数,然后为username加载用户名字典,为password加载对应的密码字典。Intruder会尝试(user1, pass1)(user2, pass2)这样的组合,而不是所有可能组合。

4. Cluster bomb(集束炸弹模式)

  • ​工作原理​​:你需要为​​每一个​​标记的位置都提供​​一份独立的​​Payload字典。Intruder会遍历这些字典的​​所有可能组合​​。

    • 同样标记2个位置(A和B)。字典A(值: a1, a2),字典B(值: b1, b2, b3)。

    • 攻击顺序为:(A=a1, B=b1)-> (A=a1, B=b2)-> (A=a1, B=b3)-> (A=a2, B=b1)-> (A=a2, B=b2)-> (A=a2, B=b3)

  • ​适用场景​​:适用于需要测试​​所有参数的所有可能组合​​的场景。这是​​最暴力、最耗时​​的模式。

    • ​全面暴力破解​​:当你不知道用户名和密码的任何对应关系时,你想用一份用户名字典和一份密码字典尝试所有登录组合。请求量是 ​​用户名字典条数 × 密码字典条数​​。

攻击模式

载荷集数量

工作方式

适用场景

​Sniper(狙击)​

1个

逐个位置试

​最常用​​,测试单个参数(如密码、ID)

​Battering ram(攻城锤)​

1个

所有位置用同一个值

不常用,需要所有参数值相同的场景

​Pitchfork(草叉)​

多个(与位置数相同)

并行遍历

​一对一的关联参数​​(如对应的用户名和密码)

​Cluster bomb(集束炸弹)​

多个(与位置数相同)

交叉组合遍历

​多参数的所有组合​​(最暴力,最耗时)

本文章内容较为繁杂,有不懂得可以私信小编。感谢大家的观看,小编呆呆羊在这里与大家共同学习共同成长。


网站公告

今日签到

点亮在社区的每一天
去签到