靶场实战 · 附录
防御速查 · 自测题库 · 法律红线
打完 44 关后回来过一遍这一页——把"会打"变成"会防"
| 漏洞类型 | 一句话成因 | 一句话防御 |
|---|
| 暴力破解 | 无次数限制、验证码失效 | 失败锁定 + 服务端一次性验证码 + token |
| XSS | 用户输入进 HTML 未编码 | 输出按上下文编码(htmlspecialchars/JS转义/URL协议白名单) |
| CSRF | 浏览器自动带 Cookie + 无来源校验 | CSRF Token + SameSite + 关键操作二次确认 |
| SQL 注入 | 输入拼进 SQL 语句 | 参数化查询(一切注入的正解) |
| RCE | 输入拼进命令/eval | 白名单 + 禁危险函数 + 最小权限 |
| 文件包含 | 文件名参数可控 | 白名单 + 关闭 allow_url_include |
| 文件上传 | 校验可绕过、脚本可执行 | 服务端内容校验 + 上传目录禁执行 + 重命名 |
| 文件下载/目录遍历 | 路径参数可控 | id 映射 + 拒绝 ../ |
| 越权 | 只验登录不验归属/角色 | 对象级授权(用 session 身份取数)+ 接口级 RBAC |
| 信息泄露 | 注释/备份/报错藏敏感信息 | 上线前敏感扫描 + 统一错误页 |
| 反序列化 | 反序列化用户输入 | 不反序列化不可信输入 / 白名单类 |
| XXE | XML 外部实体未禁用 | 禁用 DTD/外部实体 |
| URL 跳转 | 跳转目标未校验 | 域名白名单 + 协议白名单 |
| SSRF | 服务器代发请求目标未校验 | URL 白名单 + 禁内网地址/危险协议 |
4.3课后自测题库(含答案要点,先自己答再看)
暴力破解
1. 简述验证码绕过(on server)关卡为什么同一个验证码能反复用?
要点:session 未销毁,一次性机制缺失
2. token 防爆破关卡的 token 从哪来?为什么爆破工具不能直接重用?
要点:服务端生成、每次刷新、攻击者拿不到新值
3. 设计一个登录接口的三个防爆破措施。
要点:锁定/限流/验证码/token 任选三
XSS
1. 反射型、存储型、DOM 型三种 XSS 的区别?
要点:是否入库、是否经服务器、危害范围
2. 为什么过滤 <script> 关键字防不住 XSS?举两个绕过例子。
要点:img onerror、svg onload、大小写等
3. htmlspecialchars 使用正确(ENT_QUOTES)但输出在 href 里,还有风险吗?
要点:javascript: 协议,需协议白名单
4. 盲打 XSS 的目标是谁?为什么选择打后台?
要点:管理员权限高、后台防护常被忽视
CSRF
1. 用一句话解释 CSRF 为什么能成立?
要点:浏览器自动携带 Cookie,服务器无法区分"本人操作"与"被伪造请求"
2. GET 改 POST 能防 CSRF 吗?为什么?
要点:不能,POST 也能被自动提交表单伪造
3. CSRF Token 为什么攻击者拿不到?
要点:随机生成、同源策略保护、不在攻击者可读处
SQL 注入
1. 字符型注入 payload 1' or '1'='1 中每个部分的作用?
要点:闭合、恒真、语法补全
2. 报错注入利用了什么机制把数据带出来?
要点:updatexml 等函数参数不合法→报错信息包含数据
3. 布尔盲注和时间盲注分别靠什么"信使"传数据?
要点:页面真假差异 / 响应时间
4. 宽字节注入为什么能绕过 addslashes?
要点:GBK 多字节吞掉反斜杠
5. 为什么参数化查询能防所有 SQL 注入?
要点:语句结构与数据分离,数据不再被解析为代码
RCE / 文件包含 / 文件上传
1. 命令注入里 ; & && | 分别是什么作用?
要点:顺序/后台/与/管道
2. 图片马为什么直接访问不执行、配合文件包含就执行?
要点:后缀不交 PHP 解释器 vs include 强制解析
3. 文件上传的三道正确防线?
要点:服务端内容校验、目录禁执行、重命名存储
越权 / 信息泄露
1. 水平越权和垂直越权的区别?
要点:同级别横向 vs 低权限上探高权限
2. "前端隐藏按钮"为什么不算权限控制?
要点:前端内容攻击者全可见,必须后端校验
进阶漏洞
1. XXE 中的 DTD 和实体是什么?
要点:DTD 定义结构、ENTITY 声明引用,外部实体可指向文件/URL
2. SSRF 为什么能突破防火墙?
要点:请求由内网服务器发出,防火墙放行
3. PHP 反序列化漏洞的根源是什么?
要点:unserialize 执行魔术方法,数据可控即代码可控
期末实操考核说明(供参考):随机抽 3 关独立通关(不允许看手册),提交通关报告(截图 + 原理 + 修复建议)。
4.4法律红线(必读,每次练习前过一遍)
- 只能在本地靶场练习。对任何非授权系统(包括学校官网、同学电脑、云主机)测试漏洞,均可能触犯《刑法》第 285 条(非法侵入计算机信息系统罪)、第 286 条(破坏计算机信息系统罪)和《网络安全法》第 27 条
- 练习限
127.0.0.1 和本机局域网靶场;不得把攻击流量发到互联网真实网站 - 不传播、不出售攻击工具与手册给非课程同学;通关报告不公开发布
- 将来参与 SRC(漏洞赏金)平台时,须遵守平台授权范围,越界即违法
- 强调:学习攻击技术是为了防御,安全从业者的第一素质是底线意识
参考资料
- Pikachu 源码仓库:https://github.com/zhuifengshaonianhanlu/pikachu
- PHPStudy 官网:https://www.xp.cn
- Burp Suite 社区版:https://portswigger.net/burp/communitydownload
- 中国蚁剑:https://github.com/AntSwordProject/antSword
- OWASP Top 10:https://owasp.org/www-project-top-ten/
本手册全部 payload 均针对本地 Pikachu 靶场环境,仅用于学习练习。使用时请按实际部署路径/端口微调。