CTF 入门学习路线
CTF 入门学习路线
本文适合
准备系统入门 CTF、需要安排 1 到 3 个月学习节奏的新手和教学负责人。学完你能:按阶段安排环境、Web、Misc、Crypto、逆向、Pwn、AI 安全学习,并用每周题目、WP 和复盘检查进度是否真实有效。
一句话判断
好的入门路线不是把所有方向平均学一遍,而是先建立稳定环境、快速反馈和复盘习惯,再逐步进入抽象度更高的方向。
推荐主线:
这不是唯一顺序,但适合零基础团队教学。已经有编程、Linux 或安全基础的同学,可以提前进入逆向、Pwn 或专项训练。
题目中常见信号
学习路线是否需要调整,看这些信号:
说明:缺少验证和复盘
调整方式:每周至少做 1 道题并写 1 篇 WP
说明:抽象能力和脚本能力不足
调整方式:补 Python bytes、编码、基本程序逻辑
说明:Linux、gdb、libc 基础不稳
调整方式:先做 ret2win 和 ret2libc 最小链
说明:没有记录卡点类型
调整方式:用复盘表区分概念、工具、观察、心态问题
入门阶段最该追踪的不是"刷了多少题",而是"本周是否多掌握了一条可复现路径"。
核心概念
学习 CTF 有三条线同时推进:
- 工具线:能打开材料、发请求、跑脚本、调试程序。
- 知识线:知道不同题型的判断信号和基本原理。
- 复盘线:能把一次解题过程沉淀成别人能复现的 WP。
三条线缺任何一条都会卡:
- 只有工具线:会跑命令,但不知道为什么跑。
- 只有知识线:看文章能懂,遇到题不会验证。
- 只有复盘线:写得很认真,但没有足够技术证据。
所以入门路线要按"反馈速度"排序。Web 和 Misc 反馈快,适合训练观察;Crypto 和逆向抽象度更高,适合训练推理;Pwn 和 AI 安全门槛更特殊,适合在前面习惯稳定后进入。
最小分析流程
按 12 周安排,可以这样执行:
周期:第 1 周
目标:固定 Linux/WSL、Python、浏览器、笔记模板
必做产出:一篇环境记录 + 一篇练习 WP
周期:第 2-3 周
目标:掌握请求、参数、Cookie、源码、常见注入信号
必做产出:3-5 道 Web 题 WP
周期:第 4 周
目标:掌握文件类型、strings、十六进制、压缩、图片和流量起手式
必做产出:2-3 道 Misc 题 WP
周期:第 5-6 周
目标:区分编码、哈希、对称、公钥和数学参数
必做产出:2-3 道 Crypto 题 WP
周期:第 7-8 周
目标:会找字符串、交叉引用、比较逻辑和简单变换
必做产出:2-3 道逆向题 WP
周期:第 9-10 周
目标:理解栈、返回地址、保护机制和 ret2win/ret2libc
必做产出:1-2 道 Pwn 题 WP
周期:第 11-12 周
目标:认识 prompt、RAG、模型文件、工具调用边界
必做产出:1 道 AI 或综合题 WP
每周固定节奏:
周一:读一篇知识点文章,写 5 行摘要
周二:做一题同主题入门题,记录所有输入输出
周三:补卡住的概念或工具
周四:整理 WP,不只写最终步骤
周五:复盘本周卡点,更新下一周计划
周末:做一道稍微变形的题,验证能否迁移每次学习都用同一个记录模板:
## 本周目标
## 做过的题
## 卡点分类
- 概念不会:
- 工具不会:
- 观察漏掉:
- 复现失败:
## 下周只补一件事最小验证示例
假设你正在学 Web 入门,不要用"我看完 SQL 注入文章了"作为完成标准,而要做一次可验证检查。
学习任务:
主题:SQL 注入入门
文章:[[SQL注入入门]]
练习:任选一道带 id 参数的入门题
产出:一篇 WP最小完成标准:
# 1. 记录正常请求
curl -i 'http://target/news.php?id=1'
# 2. 验证参数影响
curl -i 'http://target/news.php?id=2'
# 3. 验证异常输入
curl -i "http://target/news.php?id=1'"
# 4. 验证布尔差异
curl -i 'http://target/news.php?id=1 and 1=1'
curl -i 'http://target/news.php?id=1 and 1=2'WP 里必须能回答:
- 我为什么判断这是 SQL 注入?
- 哪个请求证明了参数进入 SQL?
- 哪个响应证明了条件可控?
- 如果没有报错,我下一步怎么排查?
做到这些,才算这一周真的学会了一个可迁移的入门动作。
常见利用 / 解题路线
路线总览:
第一阶段:把环境和记录方式固定下来
先会三件事:
- 会用 Linux 基础命令查看文件、运行脚本、解压材料。
- 会用 Python 处理字符串、字节、Base64、Hex、异或和简单爆破。
- 会写最小 WP,把观察、尝试、结果和结论写清楚。
不要一开始追难题。环境不稳定、记录不清楚,后面每一步都会反复返工。
第二阶段:先学 Web 和 Misc
Web 的好处是反馈快。你改一个参数,状态码、页面内容、报错通常马上变化,适合训练观察能力。
Misc 的好处是材料直观。文件打不开、图片异常、压缩包有密码、流量包有会话,这些现象容易被看到,适合训练"从材料本身找线索"。
固定动作:
- Web:先看源码、请求、参数、Cookie、响应。
- Misc:先看文件类型、文件头、strings、体积、元数据。
第三阶段:进入 Crypto 和逆向
Crypto 入门先做识别:编码不是加密,哈希不是解密,AES 和 RSA 需要看参数是否齐全。
逆向入门先做程序逻辑理解:输入在哪里读,在哪里比较,比较前做了什么变换。
这两个方向都需要更强的抽象能力。先把"能还原一条小变换链"练稳,再进入复杂算法。
第四阶段:补 Pwn 和 AI 安全
Pwn 的门槛在于底层概念多:栈、寄存器、返回地址、保护机制、libc。入门时先理解 ret2win、ret2libc 和格式化字符串的基本链条。
AI 安全的门槛在于题型新:有些是 LLM prompt,有些是图像对抗样本,有些是模型文件分析。先学会区分系统边界,再谈攻击。
里程碑检查点
第一个月结束
你应该能:
- 独立配置 Linux 或 WSL 环境。
- 用 Python 处理 bytes、Base64、Hex 编码。
- 完成 5 道以上 Web 或 Misc 入门题。
- 写出至少 3 篇结构完整的 WP。
- 解释至少 1 道题的"观察 -> 假设 -> 验证 -> 结果"链条。
第二个月结束
你应该能:
- 识别常见编码和加密类型。
- 用 IDA 或 Ghidra 打开程序,找到字符串和判断逻辑。
- 完成 3 道以上 Crypto 或逆向入门题。
- 区分"概念不会"和"观察不完整"。
- 能在 10 分钟内给队友讲清一道题的关键验证点。
第三个月结束
你应该能:
- 完成一道中等难度综合题。
- 理解至少两个方向的基本知识地图。
- 在模拟比赛中完成至少 2 道题。
- 能给别人讲解一道题的完整思路。
- 能从失败题目里提炼下一周学习目标。
常见失败原因
原因:没有入门反馈
排查动作:降到能在 90 分钟内完成的题
原因:目标不具体
排查动作:每周只选 1 篇文章 + 1 道题
原因:没有验证环节
排查动作:每看完一节必须复现一个命令或 payload
原因:注意力被稀释
排查动作:当前两周只保留一个主方向
原因:没有固定流程
排查动作:先做材料、输入、反馈三步记录
原因:缺少版本和命令记录
排查动作:建立环境日志,记录系统、命令、报错
迷你案例
一个零基础同学第一周计划是"学 Web"。如果只写"看完 SQL 注入、XSS、文件上传",这不可验证。
改成 S 级学习路线:
- 周一读 [[HTTP请求与响应]],用浏览器开发者工具记录一次 GET 和 POST。
- 周二做一道源码查看或参数题,写 1 篇最小 WP。
- 周三读 [[SQL注入入门]],只复现单引号、布尔差异和 union 回显。
- 周四做一道 SQL 注入入门题,记录 5 个关键请求。
- 周五复盘:卡点是"不会判断回显位",下周先补
order by和union select。
这样一周结束后,他留下的不是"学过 Web"的感觉,而是一条能复用的请求验证链。
推荐平台和资源
入门友好平台:
进阶资源:
- CTF Wiki:中文 CTF 知识库。
- CryptoHack:Crypto 专项交互式学习。
- OverTheWire:Linux 和基础安全训练。
- pwnable.tw:Pwn 专项训练。
- CTFtime:比赛日历和队伍信息。
资源再多也只能服务本周目标。每周只选"当前卡点最相关"的一篇文章和一道题。