收藏了一堆“CTF入门攻略”的朋友,你真的打开过几次?这个场景我在身边见过太多次了:工具包下了三个G,靶场链接存了十几个,比赛报名页面收藏了七八个,但一个月后连一个Flag都没拿到过。原因很简单,你缺的不是资源,是一条能走下去的行动路径。这篇东西不打算再给你罗列一堆网盘地址,而是把“新手入门CTF”这件事拆成三个阶段:先搞清楚比赛到底在比什么,再配好最小可用的环境与工具包,然后用本地靶场把基础漏洞一道道练透,最后从从容容上第一次赛场。
1. 先搞明白CTF到底比的是什么(这决定了你后面三个月会不会白费劲)
很多人一谈到CTF,第一反应是“黑客技术擂台赛”,第二反应是“我是不是得先学渗透测试”。这两个想法都只说对了一小半。CTF(Capture The Flag,夺旗赛)本质上是“在一个被设计好的封闭题目里,找到一段特定字符串(Flag)”。
1.1 三种主流比赛形式,先分清再入坑
- 解题模式(Jeopardy):大部分线上入门赛和高校校赛都是这种。平台挂出一排题目,每道题都藏着一段类似
flag{...}的字符串,解出来提交得分。Web题归Web题,逆向归逆向,互不干扰,特别适合新手。 - 攻防模式(AWD,Attack With Defense):给你一台真实服务器,你要一边守住自己的服务不被别人打穿,一边去攻击别人的服务器拿Flag。这种模式火药味重、十分刺激,但需要比较扎实的Web和运维功底,新手第一年可以只看个热闹。
- 混合模式:先解题拿分,再进入攻防环节,大型比赛常用。
新手阶段你只需要关心第一种解题模式。它的好处是每道题都是独立的知识点,做对一道就拿到一份正反馈,这种反馈机制会让学习过程舒服很多。
1.2 五大赛道,我用大白话给你拆一遍
CTF题目通常分成五个方向,江湖上管它们叫五大赛道:
| 赛道 | 考什么 | 一句话描述 |
|---|---|---|
| Web安全 | Web漏洞利用 | 网站哪里写得不对,你就往哪里打 |
| Reverse(逆向) | 程序分析还原 | 把一个程序拆开看,找到它藏起来的答案 |
| Pwn(二进制利用) | 漏洞利用拿权限 | 让程序干它不该干的事 |
| Crypto(密码学) | 编码与加解密 | 从一串乱码里还原出人话 |
| Misc(杂项) | 隐写、流量、文件分析 | 侦探题,从蛛丝马迹里找线索 |
其中Flag有一段通用格式:大多长成flag{this_is_a_sample_flag}或ctf{...}这样。你的全部目标,就是在题目的某个文件、某段网络流量、某条数据库记录里把它挖出来。
1.3 新手最容易误解的一条常识
先澄清一个关键误解:CTF不是渗透测试。渗透测试面对的是一个真实系统,目标可能是“拿数据”“写报告”;而CTF面对的是出题人特意埋好的漏洞点,答案往往只有一种。换句话说,CTF更像“在实验室里做实验”,渗透则像“给真实房子做安检”。这导致一个反直觉结论:想入门网络安全,不一定非要先学渗透再玩CTF。反过来,通过CTF的Web题去理解漏洞原理,再去接触真实渗透,路径反而更顺。
理解了这一点,你再看各种入门攻略里铺天盖地的“Kali Linux”“渗透测试流程”,就不会被带偏了。CTF入门真正需要的,是一台能跑工具的电脑、一套最小工具包、几个本地靶场,以及每周稳定的练习时间。
2. 第一周只做三件事:跑通虚拟机、建好工具包、把Python跑起来
2.1 别急着装Kali,先装一个虚拟机
这可能是被误解最深的操作。很多新人看了几张截图,直接把Kali Linux装成双系统,结果发现命令行用不惯、网卡驱动恶心、显卡出了问题,第三天就放弃了。记住一个原则:CTF练习环境应该是“一次性”的,弄坏了随时能还原。
第一周最稳妥的做法:在你当前系统上装VMware Workstation Player或VirtualBox,再装一个虚拟机镜像。新手期建议先用Ubuntu Desktop,等真要跑Pwn题时再上Kali Linux也不迟。配置参考:
- CPU:分配2核心足够
- 内存:分配8GB,不能说大,但够跑浏览器和工具
- 磁盘:分配50GB,动态分配即可
用虚拟机的核心好处是快照功能。装好系统后拍一张快照,之后你随手把环境搞坏了,一分钟还原,原地复活。
2.2 一套“够用就好”的CTF工具包清单
市面上到处是十几个G的“全套工具包”,下载解压之后你只会对着几百个文件发愣。我的建议是:用到哪个装哪个,不要提前囤。初期这套就够了:
| 工具 | 干什么用 | 建议安装时间 |
|---|---|---|
| Burp Suite Community(官方免费版) | 抓包、改包、重放请求,Web题头号主力 | 第一周 |
| Wireshark | 抓包分析,Misc流量题必备 | 第三周 |
| CyberChef / 随波逐流CTF编码工具 | 编码解码、古典密码一键处理 | 第三周 |
| Ghidra(开源)或 IDA Free | 逆向反汇编,看C/C++程序逻辑 | 第四周,了解即可 |
| x64dbg | Windows程序动态调试 | 先不用装 |
| dnSpy | .NET程序逆向 | 遇到再装 |
| Python3 + pip | 写脚本批量处理数据 | 第一周立刻装 |
| Hoppscotch / Postman | 接口调试,偶尔用得上 | 不急着装 |
记住,工具永远是手段,不是目的。你在靶场上遇到一道文件包含题,Google一下“文件包含 工具”都比提前囤一个“全网最强工具包”有用。
2.3 Python不是选修课,是生存技能
很多新手总以为“我是来学安全的,为什么要写代码”。这么说吧,CTF里大量题目要求你处理数据、批量尝试、还原字符,没有脚本,你会发现连个Base64批量解码都做不利索。
举个例子,一道题给了你一个文本文件,里面每行都是Base64编码,你要把所有解码结果拼起来。没有Python你只能手动复制粘贴,有了Python就是几行的事:
import base64 with open("flag.txt", "r") as f: lines = f.read().strip().split("\n") result = "" for line in lines: result += base64.b64decode(line).decode("utf-8", errors="ignore") print(result)Python入门真的不用啃完整本语法书。会读写文件、会用requests库发请求、会写for循环和if判断,基本就覆盖了第一年九成的场景。
第一周同时要过一遍Linux的常用命令最小集。别背三十个,先会这几个:ls、cd、cat、grep、find、chmod、curl、nc、python3。每条命令配一个使用场景,比如“grep -r "flag" .”可以递归找当前目录带flag字样的文件,Misc题里经常用到。
3. 本地靶场是新手的主战场:不用注册、随便折腾还能一键重置
3.1 为什么是本地靶场,而不是直接上在线平台
在线CTF平台当然能练,但新人往往忽略一个重要问题:在线平台是给别人比赛的,不是给你瞎折腾的。你把一个注入Payload打过去,轻则题目环境被你打崩,重则触发封禁。本地靶场没有这个问题,它在你自己机器上跑,想怎么试就怎么试,想断点就断点,写错了大不了重置。
最关键的,本地靶场的源码是公开的。你可以直接翻开源代码,看这一关漏洞到底是怎么出现的。这是在线平台不具备的学习优势——“看着答案找问题”,对形成漏洞判断力极有帮助。
3.2 五个必搭靶场,各管一块能力
- DVWA(Damn Vulnerable Web Application):Web安全入门的老牌靶场,覆盖SQL注入、XSS、文件上传、CSRF等十余个模块,每题分低中高三个难度。通关标准分两种:会用工具打进去,同时能说清漏洞原理。
- Pikachu:中文漏洞靶场,名字皮卡丘,对英文不太好的朋友非常友好。它把很多Web漏洞用中文场景讲得明明白白,尤其适合XSS和CSRF的入门理解。
- sqli-labs:SQL注入专项靶场,共65关,每一关都是一种注入姿势(字符型、数字型、报错注入、盲注、堆叠注入……)。你不需要全部打完,前20关足够建立SQL注入的完整感觉。
- upload-labs:文件上传专项靶场,共21关,围绕各种上传绕过(前端校验、MIME类型、扩展名黑名单、解析漏洞等)。每过一关,你对“为什么人家能绕过我的校验”就会有更深理解。
- xss-labs:XSS专项靶场,关卡制,从小过滤到大绕过,是理解前端安全的绝佳基地。
3.3 用Docker一键起靶场,告别“环境地狱”
不少新手死在了环境搭建这一步,装个靶场缺依赖、端口被占用、权限不对,三小时过去了还没打开页面。强烈建议直接学Docker,它把你和运行环境之间的依赖问题全部隔离掉。
以DVWA为例,只需要两条命令:
docker pull vulnerables/web-dvwa docker run -d -p 8080:80 vulnerables/web-dvwa浏览器打开http://localhost:8080就能用了。sqli-labs和Pikachu也有对应的Docker镜像。一条命令启动,一条命令删掉重建,比原生部署省掉无数时间。
如果你愿意再进一步,可以用docker-compose把多个靶场统一管理:
version: "3" services: dvwa: image: vulnerables/web-dvwa ports: - "8080:80" pikachu: image: area39/pikachu:latest ports: - "8081:80"搭建中遇到端口冲突,改一下冒号左边的宿主机端口即可,右边的容器端口不要动。后期想玩VulnHub那种偏真实环境的靶机集合,也不是一上来就该碰的事,先把这几个靶场打通再说。
4. 五大赛道的入门路线:第一站Web,顺手把Crypto和Misc打基础
4.1 Web:从看懂HTTP到拿下第一个Flag
Web是五大赛道里对新手最友好的,因为反馈直接,打进去就能看到效果。第一步先看懂HTTP报文。抓一个包,你会看到一个网站的请求分四部分:请求行、请求头、空行、请求体。理解GET和POST的区别,理解200/302/404/500这些状态码在说什么。
接着分两条线走:前端线(HTML、JavaScript、Cookie)和后端线(PHP、SQL、文件操作)。不需要学得多深,能用view-source看网页源码,会看Burp里的请求,能识别一段PHP代码里的$_GET、$_POST、include就算过关。
Web题常见类型就那么几类,每个配一个靶场练习:SQL注入进sqli-labs,XSS进xss-labs,文件上传进upload-labs,RCE(远程命令执行)和文件包含可以回到DVWA和Pikachu。你不需要系统学完所有Web框架知识点,直接奔着“这一关漏洞怎么触发”去学,效率高得多。
4.2 Crypto:不是让你算数学题,而是先认编码
很多新手听到Crypto就慌,以为要学高等数论。其实入门阶段九成是编码和古典密码,真正刷到现代密码(RSA、AES)还有很长一段路。
先学会识别各种编码。aGVsbG8=这种末尾带等号的是Base64,48656C6C6F这种由0-9a-f组成的是十六进制,%68%65%6C开头的是URL编码。这类识别与翻译,直接用CyberChef或者随波逐流CTF编码工具就能做,拖进去出结果。
古典密码则重在特征辨别:凯撒密码是字母整体平移,维吉尼亚密码需要密钥,摩斯密码全由点和横组成,培根密码只有A和B两种字符。
遇到一道Crypto题,正确顺序是:先判断是什么编码,再判断是什么加密,最后才是“要不要爆破”。把前面两个判断做好,Crypto的入门题就完成了一半。
4.3 Misc:最容易拿分,也最考验细心
Misc被戏称为“脑洞侦探题”,事实上却是新手最容易拿分也最容易忽略的赛道。它的常见考法就那么几样:
- 图片隐写:看似正常的一张图,可能藏着另一个文件。用
binwalk扫描一下,用strings看看字符串,甚至用zsteg检测LSB隐写。 - 文件分离:一个文件头被改过的文件,恢复它的真实文件头,才能打开真正的线索。
- 流量分析:给你一个
pcapng抓包文件,用Wireshark打开,追踪HTTP流、过滤USB协议,找到传输的图片或密码。 - 二维码修复:三个定位角被挖掉,补上再扫,或者一张残缺的二维码用工具修复。
做Misc题的基本功,就是熟练使用Linux的file、binwalk、strings命令,配合Python脚本做数据提取。这类题对“赛场上用最少时间拿最多分”很有帮助,强烈建议和Web并行推进。
4.4 Reverse和Pwn,先建立概念再决定是否深入
这两个赛道难度陡峭,新手期不建议当主力。Reverse(逆向)要理解程序编译后的二进制结构,Pwn更要理解内存布局和系统调用。最低限度的认知可以是:
- 一个C程序编译成ELF(Linux下)或PE(Windows下),逆向就是把它还原成近似源码。
- 用Ghidra或IDA按
F5反编译,常能看到printf、scanf这类函数调用,flag往往藏在某个判断分支里。 - Pwn里最著名的“栈溢出”,一句话概括就是“往一个固定大小的杯子里倒水,水溢出来溅到旁边的地方,而旁边可能正好放着控制程序的地址”。
不是每个人都要成为Pwn手。不少队伍里Reverse和Pwn是专人负责,你完全可以先打Web、Misc、Crypto三条线,等有感觉了再回头啃二进制。
4.5 第一个月的“每天两小时”练习计划
与其东一榔头西一棒子,不如给你一张表,按表执行:
| 时间 | 学习内容 | 目标 |
|---|---|---|
| 第一周 | 搭环境,装工具,跑通DVWA | 完成DVWA的SQL注入和XSS的低级关卡 |
| 第二周 | sqli-labs前10关 | 独立手工完成注入流程 |
| 第三周 | Pikachu的XSS、CSRF、文件上传;Crypto编码识别 | 各完成80%模块;能一眼认出Base64/Hex/URL编码 |
| 第四周 | Misc基础:binwalk、strings、Wireshark;做一次平台月赛 | 独立完成两道Misc题;参加一次线上赛感受流程 |
执行这张表的关键不是“做完”,而是“复现”:每道题做完之后,合上书,从头再自己打一遍。能独立复现的题才是你的,看着答案做出来的题只是你“借来的”。
5. 第一次打比赛:报名、选题、放弃题目的时机
5.1 去哪找比赛和怎么报名
练了四周之后,第一次参赛很重要,它会给你一个直观的坐标系:原来自己处于什么水平,原来一道题能卡我这么久。
比赛信息可以从几个地方获知:国内常用的CTFHub和BUUCTF平台有赛事日历和历年题目,许多高校网络安全社团办校赛也欢迎校外人员参加,一些安全厂商会定期举办面向初学者的月赛。这些比赛的报名流程通常是:官网注册账号,赛前阅读规则,开赛后进平台看题。
第一次参赛,别选那种高手云集的国际大赛,“XX平台月赛”“高校新生赛”最适合。题目难度梯度合理,有签到题保底,赛后还有官方WriteUp(题解)。
5.2 赛场上最该把握的两个原则
- 先把Misc和Web里的签到题扫完。这类题往往就是考一个编码解码、一个文件分离、一个简单注入,十几分钟就能拿下,先把分装进口袋再说。
- 一道题卡两小时必须跳。CTF讲究投入产出比,动态得分机制下,晚交的题分值是下降的。你在一道Reverse上死磕三小时,不如回头把Web和Misc的低难度题全捞一遍。
很多新手在赛场上犯的最大错误,是跟一道Pwn题硬刚了一整场比赛。正确顺序是:先扫全部题面,把明显简单的全部结算完,再回头啃难题。一血的额外加分确实是荣誉,但第一场比赛你的目标是“有分可交”。
5.3 赛后总结:写复盘笔记比再刷十道题都重要
比赛结束不是终点,复盘才是。很多高分选手的共同习惯是:赛后第一时间去看官方WriteUp,对照自己卡住的位置,找出“是思路没想到,还是工具不会用,还是知识点压根没听说过”。
复盘笔记建议按这个格式记:
- 题目名称、赛道、难度
- 我的解题思路(分步骤写,哪怕没做出来也要写)
- 卡点位置:卡在哪一步,为什么卡住
- 参考WriteUp后的正确路径
- 沉淀知识点:这道题涉及什么漏洞、什么工具、什么命令
笔记库攒上三五十条之后,你会发现自己对题目的判断力明显提高。很多题看一眼就有直觉“这题大概考什么”,这种题感,就是靠笔记堆出来的。
6. 新手期最容易翻车的五个坑,踩过两个就赶紧回头
6.1 只收藏不落地,收藏夹里囤出一个博物馆
我见过太多人轮番收藏几十份“入门教程”,最后问的问题还是“DVWA到底在哪下载”。应对方法很简单:每次收藏一份资料,先花十分钟下载或打开,把第一个操作步骤做完再收起来。行动不落地,所有资源都是负担。
6.2 沉迷装环境,“环境党”永远到不了比赛日
配置Kali、配置Burp、配置代理、配置各种插件,每样都搞得漂漂亮亮,但一道题都没刷过。工具的作用是帮你解题,不是让你欣赏。如果你连续三天都在“调工具”而不是“做题”,请立刻删掉多余的工具,回到靶场去。
6.3 做题只求答案不求过程
复制网上的Payload打进去,看到Flag就欢呼,然后下一题。这种做法最致命——你抄了三遍答案,依然不知道这一关的漏洞原理。遇到一道题,多问自己一句:它为什么能成?如果我手写一个简化版,能写出来吗?
6.4 不会看报错信息就到处问人
“大佬,这个报错是什么意思”,这可能是新人提问区出现频率最高的一句话。其实绝大多数报错信息都在告诉你答案:端口被占用、密码不正确、权限不够、url地址写错。先自己把报错原文复制到搜索引擎搜一遍,解决不了再带着完整上下文去问,这样效率最高,也最受大佬欢迎。
6.5 一个人闷头学,不交流不看WriteUp
CTF是一项极其强调信息共享的竞赛活动。很多题目你自己想三天想不出来,但看了一眼官方WriteUp可能十分钟就明白了。这不是智商问题,是经验库太小。定期看别人写的题解、加一个活跃的CTF交流群,都是非常必要的学习方式。
我个人在实际操作中的体会是:入门CTF最怕的不是笨,而是“慢”——收集资源慢、搭建环境慢、花在路上的时间比做题还多。如果你把这篇里面的第一步落地,这个周末就把虚拟机装上,把DVWA起起来,两周后你完全可以站到第一次比赛的赛场上。工具包永远在更新,靶场永远换花样,但“看到一个入口,追根究底挖出答案”的能力,是打通所有赛道都需要的底核。先把这条路走一遍,后面的进阶自然有方向。