每次看到新手在群里问“CTF到底从哪开始学”,我都有点着急,因为这个问题我在不同场合回答过不下几十遍。同样是零基础,有人三个月能稳定做出Web方向的简单题,有人折腾半年还在装工具;差距不在天赋,而在有没有一份靠谱的资源清单和正确的上手顺序。这篇文章就是冲着这个问题来的,我把2026年目前值得看的CTF学习资源做了个汇总:从入门手册级别的基础知识框架,到各方向实战工具包,再到能真正练手的练习靶场,一条线全部串起来。不管你完全没接触过CTF,还是已经刷过一些题但卡在瓶颈期,都能在这里找到对应的那份资源。
CTF(Capture The Flag,夺旗赛)本质上是一场安全技术的解题游戏,题目里藏着flag(通常是flag{...}这种格式的字符串),选手通过各种技术手段把flag找出来提交得分。它既是网络安全从业者练手的重要方式,也是很多高校、企业选拔安全人才的重要渠道。但资源多也意味着信息杂,网上随便一搜就是几百个工具和几十个平台的推荐,没有经验的人根本分不清哪些是核心、哪些是噪音。我写这篇合集的标准只有一条:每样东西都必须是我自己用过、带人学过的,优先选那些上手快、文档全、出题活跃的资源。
1. 内容整体设计与思路拆解——先看懂CTF的“游戏规则”,再动手囤资源
1.1 赛制扫盲:你以后会遇到的几种CTF模式
很多人把CTF想成单一的比赛形式,实际接触后才发现赛制有好几种,不同赛制对选手能力的要求完全不同。最主流的是Jeopardy解题赛,题目按方向分类摆在那里,你做出一道就提交一道的flag,攻防世界、BUUCTF这种平台上的题基本都是这个模式,这也是最适合入门和日常训练的形式。AWD(Attack With Defense)攻防赛则完全不同,每个队伍会分到同样的靶机,你需要一边修复自己靶机上的漏洞防止别人打进来,一边利用漏洞去打别人的靶机拿flag,这种赛制对实操经验和综合能力要求极高,通常出现在线下赛的决赛阶段。AWDP是AWD的改良版,去掉真实对抗的强度,通过审计和补漏洞来得分,更适合检验代码审计能力。还有混合模式(Mix),常见于大型赛事,把解题、攻防、场景渗透结合起来,比赛时长可能持续8小时甚至48小时。
给新手的第一条建议:训练期不要被AWD吓到,也不要一上来就追求打线下赛。先在Jeopardy模式下积累300到500道题的量,把五大方向的常见考点都过一遍,再考虑组队打AWD。我见过不少新人第一场线下赛被AWD打懵,原因不是技术不够,而是根本不知道这种赛制下的操作节奏——那又是另一套经验了。
1.2 五大知识方向,以及一条可落地学习路线
CTF题目按知识方向通常分为五类:Web渗透、Reverse逆向工程、Pwn二进制漏洞利用、Crypto密码学、Misc杂项。理解这五个方向,相当于拿到了资源集合的索引,因为你看到任何工具或靶场,都能立刻归类知道它服务于哪个方向。
| 方向 | 核心内容 | 常见考点举例 |
|---|---|---|
| Web | 网站安全,最贴近真实业务的方向 | SQL注入、XSS、SSRF、文件上传、命令执行、反序列化 |
| Reverse | 分析程序逻辑,还原算法 | 静态分析、动态调试、脱壳、算法还原、安卓逆向 |
| Pwn | 二进制漏洞利用,最硬核的方向 | 栈溢出、堆利用、格式化字符串、ROP、沙箱逃逸 |
| Crypto | 密码学,数学基础要求较高 | 古典密码、RSA、AES、哈希长度扩展、编码解码 |
| Misc | 杂项,考验综合能力和脑洞 | 隐写、流量分析、取证、编码、二维码、音频分析 |
学习路线上我比较推荐“先宽后深”的策略。第一个月先把所有方向都碰一遍,每个方向做十几道入门题,目的是建立全局认知;之后根据兴趣和基础选一个主攻方向(比如编程能力强选Reverse或Pwn,基础一般就选Web或Misc),另外留一个辅助方向(通常是Misc,因为它几乎每场比赛都有)。具体的时间安排上,前两周先把Linux基础命令和Python语法过一遍,这两项是CTF最通用的基本功;第三周开始做Web方向最经典的SQL注入和XSS题;第二个月可以尝试Crypto的编码类题目和Misc的文件隐写题;第三个月开始系统接触Reverse和Pwn的基础题型。
2. 核心细节解析与实操要点——工具包不在多,在精和会用
2.1 先说三个“零成本”但价值最高的工具
很多新人上来就找“CTF大礼包”“万能工具合集”,我反而想先说三个不算工具的“工具”。第一个是VMware Workstation Pro虚拟机,目前个人使用已经免费,在虚拟机里装一套Kali Linux作为主力练习环境,比什么都重要。原因很现实:CTF用的很多工具天生是为Linux设计的,而且你后面做Pwn和流量分析时经常需要干净的可复现环境,直接在你日常电脑上装一堆杂七杂八的工具,环境冲突是迟早的事,虚拟机隔离一了百了。
第二个是浏览器开发者工具。F12呼出之后,Network面板能看所有请求,Sources面板能直接看前端源码和JS文件,很多Web签到题的flag就直接写在注释里或者JS文件里。这个工具不需要任何安装成本,但相当一部分新手答不出题是因为根本没意识到要打开它。
第三个是笔记工具。不管是语雀、Typora还是Notion,把做过的题的思路、用过的命令、踩过的坑分类记下来。这是一种“长期复利”的习惯,刷过三百道题之后你会发现,真正能帮你赢比赛的恰恰是你自己写的这份笔记,而不是收藏夹里吃灰的教程。
2.2 Web方向:Burp Suite 与几个搭档
Web方向最核心的工具一个是Burp Suite,它的作用本质是一个拦截代理,你的浏览器请求经过它转发到目标服务器,你可以看到请求的完整内容,还能手动修改后重新发送。Burp社区版免费功能完全够用,但新手经常卡在配置上:打开Burp后,要让浏览器流量走它提供的代理端口(默认是127.0.0.1:8080),同时还要在浏览器里安装Burp的HTTPS证书,否则抓不了加密流量。我见过太多新人倒在证书这一步,这里其实只要你把Burp生成的CA证书导出,然后在浏览器设置里导入并信任它就没问题了;但要注意,导入后如果不关闭代理,普通上网会报错,所以平时记得把系统代理关掉,做题时再打开。
配合Burp的还有几个高频工具:sqlmap用于自动化检测和利用SQL注入漏洞,但在CTF中我更推荐手注,因为题目环境通常比较简单,手注能帮你真正理解原理;dirsearch用于扫描网站目录,很多题目的flag隐藏在备份文件或隐藏路径里;Yakit是国产的综合安全工具,界面友好,相当于Burp的补充方案,新手用它的端口扫描、目录扫描和抓包改包也挺顺手。还有浏览器插件ModHeader,修改请求头的时候不用开Burp那么重,改个Referer、X-Forwarded-For这类字段用它非常快。
2.3 Crypto方向:解码界的“瑞士军刀”与RSA全家桶
密码学方向的工具,第一梯队是CyberChef,这个由英国GCHQ开源的在线工具支持几百种编码、加密、摘要的转换,界面拖拽式操作,Base64、Hex、URL编码、凯撒密码、栅栏密码等一键解决。很多人以为CTF里的经典密码都需要写脚本,实际上大部分入门题用CyberChef就能直接解出来。第二梯队是国产的随波逐流CTF编码工具,这是一个集成了大量编码、解码、哈希计算的桌面软件,界面简单粗暴,CTF圈子里用的人不少,尤其在处理中文和一些冷门编码时表现不错。遇到替换密码类的题目,quipqiup这个在线工具可以按频率分析自动破译替换密码,比如凯撒、维吉尼亚这类古典密码的成功率非常高。
RSA是现代密码题里的绝对主角,工具方面我强烈推荐RsaCtfTool,它集合了多种已知攻击方法,只要你给足n、e、c等参数,它会自动尝试公约数攻击、低指数攻击、费马分解等常见场景。它的安装略微麻烦,依赖比较多,但一次装好以后省力很多。另外SageMath是数学计算神器,解一些需要求模逆元、计算离散对数的题目时,标准Python库做不了的计算它能直接处理。密码学方向还有一个习惯要养成:处理哈希碰撞类题目时,用hashcat配合常用字典做暴力破解,但注意别用它处理没有在线破解渠道的题目,那几乎等于浪费时间。
2.4 Misc与取证:隐写、流量和一堆“看图说话”的工具
Misc方向是整个CTF里最杂的,对应的工具也很杂。文件分离类:binwalk和foremost,题目经常把一个压缩包或图片藏在另一个图片里,用binwalk扫描一下,如果发现文件偏移量异常,直接分离提取,很多flag就这样现出原形。隐写类:strings命令能在二进制文件里直接提取可读字符串,如果flag不是特别加密,这一条命令就能扫出来;Steghide和outguess是图像和音频隐写最常用的工具,用法基本是输入密码把隐藏文件提取出来;stegsolve是图像分析工具,按颜色通道逐帧查看图片,很多简单隐写题用它在红色通道或者最低有效位就能看到隐藏信息。
流量分析类:Wireshark是最常用的工具,使用它的核心是“过滤”,纯数据包几千几万个根本不现实,你要能根据提示判断流量类型。比如题目给了个.pcap文件,你可以在显示过滤器里输入http看Web请求,输入tcp.stream eq 0看第一条TCP流的内容,或者用strings xxx.pcap | grep flag直接搜字符串。我写过一次pcap实战题,flag就藏在FTP传输的一个小文件里,当时没有Wireshark的过滤经验,翻了一晚上才找到,后来一节课的功夫把常用过滤语法学完再做同样的题,五分钟内定位。这里补充一个高频技巧:在Misc流量题里,用Python的scapy库写几十行脚本处理USB键鼠流量,或者提取特定协议的数据,通常比手动点Wireshark高效得多,所以Python基本功在Misc方向也是绝对的红利。
还有一类比较特别的题目是键盘流量分析,类似polar ctf里的keyboard系列,题目给一个USB抓包文件,你需要识别出敲击的键盘按键,还原成字符。处理思路一般是先用tshark提取HID数据段,再用专门的USB键盘映射脚本还原按键,最后根据shift、ctrl这类组合键补齐大小写。
2.5 Reverse与Pwn:从IDA到pwntools的进阶组合
逆向工程方向,核心是IDA Pro和Ghidra这两款反编译工具。IDA Pro是最经典的选择,F5插件的反编译能力确实无出其右,很多题目甚至不需要你逐行读汇编,直接把main函数F5一下就看到关键代码了;但它的正版很贵,社区版功能又受限制,所以很多人也会用NSA开源的Ghidra,功能有时候比IDA更强,内置的调试器和脚本环境也能解决大部分逆向题。x64dbg是Windows平台动态调试的利器,配合IDA做动态分析能大幅提高效率;碰到安卓逆向题,jadx和JEB是标配,前者把APK直接反编译成Java代码,后者支持更复杂的混淆分析和动态调试。
Pwn方向的核心是pwntools,它是一款Python库,用于编写漏洞利用脚本(通常称为exploit),它封装了网络连接、shellcode生成、ROP链构建等大量功能。配套工具还有checksec用来查看程序开了哪些保护机制,gdb配合PEDA/PWNDBG插件做动态调试,ROPgadget用来搜索可利用的汇编片段,one_gadget则是在特定条件下直接获得shell的利器。刚开始学Pwn时,大部分人都会被NX、PIE、ASLR这些保护机制绕晕,我的建议是先把栈溢出和格式化字符串这两个最基础的点吃透,把checksec的输出当成一个checklist:什么保护开了,对应的利用方式就要变,这个逻辑链条清楚了,后面的堆利用才有基础。
2.6 关于工具包安装的一点心得
工具不是越多越好,我见过电脑里囤了几十个工具的“收藏家”,真到做题时反而不知道该用哪个。我的习惯是:比赛环境里只装自己用熟的工具,新工具提前一天装好并用一道真题练手;装完之后把所有工具的打开方式、常见参数、典型报错记进笔记。另外很重要的一点是版本意识:很多工具依赖特定版本的Python或Java环境,比如RsaCtfTool一般需要Python 3.8以上,Ghidra需要JDK 11以上,装之前先看清依赖说明,否则报错时会浪费大量精力。如果环境实在搞不定,优先在Kali的软件源里安装(apt install),Kali官方维护的版本通常依赖已经处理好了。
3. 实操过程与核心环节实现——从第一道题到第一次实战
3.1 练习靶场资源盘点:国内篇
靶场是CTF学习里决定上限的资源,选对平台,比盲目刷题高效得多。国内几个主流平台,我一个个说我的实际使用感受。
CTFshow是目前国内综合体验最好的平民靶场之一,题目按方向分类,而且有免费的新手训练区,从最简单的“签到题”开始循序渐进,难度曲线比较友好,新人的挫败感会明显小很多。BUUCTF(北京联合大学)的题库量很大,汇集了很多历年比赛真题,并且每道题都有提交flag的入口,适合刷题量的积累;缺点是题目难度参差不齐,新手容易撞到大佬觉得简单但自己毫无头绪的题,所以看题解时要懂得跳过。攻防世界(XCTF平台)是国内知名赛事的官方平台,UI简洁,有新手练习专区,题目质量有保障,很多高校选拔也用它。PolarCTF题目风格比较年轻灵活,有些题会结合流行元素出,做起来不枯燥。NSSCTF也是口碑不错的平台,题目更新频繁,Web和Misc方向的题目数量可观。还有青少年CTF平台,名字听着低龄化,但题目设置反而对新手非常友好,whale系列的入门题把每个方向的经典考点都讲得很清楚,尤其适合初中级学习者,不只是青少年,大学生从这开始也更顺畅。
实测建议:新手阶段日常训练固定在1到2个平台就够,比如CTFshow刷基础题 + BUUCTF刷真题,不要每天换平台,平台的积分体系能给你反馈,频繁换平台反而容易失去积累感。
3.2 练习靶场资源盘点:国外篇
国外平台里最值得提的是picoCTF,由卡内基梅隆大学主办,题目按难度分级且每道题自带详细教程,是英语基础尚可的新手的天堂。PwnableKR和PwnableTW是专门的Pwn方向题库,针对二进制漏洞利用,题目经典且精炼,题目量虽然不大但每一道都能让你反复咀嚼。OverTheWire的Bandit系列是Linux命令和权限学习的入门题,虽然不完全算CTF,但对零基础学生的基本功训练价值极高。HackTheBox和TryHackMe更偏向真实的渗透测试场景,属于CTF与实战之间的桥梁,适合已经有一定基础、想从比赛走向真实业务的人;但这两个平台需要连国际网络才能访问,国内用起来延迟和稳定性可能不理想,这个问题我单独提醒一句,它们不是CTF刷题最稳定的选择,如果你网络条件不方便,完全可以在国内平台把基础打扎实。
| 平台 | 方向侧重 | 适合阶段 | 难度 |
|---|---|---|---|
| CTFshow | 综合 | 零基础入门 | 低到中 |
| BUUCTF | 综合大题库 | 入门到进阶 | 低到高 |
| 攻防世界 | 综合、赛事题 | 入门到进阶 | 中 |
| PolarCTF | Web、Misc为主 | 入门到进阶 | 低到中 |
| 青少年CTF | 综合、新手向 | 零基础入门 | 低 |
| NSSCTF | Web、Misc为主 | 入门到进阶 | 低到中 |
| picoCTF | 综合、教程型 | 零基础入门 | 低到中 |
| PwnableKR | Pwn | 进阶 | 中到高 |
| OverTheWire | Linux基础 | 零基础 | 低到中 |
3.3 把理论落地的第一课:一道签到题的完整拆解
我用一道典型的Web签到题演示一下完整思路。题目给了一个网址,打开后是一个简单的查询页面,输入id可以查询用户信息。这种输入id查询的场景,几乎百分之百是SQL注入考点,签到级别的题目一般不会有多重的绕过。我的做法是先在输入框里输入1',页面如果报错,说明输入被直接拼进了SQL语句;然后输入1' or '1'='1,如果返回了额外数据,那注入点是确定的。接下去判断字段数,输入1' order by 3 --+,如果报错说明字段数小于3;然后输入1' union select 1,2,3 --+,如果页面上出现2和3,说明这两个字段位是回显点。接下来就可以用union select 1,database(),version() --+查数据库名和版本,然后查表名、查字段名、最后把flag字段的值拖出来。这一套流程就是Web题里最经典的SQL注入万能公式,新手第一次完整走通后的收获,比看十篇教程都大。
再举一个命令执行类的例子:ctf命令执行passthru这种情况很常考。题目源码里如果有passthru()函数,说明目标服务器允许把参数直接当作系统命令执行,但通常会有过滤,比如不允许空格。绕过空格的办法有${IFS}表示空格、%09表示制表符(在某些环境下等同于空格)、或者用<重定向绕过。比如?cmd=cat${IFS}/flag这种payload,就是把cat命令和路径拼起来执行,最终读出服务器上的flag文件。这类题的关键是识别过滤规则:过滤了什么关键字,就用拼接、编码或者变量替换绕过去,核心思路是“不直接写危险字符串,而是让服务器在运行时拼出危险字符串”。
Misc方向也拿一道典型的图片隐写题说明。题目给了一张普通的风景图,打开看不出异常。第一步用strings 图片.jpg | grep -i flag看有没有隐藏字符串;没有的话用binwalk 图片.jpg扫描,如果提示有多个文件,直接binwalk -e 图片.jpg导出分离,里面往往藏着一个压缩包;解压如果提示需要密码,就再结合题目描述里的提示,可能是“弱密码”“纯数字”“作者生日”这类方向,用字典工具爆破就行。整个过程没有高深数学,就是细致的检索和分离,这也是Misc最大的特点——它考的是你在一个杂乱信息环境里找线索的能力。
3.4 AWD实战的首次体验要点
当你刷题积累到一定程度,参加一次AWD线下赛或平台组织的AWD训练赛,就是水到渠成的事。第一次打AWD,我建议你把重点放在防守而不是进攻上,因为防守的动作是固定的,而进攻需要临场发挥。防守的基本动作包括:备份原始文件到本地;快速修改服务器上所有默认账号密码;检查Web目录下有没有已经被别人种下的webshell;部署一份文件监控脚本,一旦文件被新增或修改就自动告警。进攻端则要提前准备好常用的payload和工具链,比如上传一句话木马后用蚁剑或冰蝎连接,打下来一台机器就抓紧读flag和批量传播。等你能熟练完成防守四件套之后,再考虑研究批量自动化利用脚本,那时候你的AWD体验会完全不一样。
4. 常见问题与排查技巧实录——新手最容易踩的坑
4.1 工具装不上、环境起不来怎么办
工具安装类问题占我收到提问的一半以上。我把高频问题直接列成速查表:
| 现象 | 最可能原因 | 解决思路 |
|---|---|---|
python命令找不到 | 未配置环境变量或Python版本不对 | 在安装目录勾选“Add to PATH”,或用python3命令 |
| pip安装包时网络超时 | 网络或镜像源问题 | 换成国内镜像源:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名 |
| Burp证书安装完仍抓不了HTTPS | 代理未开或证书未信任 | 检查系统代理是否指向Burp端口,证书要导入到“受信任的根证书颁发机构” |
| Ghidra启动报JDK路径错误 | JDK版本过高或过低 | 官方需要JDK 11到17之间,装到指定版本并在脚本里确认JAVA_HOME |
| RsaCtfTool执行报模块缺失 | 依赖不全 | 按README先跑一遍requirements.txt再使用 |
我个人的习惯是下载工具优先看项目的GitHub Release页面或官方文档,不要从第三方博客下载打包好的“绿色版”,不是怕别的,主要是第三方包里的环境变量、依赖调整过,出问题你没法查根因,还容易遇到捆绑软件的坑。基本的排错顺序永远是:读报错信息 → 搜报错关键字 → 对照官方文档 → 问社区。
4.2 做题卡住,不知道该往哪想
做题卡住太正常了,我自己也经常卡题。最常见的卡点有三个:一是题目描述里的提示信息没看全,CTF的出题人其实很善良,Hint往往就藏页面里、文件名里或者题目标题里;二是没有形成系统的检查顺序,比如Web题拿到后应该按“看源码 → 扫目录 → 抓包分析 → 测参数”的顺序走,而不是想到哪打到哪;三是没有利用好报错信息,很多时候页面上的报错不是坏事,它是在告诉你用的什么框架、哪一步出错,顺着报错反推就行。卡题超过一两个小时确实不必死磕,去搜一下题解,但搜完一定要自己重新做一遍,并且把思路沉淀进笔记里,这个动作才是刷题真正的收获。
再补充一个针对性的技巧:如果不知道flag提交格式,看平台公告或题目描述,通用的格式一般有flag{...}、ctf{...}和FLAG{...}几种,你解出的结果如果是十六进制、Base64形式,很可能还要解码一次才是真正的flag;平台的提交框右上角一般也标明了格式,仔细看比瞎试快得多。
4.3 关于“大神工具包”和付费课程的避雷
网上很多人卖“CTF万能工具包”“渗透神器合集”“某黑客工具V6.3”之类的东西,价格从几十块到几百块不等。我的态度很明确:同类工具在官方渠道基本都能免费获得,花里胡哨的打包版本不仅容易失效,还可能是木马或广告捆绑的载体;安全行业本身就讲信任,一个来历不明的可执行文件,你怎么敢往自己机器上双击?这本身就是安全意识问题。要学习工具,请认准工具的官方文档、GitHub主页以及你信得过的社区教程。付费课程方面,我不一棒子打死,但有判断标准:只讲理论不给靶场实操的不要买;承诺“包就业”“一个月成大神”的不要买;没有试听课程、口碑零散的不要买。免费的优质资源真的够你学一年,先想办法把FAQ和新手区刷完再说花钱的事。
4.4 知识积累的正确姿势:博客、书籍与题库
刷题之外,保持主动输入很重要。国内安全社区方面,先知社区和看雪论坛沉淀了海量高质量技术文章,很多真题的完整writeup都会发在那里;FreeBuf适合了解行业动态和综合攻防知识。书籍方面,《CTF特训营》和《网络攻防实战》这类书系统性较强,适合在刷题几百道后当作框架梳理的读物。还有一个反向学习法值得试试:去GitHub直接搜CTF Writeups 2026、CTF 题解 Blog这类关键词,把往年比赛的官方或选手题解放到自己的资料库里,每周末拆解一篇,训练自己从出题人的视角看问题。这种视角转换会明显加快你“从会做题到会比赛”的转变。
最后说点个人体会。我见过太多人收藏了十几个靶场、下载了几十个工具,收藏夹满满当当,却在一年后连第一道题都没做完。资源的价值是零,除非你用起来。如果你现在刚看到这篇文章,我诚恳的建议是:关掉所有“再收集一个工具就入门”的念头,打开CTFshow,注册账号,从第一道Web题开始,哪怕只做出来一道签到题,你已经走在90%的“收藏学习者”前面了。工具是死的,思路是活的,而思路只能从一道道题里磨出来。刷题之余,记得把每次卡壳的瞬间记下来,那些记录会是你后续进步最快的燃料。