Web 方向:做题流与漏洞速查
Web 是 CTF 的第一大门:题目就是一个网站,你要找出它的漏洞、拿到 Flag。它也是和姊妹站课程衔接最紧的方向——Web 基础和数据库 SQL 的功底在这里直接变现。
先记住一句话:Web 题的通用解法是"信息收集 → 漏洞探测 → 构造利用 → 绕过拿 Flag",四步里八成的突破口藏在源码、响应头和目录里。
一、标准做题流(先背流程,再学漏洞)
text
① 信息收集
F12 看源码注释 / 响应头 / Cookie / 隐藏字段
robots.txt、/backup、/.git、index.php.bak 等常见泄露点
dirsearch 扫目录:dirsearch -u http://题目地址/
② 漏洞探测
有输入框 → 试注入与 XSS;有上传 → 试绕过;有跳转参数 → 试 SSRF
报错信息、回显差异都是线索
③ 构造利用
用 Burp 改包重放,按漏洞类型套 payload,被过滤就变形绕过
④ 拿 Flag
flag 通常在数据库、环境变量、隐藏文件或根目录 —— 拿到 shell/数据后全局搜 flag{二、常见漏洞类型速查表
| 类型 | 一句话原理 | 入门练手 |
|---|---|---|
| SQL 注入 | 输入被拼进 SQL 语句改变语义 | ' or 1=1 -- 起步,进阶盲注与联合查询 |
| XSS | 输入被当作前端代码执行 | <script>alert(1)</script>,分反射/存储/DOM |
| 文件包含 LFI/RFI | include 的路径可控 | ?file=php://filter/read=convert.base64-encode/resource=index.php |
| 文件上传 | 校验不严导致传了可执行文件 | 改后缀、改 Content-Type、图片马 |
| 命令注入 | 输入拼进系统命令 | ; cat flag、` |
| SSRF | 服务端替你发请求 | ?url=file:///flag 或探测内网 |
| 反序列化 | 恶意序列化数据在还原时执行代码 | PHP/Python/Java 各有体系,进阶再啃 |
| SSTI 模板注入 | 输入被当模板语法渲染 | 49 回显 49 即中招 |
| 弱口令/逻辑 | 万能密码、越权、负数充值 | 审逻辑,不靠工具 |
🧠 记忆锚点:用户输入到达危险函数,就是漏洞。 每学一类漏洞,都问两个问题:"输入从哪进来?最终进了哪个危险函数(
eval/system/include/SQL 拼接)?"
三、一个完整例子:SQL 注入拿 Flag
题目:一个登录框,提示"用户名密码错误"。
sql
-- 后端大概率是这样拼的(题目源码泄露可证实):
SELECT * FROM users WHERE username='输入' AND password='输入';构造:用户名输入 ' or 1=1 -- ,语句变成恒真,登录绕过。进阶:联合查询直接读数据:
sql
' union select 1, database() -- → 看当前库名
' union select 1, group_concat(table_name) from information_schema.tables where table_schema=database() -- → 列出所有表
' union select 1, group_concat(flag) from f1ag_1s_here -- → 读出 flag 表被过滤时按需变形:大小写混写、/*!50000union*/ 内联注释、%09 代替空格——变形的本质是让语义穿过过滤规则,这一步没有套路,全靠对 SQL 语法的熟。
💡 动手实验:在 BUUCTF 找【[SUCTF] QAQ】或【baby_sql】级别的注入题,先用手工注入做完一遍,再用 SQLMap 复现一遍,对比两者过程——工具跑的是你已经理解的东西,这个顺序不能反。
四、练手路线(由易到难)
- 闯关平台:sqli-labs(本地搭,注入专精)、upload-labs(上传专精)
- 综合靶场:老站讲过的 DVWA(Low→High 逐级打穿)、BUUCTF Web 新手区
- 真题:BUUCTF 按题解人数升序刷,每题必写 Writeup(第七讲的方法论)
五、避坑三条
- 别上来就丢 SQLMap:姿势不对连注入点都发现不了;先手工确认注入存在,工具只做加速
- 别只盯输入框:Cookie、请求头(User-Agent / X-Forwarded-For)、JSON 体、文件名都是注入点
- 别忽略前端提示:题目 JS 里注释掉的接口、混淆的密码、
debug=true开关——出题人常把钥匙放在明面上
小结
- 做题四步流:收集 → 探测 → 利用 → 拿 Flag,八成突破口在源码、响应头、目录
- 漏洞本质一句话:用户输入到达危险函数;学习时每类都过一遍"输入→危险函数"链路
- 注入是 Web 的母题:手工 SQL 注入必须熟练,SQLMap 只是复现工具
- 练手顺序:sqli-labs / upload-labs 专精 → DVWA 综合 → BUUCTF 真题
下一讲换一个画风:不碰服务器、专攻数学与编码的 Crypto 方向。