本文为 CISP-PTE 备考学习笔记,所有操作仅在官方授权靶场、本地自建靶场环境完成。 文中 Payload 仅用于原理学习、靶场练习。严禁直接套用在任何未授权公网业务系统。未经授权对网站进行注入、扫描属于违法行为,请遵守《网络安全法》。 本文目的:理解漏洞原理、学习漏洞防御,请勿用于非法测试。
首先我们要了解一下什么是爆破呢?
爆破,本质是程序对“身份认证”或“资源路径”的校验不够严格,攻击者用字典反复提交候选值,通过响应差异判断哪一个值是正确的。PTE 里的爆破不是电影里的无脑跑密码,而是先判断防护有没有缺陷,再用 Burp Intruder 做有依据的尝试。
Web 系统正常做法:登录口应有一次性验证码、失败次数限制、账号锁定、强口令策略、多因素认证;目录应有权限控制,备份文件不应放在 Web 目录。有缺陷的写法:验证码可复用、Token 不校验、Basic 认证只做 Base64 包装、后台路径靠“隐藏”保护、失败响应与成功响应差异明显。
一、爆破详细种类
1. 按爆破对象划分
(1)登录口令爆破
这是最常见的一种。对登录框的用户名、密码字段加载字典,示例请求如下:
POST /login.php HTTP/1.1 Content-Type: application/x-www-form-urlencoded username=admin&password=§123456§&captcha=AB12特点:PTE 中常配合“验证码可复用”出现;字典通常由题目提供。
(2)Basic 认证爆破
访问站点时会弹出用户名和密码输入框,抓包后可以看到如下请求头:
Authorization: Basic YWRtaW46cXdlcnR5Basic后面是用户名:密码的 Base64 编码。注意:用户名和密码要先拼成user:pass再整体编码,不能在 Burp 里简单拆成两个普通位置。
Burp 配置:Payload 类型选 Custom Iterator,位置 1 放用户名,分隔符:,位置 2 放密码字典,Payload Processing 加 Base64-encode。
(3)目录 / 路径爆破
用于猜测隐藏路径,例如/admin、/backup、/phpmyadmin以及.bak备份文件,示例请求如下:
GET /§admin§/ HTTP/1.1 Host: target特点:如果站点套了 Basic 认证或需要 Cookie,直接扫描会全是 401,要在 Intruder 请求模板中保留Authorization头或 Cookie,再替换路径位置。
(4)验证码复用爆破
页面有验证码,但服务端没有做到“一次一用”。输入一次正确验证码后,抓包固定captcha字段,只让密码字段变化,即可跑字典。
判断方法:连续重放同一验证码请求,如果响应一直正常往下走,说明验证码未与会话一次性绑定。
(5)默认口令 / 弱口令试探
不是大规模跑字典,而是先试admin/admin、admin/123456、test/test等。PTE 中有时入口就是默认凭据,先试几下能省很多时间。
(6)Cookie / Token / Header 参数爆破
有些系统把身份参数放在 Cookie、Token、隐藏字段或请求头里。若参数可预测、可枚举,也可能成为爆破点。PTE 中较少单独出题,但综合题可能遇到。
2. 按 Burp Intruder 攻击模式划分
(1)Sniper(狙击手)
一个 payload 位置,单字典。最常用,登录密码爆破、目录爆破都用它。
(2)Battering ram(破城锤)
多个位置使用同一个 payload。适合用户名和密码相同的场景,PTE 较少。
(3)Pitchfork(草叉)
多个字典并行,一一对应。适合已知用户名列表和密码列表一一匹配。
(4)Cluster bomb(集束炸弹)
多个字典笛卡尔积组合。适合用户名和密码都需要枚举,但请求量大,PTE 中要控制线程。
3. 按结果判断方式划分
(1)响应长度差异
成功登录和失败登录的页面长度通常不同。Intruder 结果按 Length 排序,明显跳变的那一行往往是正确凭据。
(2)状态码差异
失败返回 200,成功可能返回 302 跳转。看 Status 列即可筛选。
(3)Grep-Match 关键词
在 Intruder 的 Options 中设置成功页面才出现的关键词,如key、success、欢迎,命中行会被标记。
(4)重定向差异
成功登录后跳转到后台首页,失败则停留原页。看响应头Location或是否跟随重定向。
4. 按防护缺陷划分
验证码可复用;
无失败次数限制;
无账号锁定;
Token 不刷新、不绑定会话;
Basic 认证仅 Base64 包装;
前端 JavaScript 校验,抓包可绕过;
目录仅靠“隐藏”保护,备份文件可下载;
成功/失败响应差异过大。
二、爆破过滤原理(防护手段)
开发 / WAF 常用的爆破防护方式:
验证码一次性:每次提交后验证码立即失效,绑定会话。
失败次数限制:同一账号或 IP 连续失败 N 次后锁定或延迟。
频率限制:限制单位时间请求数,触发后封 IP 或返回验证码。
账号锁定:多次失败锁定账号,需管理员解锁。
多因素认证:密码正确后还要短信、OTP、硬件密钥。
强口令策略:避免弱口令进入字典。
WAF / 防暴破模块:识别高频请求、异常 User-Agent、固定验证码复用。
Basic 认证改表单 + HTTPS:不要把 Basic 认证暴露在公网,且必须走 HTTPS。
目录权限控制:后台、备份、数据库管理入口限制来源 IP,备份文件不放在 Web 目录。
日志与告警:对高频失败登录、目录扫描进行监控。
❗爆破防护的本质不是“过滤某个 payload”,而是限制尝试次数、增加单次尝试成本、让成功/失败响应不可区分。单纯黑名单过滤密码关键字意义不大。
✅真正安全的方案:一次性验证码、失败锁定、频率限制、多因素认证、强口令、最小权限、日志告警
三 cisp-pte 验证码爆破例子
我们先抓个包 这里是我用的国产的工具渗透工具Yakit
咱们发现题目上给了admin这个账号
所以咱们先随便输入一个密码和验证码来看看后端返回什么
咱们发现
username=admin&password=31231231&code=9263
Cookie: PHPSESSID=8kdv8nj90cjtu32ahcht1po7f1
这两行
咱们请求登录 前面讲过 cookie是一个标识 然后code自然也是验证码的字段
本题目叫做验证码爆破
在正常的登录逻辑里,Cookie(通常含 Session ID)负责把这一次请求和之前的验证码验证动作绑定在一起;验证码字段则用来证明“你是人”。删掉它们的目的,是为了测试服务端到底有没有真正校验这两样东西。
删掉验证码字段:如果服务端在接收参数时,没有做非空判断,或者验证码仅仅是在前端 JavaScript里校验的,那么请求到达后端时,后端可能根本不检查这个参数是否存在。删掉它后请求依然被受理,就证明验证码这层防护在服务端是“纸糊的”。
删掉
Cookie标签:这是更关键的一步。如果删掉Cookie(意味着丢失了 Session)后,服务端依然不报错,并且继续处理密码字段,就说明登录过程根本没有与会话机制绑定。服务端很可能只是单纯地拿你提交的密码去数据库比对,完全不在意这个请求是不是“同一个人”发来
开始爆破
上方咱们知道admin是用户名咱们可以插入密码字典进行爆破
爆破结束后 下一步 我们可以从数据包里查看数据包咱们发现全部是200ok 那么下一步咱们可以观察包的响应大小 发现admin 123qwe响应包大小是1668
猜测这个应该是就是密码
利用账号登录后 得到key!