接下来小编为大家演示一个有验证码的密码爆破流程。基于本地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)
。
- •
- •
适用场景:适用于攻击两个或多个有关联性的参数,并且你拥有一一对应的字典。
- •
经典应用:撞库攻击:你通过其他渠道获取了一批用户名和密码的对应关系。你标记
username
和password
两个参数,然后为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(集束炸弹) |
多个(与位置数相同) |
交叉组合遍历 |
多参数的所有组合(最暴力,最耗时) |
本文章内容较为繁杂,有不懂得可以私信小编。感谢大家的观看,小编呆呆羊在这里与大家共同学习共同成长。