学习路径 02 · CTF 路线:题型地图与练习阶梯

单人可玩性分级、七类题型的标准动作、W3–W6 周任务与单人打比赛策略。

02 · CTF 路线:题型地图与练习阶梯

覆盖 W3–W6(主攻)+ W13(比赛)。本文件的立场很明确:单人 + 每周 5–10 小时,可玩的是 Jeopardy 赛制里的 misc / 隐写 / 取证 / 古典密码 / 入门 OSINT / 入门 Web / 入门逆向,不是 pwn 与高级 Web。


1. 本模块目标

  • 拿到一个文件,30 秒内能跑出「第一步该做什么」的标准流程
  • 能独立解 ★2–★3 的 misc / 隐写 / 取证题
  • 能读懂入门级古典密码与简单 RSA 题的题意
  • 能在 beginner 赛里稳定拿到 2–5 题
  • 知道哪些题应该当场放弃(省下的时间比做出来的题更值钱)

2. 先认清「哪种 CTF 适合单人」

赛制 单人可玩性 说明
Jeopardy(题库式,给分) ✅ 完全可玩 本路径唯一目标赛制
Attack-Defense(攻防) ❌ 需要团队分工与持续在线
King of the Hill ❌ 同上
混合赛(Jeopardy + 靶场) ⚠️ 只做 Jeopardy 部分 别被靶场部分拖住

题型可玩性分级

题型 单人可玩 本路径投入 理由
Misc ✅ 高 杂项靠思路与工具,不靠环境
Stego(隐写) ✅ 高 单人最舒服的题型之一
Forensics(取证) ✅ 中高 工具链重,但可独立完成
Crypto(古典 + 入门现代) ✅ 中 深水区避开
OSINT ✅ 中 只考检索与常识,单人友好
Web(入门) ⚠️ 中低 需要靶场,但免费在线 lab 可用
Reverse(入门) ⚠️ 低 入门可玩,进阶太吃时间
Pwn ❌ 0 见 总览的「不覆盖清单」
高级 Web / 云 / 无线 / 硬件 ❌ 0 同上

判据:单人时间预算 ≈ 团队 1/4,所以只做「不依赖队友即时协作」的题。


3. 题型地图(每条都给出「标准动作」)

3.1 Misc(杂项)

考什么:编码套娃、二维码、压缩包、图片拼接、小计算、小游戏。 标准动作:

① file 看类型 → ② strings 搜 flag → ③ binwalk 看有没有藏文件
→ ④ CyberChef Magic 猜编码 → ⑤ 看题目描述里的双关

高频套路

  • 多层编码(base64 → hex → 摩斯 混着来):写个循环脚本自动试,别手点。
  • 二维码:破损 → 用修复工具补定位点;旋转/反色 → 用工具试;拼接 → 拼图。
  • 压缩包:伪加密(改标志位)、已知明文、CRC 碰撞、字典爆破(先看题目描述有没有给线索)。
  • 计算类:直接 Python 算,别心算。

3.2 Stego(隐写)

考什么:把数据藏在图片/音频/文档/视频里。

固定检查顺序(背下来,能省一半时间)

1. file            → 真实文件类型
2. exiftool        → 元数据(作者、注释、GPS、软件名)
3. strings -n 6    → 可打印字符串
4. binwalk         → 内部是否还有文件(附加数据)
5. 图片:zsteg / stegsolve / 像素 LSB / 通道对比 / 尺寸异常
6. 音频:看波形与频谱(Audacity / sonic-visualiser)/ 摩斯 / DTMF
7. 文档:docx/zip 解压看内部;PDF 看对象流
8. 视频:ffmpeg 抽帧 / 抽音轨
9. 仍无 → 回看题目描述 + 检查是否有多层(先解出第一层才有下一层)

高频套路

  • LSB(最低有效位):pngcheck 看通道,zsteg 一把梭。
  • 文件尾追加数据:binwalk -e 或 tail -c 200 file | xxd。
  • 两张图异或:CyberChef 的 XOR 操作,或 Python 逐像素异或。
  • 音频频谱:把频谱图放大,flag 常以文字形式画在频谱里。
  • 压缩包藏在图片里:binwalk -e 拆出来。

3.3 Forensics(取证)

考什么:流量包、磁盘镜像、日志、内存。

标准动作

  • pcap:Wireshark 打开 → 过滤 http、tcp.stream eq N → File > Export Objects 导出文件 → 跟 HTTP 流。
  • tshark 一行版:tshark -r a.pcap -Y "http.request" -T fields -e http.host -e http.request.uri
  • 删除恢复:foremost -i disk.img -o out/
  • 日志:grep + sort | uniq -c 找异常 IP/时间。

3.4 Crypto(只学够用部分)

层级 内容 本路径
编码 base 家族、摩斯 W2 已学
古典 Caesar/Vigenère/替换/换位 W5 学
现代入门 RSA 小 e、RSA 共模、AES-ECB 模式识别、哈希概念 认得出、会查、不强求解
深水区 格攻击、ECC、ZKP 不覆盖

判据:看到 n, e, c 三个数 → 知道是 RSA;看到密文长度是 16 倍数且分组重复 → 可能是 ECB。会识别 + 会查 writeup 就够 W3–W6。

3.5 OSINT(检索能力)

  • 搜索操作符:site: filetype: intitle: inurl: "精确短语" -排除
  • 图片反查:Google Lens / Yandex / TinEye(Yandex 对地理定位常更强)
  • 元数据反查:exiftool 拿到 GPS/软件/作者
  • 地理定位:街景、招牌文字、植被、车牌格式、日照角度
  • 历史页面:Wayback Machine 看旧版本
  • whois / DNS:域名注册信息、子域名

3.6 Web(入门止步)

只学「看得懂、手工能验」的部分:

  • HTTP 方法与请求头(curl -v 看全流程)
  • Cookie / Session / JWT 结构(base64 解开头三段)
  • robots.txt / sitemap.xml / 常见备份文件
  • 编码绕过(URL 编码、双写、大小写、%00)
  • SQL 注入的最基础形态(' or 1=1 --),只在靶场上试
  • 工具:浏览器 DevTools、curl、Burp Suite 社区版

不学:SSRF 链、反序列化、云配置、内网穿透——这些需要长时间靶场训练。

3.7 Reverse(入门止步)

  • strings 找线索 → objdump 看反汇编 → 关键跳转
  • 简单算法还原:把汇编里的小循环翻译成 Python
  • 工具:strings、objdump -d、gdb(入门)、Ghidra(重但好用)
  • 不学:VMP、加壳脱壳、恶意代码分析

4. 工具链(按周分批,见 总览里的分批安装表)

周 工具 用途
W3 file xxd strings binwalk exiftool pngcheck 文件与隐写 I
W3 CyberChef(网页版) 编码/变换全家桶
W4 zsteg、stegsolve、Audacity、sonic-visualiser、ffmpeg 隐写 II
W5 Wireshark/tshark、foremost、7z、steghide 取证
W6 curl、Burp 社区版、浏览器 DevTools Web / OSINT

zsteg 是 Ruby gem:sudo apt install ruby && gem install zsteg。装不上就用网页版 stegsolve 或自己写 Python。


5. 周任务(W3–W6)

W3 · Misc + 文件与隐写 I

  • 学:§3.1、§3.2 的检查顺序
  • 练:8 题(Misc 4 + 隐写 4),★1–★2
  • 交:8 条速记 writeup
  • 验收:能对任意文件说出「接下来 5 步」

W4 · 隐写 II

  • 学:音频频谱、图像通道、压缩包异常
  • 练:6 题,★2–★3
  • 交:6 条速记 + 1 份音频分析笔记(含频谱截图思路)
  • 验收:能独立从音频里读出 flag

W5 · 取证 + 古典密码

  • 学:§3.3、§3.4 古典部分
  • 练:10 题(取证 5 + 古典 5)
  • 交:10 条速记
  • 验收:能从 pcap 里导出文件并跟出上传内容

W6 · OSINT + 入门 Web + 小赛模拟

  • 学:§3.5、§3.6
  • 练:OSINT 5 题 + Web 3 题(在靶场上)
  • 交:限时 3 小时小赛模拟 + 完整复盘
  • 验收:拿到 ≥2 题,且复盘里写清「为什么放弃了哪些题」

6. 比赛怎么打(单人版)

6.1 选赛标准(在 CTFtime 上筛)

条件 建议
赛制 Jeopardy
时长 24–48h(单人能分段投入)
难度 有 beginner 分类或往年 writeup 显示前几题简单
时间 周末
队伍 单人报名(很多赛允许 solo)

6.2 赛前 15 分钟

  • 把所有题按分类看一眼,标出「misc/stego 里最像 ★1 的 3 道」
  • 建 work/比赛名/ 目录与一个 status.md(题号 / 状态 / 卡点 / 用时)
  • 关掉无关标签页

6.3 赛中策略

  1. 先扫 easy:misc/stego 先拿分,建立节奏。
  2. 单题 60 分钟:比赛时比平时更严格,到点就换题(不是放弃,是排期)。
  3. 不做 pwn/高级 web:看一眼题面就走,别被好奇心拖住。
  4. 记录卡点:status.md 里写一句卡在哪,赛后复盘用。
  5. 留 30 分钟收尾:不要卡到最后一分钟。

6.4 赛后 24 小时内复盘(最重要的一步)

按 00 学习法与复盘 的完整复盘模板写,另外必须回答:

  • 我拿分的题,是因为我会,还是因为它简单?
  • 我放弃的题,如果多给我 2 小时,我看得出下一步吗?
  • 我的工具链在哪一步拖慢了我?(现场装工具的痛,要在赛后变成"提前装好")

7. 验收标准

W6 结束时

  • 累计 ≥ 24 道题的速记 writeup
  • 有任何文件都能说出标准检查顺序(口述 30 秒)
  • 独立完成 1 份音频/图片隐写的完整复盘
  • 小赛模拟拿到 ≥ 2 题

W13 结束时

  • 真实比赛拿到 ≥ 2 题并写完整复盘
  • 能在 15 分钟内判断一道题「值得做 / 该跳过」

8. 常见卡点

卡点 真相 处理
文件打不开 后缀骗人 file 才是真的
binwalk 拆出一堆 正常,逐个看 用 -e 自动拆,再 find 找文件
图片看不到异常 隐写不改变外观 LSB/通道/尾附加,别用肉眼看
音频听不出 信息在频谱不在声音 切频谱视图
Web 题没环境 需要靶机 用 PortSwigger / THM 免费 lab,[S]
比赛里想全做 单人不可能 目标 2–5 题,写下来贴在屏幕边
装了工具不会用 正常 每题只学一个工具的一招

9. 一句话自检

「给我一个未知文件,我能在 5 分钟内说出它藏了什么类型的东西,并知道该用哪个工具去挖。」

LICENSED UNDER CC BY-NC-SA 4.0