CTF是近年网络安全领域绕不开的话题,网上搜“CTF学习路线”能出来几十种版本,但大部分要么太笼统,要么上来就甩一堆工具和平台链接,让人越看越慌。这篇路线图我想换种方式来讲:不堆链接、不列那种看着很厉害实则用不上的清单,而是按“新手真正会遇到什么问题”来组织,把从零基础到能独立打比赛、再到专精某一方向的完整过程拆开揉碎,告诉你每一步为什么要这么走、卡住了怎么办、哪些坑最不值得踩。不管你是刚接触安全的大学生、想转行的在职开发者,还是单纯对这个圈子好奇的路人,读完这篇都能对“CTF到底该怎么学”有一个清晰、可执行的答案。
1. CTF学习路线整体规划:先认清赛制,再谈学习
1.1 CTF到底是什么,参赛又是怎么个玩法
CTF(Capture The Flag,夺旗赛)本质上是网络安全领域的一种竞赛形式,参赛者需要在模拟出的漏洞环境中找到隐藏的“Flag”字符串,提交后得分。听起来简单,实际上一场比赛通常持续12到48小时,题目覆盖Web安全、二进制逆向、漏洞利用、密码学、杂项等多个方向,每个方向都有独立的解题思路和工具链。
我见过不少新人第一次接触CTF,第一反应是“我是不是得先学会黑客技术才能来玩”,其实恰恰相反——CTF恰恰是学习网络安全最好的训练场。因为它的题目是人为设计、有明确答案的,不像现实世界的漏洞那么不可控。你在比赛里练的每一个技巧,本质上都是在模拟真实攻击中会用到的能力,只不过换成了一个安全、合法、有反馈的沙盒环境。
CTF赛事主要分成两种形式:Jeopardy(解题模式)和A&D(攻防模式)。新人接触的大多是Jeopardy,就是上面说的那类题目列表,做出一道算一道;A&D则是每队分配完全相同的靶机,既要修自己服务器的漏洞,又要打别人服务器的漏洞,节奏快、对抗性强,适合有一定基础后再参与。还有混合赛制,比如先解题再攻防,但这种通常出现在国内外大型赛事里,新手期不用太在意。
1.2 为什么“先广后专”是最适合新手的成长路径
很多学CTF的人都有一个误区:觉得自己对哪个方向感兴趣,就一头扎进去只学那个方向。比如看到Web题好像门槛低,就直接刷Web题,刷了几个月发现密码学完全不懂,逆向也读不了汇编,遇到综合性强的题目立刻歇菜。
我的建议是,新手期(前3到6个月)一定要“先广后专”:每个方向都过一遍,搞清楚这个方向解决什么问题、需要哪些基础知识、常用的工具长什么样,然后再结合自己的兴趣和特长选择一个主攻方向,深入钻研。这和大学前两年打通识基础、后两年选专业是一个道理,因为CTF题目的边界本来就不是那么泾渭分明——一道Web题里可能藏着加密逻辑,一道逆向题里可能要用到密码学知识,一道Pwn题则要求你懂操作系统底层原理。没有广度,深度就是空中楼阁。
具体到时间配比,我建议新手期按“(3:3:2:1:1)”的比例分配精力:Web和逆向各占三成,Pwn占两成,密码学和杂项各占一成。这个比例不是玄学:Web和逆向是最容易建立成就感和基础功的方向,Pwn是CTF含金量最高的方向之一但门槛也最高,密码学和杂项则更多考验知识面和数理功底,前期只需要了解核心思路即可。
1.3 一份可执行的三个月起步路线表
光说理论不给计划就是耍流氓。我整理过一份适合零基础的三月起步表,按周推进,具体到每个阶段做什么、预期达到什么水平,你完全可以照着抄:
第1周到第2周:打地基。学习Linux基础命令和文件系统,安装并熟练使用虚拟机(推荐VirtualBox或VMware),掌握Python基础语法。目标是能在终端里自由进出目录、编辑文件、跑Python脚本,不依赖图形界面。
第3周到第4周:入门Web方向。理解HTTP协议的工作流程,学会用Burp Suite抓包改包,掌握SQL注入、XSS、文件上传等经典漏洞的原理和利用方式。建议在本地搭一个漏洞靶场练手。
第5周到第6周:入门逆向方向。用C语言写几个简单程序,用GCC编译后丢进Ghidra或IDA里反编译,对照源码和反汇编结果理解“源代码变成汇编后到底发生了什么”。学会看栈帧、函数调用约定、字符串引用。
第7周到第8周:入门Pwn方向。理解进程内存布局、栈溢出原理,学会用GDB调试程序、观察寄存器变化,能独立完成一个最简单的栈溢出利用(比如修改返回地址)。此阶段以看懂和复现Writeup为主,不要求独立挖洞。
第9周到第10周:入门密码学和杂项。古典密码(凯撒、维吉尼亚)、对称加密(AES/DES)、非对称加密(RSA)至少要明白原理和常见攻击面;隐写方向要掌握常见文件格式分析和隐写工具用法(StegSolve、binwalk等)。
第11周到第12周:参加一场新手友好型比赛并复盘。随便哪个平台的入门赛都行,关键是完完整整走一遍报名、比赛、做题、交Flag、赛后看Writeup的流程,把前两个月的知识串起来,找到自己的薄弱点。
这只是起步路线,后面每个方向的具体学习路径,我会在第四大节里逐个拆开讲。上面所有提到的工具和平台,只要打开浏览器搜索名字就能找到官网,这里不贴链接,避免链失效。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 零基础先补哪些“地基”:Linux、Python、计算机网络、二进制基础
2.1 Linux:CTF选手的默认操作系统
如果你之前只用Windows,学CTF的第一件事一定是换到Linux环境。为什么这么绝对?因为CTF比赛中至少七成以上的工具链都是为Linux设计的,而且很多题目本身就是针对Linux服务器环境——你连shell命令都敲不利索,连题目给的可执行文件都跑不起来,后面寸步难行。
有一个比较讨巧的方式是先装一个双系统,但这不推荐,驱动和引导问题会浪费大量精力。更合理的方案是直接在虚拟机里装一个Ubuntu或Kali Linux。Kali自带大量安全工具,省去很多安装编译的麻烦,但也会让你养成依赖现成工具的坏习惯。我个人建议日常练习用Ubuntu,Kali里缺哪个工具再单独装,这样你至少能搞明白工具安装在哪个目录、依赖那些库,而不是只会点开图形界面按按钮。
新手需要优先掌握的Linux知识点包括:文件权限模型(r/w/x到底怎么控制访问)、常用命令(ls、cd、cp、mv、grep、find、ps、netstat、chmod、tar、wget这些必须条件反射般熟练)、包管理器的使用(apt或yum)、进程管理、网络配置。不用专门去啃《鸟哥的Linux私房菜》这类大部头,遇到不会的命令就查man手册,多敲自然熟。
什么时候算Linux入门了?一个简单的自测标准:给你一份包含几千个文件的压缩包,你能用管道和grep在三分钟内找出里面包含特定字符串的文件并解压出来,就算基本合格。
2.2 Python:写脚本能力决定你的效率上限
编程语言方面,我不建议新手一上来就同时学好几门。CTF领域的主流语言是Python,原因是它的生态太强了:几乎每个安全方向都有对应的高质量Python库,写脚本、发HTTP请求、处理二进制数据、调用系统工具,几十行代码就能搞定。
Python学到什么程度够用?你不用理解面向对象的高级用法,但必须掌握:基础语法(列表、字典、元组、切片)、文件读写、字符串处理、正则表达式、socket编程(基于TCP/UDP收发数据)、subprocess调用外部命令、struct模块处理二进制数据。能达到“看到一个题目的需求,能自己写一个五六十行的脚本去自动化处理数据”就足够了。
这里有一个新人特别容易犯的错误:纠结用Python 2还是Python 3。现在所有主流工具和库都迁移到Python 3了,没有任何再学Python 2的理由。对Pwn方向有兴趣的话,还必须在脚本里引入pwntools这个库,它是目前做漏洞利用的事实标准,后面我详说Pwn方向时会展开。
2.3 计算机网络:不背协议,但要懂协议怎么工作
CTF题里到处是网络通信的影子——Web题里你发的每个HTTP请求、杂项题里的流量包分析、Pwn题里的远程服务交互,全都建立在网络协议之上。新人不一定需要背下OSI七层模型的每一层细节,但必须搞懂几件事:
第一,TCP/IP四层模型各层负责什么,数据从应用层到链路层是怎么被层层打包和拆包的。第二,HTTP协议的基本结构:请求行、请求头、请求体、状态码、Cookie机制。第三,DNS解析过程——你在浏览器里输入一个域名,系统是怎么一步一步把域名变成IP地址的。
理解这些有什么用?举个例子:你做Web题,需要手工构造一个畸形HTTP请求来绕过服务器的过滤逻辑,不懂请求头每个字段的含义,就只能靠猜;你分析流量包,不会区分TCP和UDP的区别、看不懂三次握手的过程,基本等于瞎看。建议花一到两周的时间,对照着Wireshark的分类包功能,把自己访问一个网站时的整个通信过程抓下来,一边抓一边看每一层协议是怎么工作的,比死记硬背教材高效得多。
2.4 二进制基础:记住,你操作的是内存不是代码
如果要选一个“零基础到精通”路上最劝退但又最值得啃的知识点,二进制基础一定排第一。它包含数据在内存中的表示(大小端序、补码、浮点格式)、C语言编译后的内存布局(栈、堆、BSS、数据段、代码段)、函数调用约定(参数怎么传、返回值怎么放)、以及汇编指令的基本读法。
很多新手一听汇编就想放弃:“这玩意儿是人看的吗?”可实际上CTF比赛里你并不需要像编译器那样去写汇编,你只需要“看懂”它。变形虫的学习方式是这样的:先写一个C程序,然后用gcc -S生成汇编文件,里面每一行指令对着Intel手册查含义,再对照C源码理解每个变量到底被放到了哪个寄存器、哪段内存里。循环个十来次,汇编就不再是天书了。
这里推荐两个上手利器:一个是Ghidra,免费开源的逆向工具,反编译出来的伪代码对新手极其友好;另一个是GDB,Linux下最经典的调试器,所有动态分析都靠它。你不需要把这两样工具的全部功能都背下来,先掌握“打开文件、下断点、单步执行、查看寄存器、查看内存地址”这五板斧就够了。
3. 五个核心方向的入门路径和实战拆解
3.1 Web方向:从“看得懂网页”到“找得到漏洞”
Web方向在CTF里通常被认为是入门比较友好的方向,因为它依赖的“前置知识”主要集中在HTTP协议和前端三件套上,而这两样对新手来说相对容易接触。但“友好”不代表“轻松”——Web方向的题面变化多端,考察的漏洞类型非常丰富,从传统的OWASP Top 10漏洞,到近年热门的SSTI(服务端模板注入)、反序列化、SSRF(服务端请求伪造)等,每一种都有独特的攻击姿势。
新手学Web方向的正确姿势是“原理驱动”而不是“题型驱动”:与其刷一百道SQL注入题然后换个环境就不知道怎么办,不如老老实实把“SQL注入为什么能绕过验证”这个原理彻底理解透。以SQL注入为例,核心原因就是程序把用户输入直接拼进了SQL语句,导致用户可以通过拼接字符改变整条语句的执行逻辑。理解了这一点,你看到任何SQL注入的变种(联合查询注入、布尔盲注、时间盲注、堆叠注入)就都能自己推导出测试方法,而不是在那里背payload。
工具方面,Burp Suite是Web方向的核心,新手至少要熟练使用其中三个模块:Proxy(抓包和改包)、Repeater(手工重放请求)、Intruder(批量注入和暴力破解)。这三个模块几乎能覆盖Web题目中90%的交互式测试需求。靶场方面,推荐从本地搭建开始练,把常见漏洞都手动触发一遍,再上线上靶场刷题。
3.2 逆向工程方向:从Hello World到算法还原
逆向工程在CTF里做的事情,简单概括就是“给你一个编译好的程序,你要在没有源码的情况下搞清楚它在做什么,并想办法让它吐出Flag”。这里要跟新手澄清一个常见的误解:逆向不是“破解软件”——CTF逆向不会涉及什么破解商业软件、绕过版权保护,题目里的大部分程序都是出题人精心设计的艺术品,整个逆向过程更像是一个解谜游戏。
新手入门逆向可以从“静态分析”和“动态分析”两条腿走路。静态分析就是不打程序,通过反汇编/反编译代码来理解程序逻辑;动态分析就是运行程序,通过调试器观察它每一步的具体行为。以经典的“输入序列号验证Flag”题目为例,静态分析你需要用Ghidra打开程序,找到main函数,追踪它调用了哪些函数、用到了哪些字符串、算法的关键逻辑是什么;动态分析你则需要用GDB在关键位置下断点,观察用户输入之后程序做了哪些比较操作,最终推算出正确的序列号。
学习逆向还有一个特别重要的习惯:写Writeup(解题报告)。因为逆向题目往往是一个完整的链条,你今天搞懂了这道题的某个算法还原步骤,不记录下来,两周后打开自己都看不懂当时的思路。不用写长篇大论,记录核心步骤、关键地址、自己卡住的地方就够了,这种记录对后续复盘的帮助远超你的想象。
3.3 Pwn方向:内存漏洞利用的硬核领域
Pwn是CTF里最“硬核”的方向之一,主要考察二进制漏洞利用,比如栈溢出、堆溢出、格式化字符串、整数溢出等。学Pwn需要的前置知识最多,除了前面提到的Linux基础和二进制基础,还要深入理解操作系统的内存管理机制、进程权限模型、ELF文件格式,以及常见的保护机制(NX、PIE、ASLR、Canary)。
但别被“硬核”二字吓退,Pwn入门其实有一条清晰的主线:栈溢出是第一个也是最重要的攻击技术。栈溢出的原理用一句通俗的话讲,就是程序在向栈上缓冲区写入数据时没有检查长度,导致输入的数据覆盖了栈上其他重要数据——包括函数的返回地址。攻击者如果能控制返回地址,就能让程序跳转到自己指定的地址去执行代码。
新手学Pwn的第一个里程碑,就是用pwntools写一个Python脚本,利用栈溢出漏洞修改程序执行流程,成功执行一个隐藏的函数。这整个过程看似复杂,实际核心就是不ět超过二十行代码:先发送一串“填充字符 + 目标地址”来覆盖返回地址,再用sendline把payload发给远程程序。当你能亲手——哪怕是照着Writeup——让程序打印出Flag的那一瞬间,前面学的所有基础都变得有意义了。
强烈建议新手直接阅读关于栈溢出的经典科普文章和相关教程,配合几个入门靶场题(比如经典的return-to-text、ret2libc系列)反复练习,达到能独立完成ret2libc级别的题目的水平,就算跨过了Pwn入门的第一道大台阶。
3.4 密码学方向:用数学思维拆解加密算法
密码学方向的题目在CTF里的地位很有意思:它不像Web和Pwn那样贴近“攻防实战”,更偏理论与推导,但基本功扎实的密码学选手在每场比赛里都是稳定得分点。很多新人觉得密码学方向的题目太难,一看到一堆RSA相关的符号就头大,实际上CTF密码学考的都是“在已经公开的加密算法中寻找实现上的弱点”,而不是让你发明新算法。
入门密码学,首先要分清楚两大类概念:古典密码和现代密码。古典密码(凯撒、维吉尼亚、Playfair等)本质上还是基于字母替换和换位,可以用穷举和频率分析解决,适合新人建立基础的密码分析思维。现代密码则分对称加密(AES、DES)和非对称加密(RSA、ECC),CTF里考得最多的是RSA——不是因为它最安全,而是因为RSA在各种实际系统中应用最广、出题人最容易在参数选择上埋坑。
拿RSA来说,最常见的出题方式就是给你一组看起来很大的公钥参数(n、e)和密文c,让你求解密文。而这些题目看似艰难,实际突破口就那么几类:n的分解是否可行(模数过小/因子过近)、e是否异常(比如e=3且明文很短)、明文是否可以直接开方、题目是否提供了多组共享同一个n的公钥。说白了,你需要的不是成为数学天才,而是熟练掌握“看到RSA题目先试哪几种攻击、用哪些工具(比如yafu、sage)”的套路。把CTF中几百道RSA的题都过一遍之后,你会发现所谓密码学竞赛题,考的就是你对常见攻击模型的熟悉程度。
3.5 杂项方向:比的不只是知识面,还有信息整合能力
杂项(Misc)是CTF里内容最杂的一个方向,可能考文件隐写、流量分析、编码解码、取证分析、社工技巧,甚至包括脑筋急转弯。很多人觉得杂项就是“碰运气”的送分题,但真正比赛里,稳定拿下杂项题往往能让你在排名上有显著优势——因为很多选手会主动放弃一时看不懂的杂项题,你把它啃下来就多拿了分。
杂项方向的入门重点是“工具链”。文件隐写方向需要会binwalk(自动分析文件里隐写了哪些文件)、StegSolve(逐帧分析图片的隐写信息)、zsteg(针对PNG/BMP的隐写分析);流量分析方向要会用Wireshark,重点是跟踪TCP流和提取传输对象;编码解码方向至少要能手写或调用工具完成Base64/ASCII/Hex/URL等常见编码的互转。
特别强调一点,杂项方向非常考验搜索能力。别小看搜索——比赛时你遇到一个加密字符串,猜了半天不知道它是什么格式,正确的做法就是直接把这段字符串丢到网上在线工具里自动识别,或者搜索它长得像哪一类特征。能把“认不出就搜”这个动作养成习惯,杂项方向的题基本就成功了一半。
4. 刷题、复盘与知识库搭建:从“会做题”到“会比赛”
4.1 比赛模式和刷题平台的正确理解
新手入门CTF时,面临的最大困惑往往是“题从哪里来”。这里先澄清一个关键点:现成的比赛不等于刷题平台。比赛通常由安全会议、CTF战队、高校或业界组织不定期举办,一年到头质量参差不齐;而刷题平台(比如很多知名CTF练习站)会提供历届赛事的题目和一些入门专题,可以按难度、方向自由筛选。大家口口相传的“XX题挺适合入门”,指的大多就是这类平台上的题目。
刷题平台的选择上,建议新手从“题型分类清晰、Writeup完整”的平台开始,因为你能在平台内直接看到他人解题思路和回顾,这对于建立学科思维特别重要。刷题的原则是一开始不必追求数量和难度,追求“完整闭环”:抽一个固定的两个小时,专心做一道题,先靠自己独立思考,卡住超过半小时再去查Writeup,看懂之后关掉Writeup,用自己的话把完整解题过程复现出来。这个过程比一天刷二十道但是全是看完题解才做出来的效率高十倍。
4.2 写Writeup是最高效的知识沉淀方式
这里的Writeup指的不是长篇大论的文章,而是在你解出一道题后,给这道题写的一段完整解题记录。别小看这个动作,它能倒逼你理清解题思路、反省卡住的原因、沉淀常用命令和工具用法。我自己的习惯是每做完一道有新收获的题,就在自己的本地笔记库里新建一篇文档,结构固定为:题目描述、我的解题过程(含截图)、卡住的地方和解决思路、用到的工具和命令、解题收获。
长期坚持下去,这份笔记会变成你最有价值的知识资产。比赛前复习自己的Writeup合集,远比临时抱佛脚刷网络文章有效。更重要的是,写Writeup的过程会逐渐训练你把模糊的“感觉”变成清晰的“步骤”,这种能力在真实比赛和未来工作中都非常珍贵。
4.3 比赛的赛前准备和赛中时间分配
第一次参加线上CTF的选手,往往会在赛前陷入两个极端:要么紧张到不知道该干嘛,要么兴奋到比赛前一晚还熬夜刷题。实际上,一次成功的比赛表现,从赛前一天就开始了。赛前一天,你应该做的是:把所有常用工具升级到最新版本(有些题目会利用旧版本工具的漏洞干扰你的分析)、提前准备好常用的一键脚本库、检查网络环境是否稳定。比赛当天,建议比开赛时间早15分钟进入平台,完整读一遍规则,确认赛题方向和提交Flag的格式。
开赛后前30分钟是黄金期,这时候各路新手一般都在摸索赛题,如果你提前准备好了环境,就可以在这段时间里快速完成“信息收集”:全部题目试跑一遍,理解每道题描述里的提示词,判断哪些是有把握的题、哪些是需要啃的硬骨头。做题顺序上,我推荐“先易后难、先琐碎后复杂”:编码解码类、隐写类题目往往几十秒就能出Flag,先拿这些稳定分,再去啃Web和逆向的大题。千万不要在一道题目上死磕超过一个半小时,因为CTF的计分规则往往有动态衰减——一血和二血拿到的分数远高于后面提交的人,你花两小时死磕一道题的时间,可能已经错失了三四道简单题的稳定得分机会。
比赛结束后的复盘同样重要:等官方Writeup发布后,把自己没做出来的题全部看一遍,标注“当时为什么不这么做”“下次遇到类似题目该怎么想”,这个过程通常比比赛本身花的时间还长,但它才是真正拉开和同龄人差距的地方。
5. 学习过程中最容易踩的坑和我的经验避雷
5.1 方向选择上的三大致命误区
误区一:“哪个方向简单我就学哪个。”实际CTF比赛是按总积分排名,不是按单项排名,你只练一个方向,等于白白放弃了整场比赛一半以上的分数。就算你只对Web感兴趣,至少也要了解其他方向的基础解题思路,否则遇到一个混合型题目就会彻底卡住。
误区二:“工具用得多就是技术厉害。”这点尤其体现在Web方向,很多新手把Burp Suite插件装了十几款,Run到哪儿都点Auto Hacker,以为工具能替自己解题。可工具本质上是将已知漏洞的检测方式自动化,它不会替你理解漏洞的成因和绕过思路。真正的技术提升,恰恰发生在你手工构造payload并看到预期结果的时刻。
误区三:“学CTF就必须数学特别好。”这句话有一定道理,但不全面。数学功底在密码学和Pwn方向确实重要,但在Web和杂项方向,线性代数和数论的用武之地非常有限。你的时间分配应当以“方向需要”为准,而不是先自我怀疑“我数学不好所以CTF不适合我”。
5.2 效率陷阱:伪学习、瞎背Writeup、收藏党
你大概率见过这种人:加了一堆CTF群聊、收藏了几百篇攻略、书单里躺着一堆安全入门教材,但一问刷了多少题,支支吾吾半天说“还没开始”。这我称之为“信息囤积型学习”,本质是用收集资料的焦虑感掩盖自己对执行的不安。解决办法只有一个:定一个每周必须完成的最低量化目标,比如“这周必须独立解出三道简单题”,把学习变成连续的动作。
另一个很容易中招的陷阱是“瞎背Writeup”:看完一篇技术文章,感觉自己全懂了,合上电脑却连个payload都不会写。破解方法是前面反复强调的“复现三遍原则”:第一遍模仿,第二遍脱稿自己写,第三遍不看参考答案、只写解题思路,直接在比赛环境里做一遍。能做到第三遍的题目,才算真正成为自己的能力。
少刷无意义的安全影视剧和短视频科普,不是反对休闲娱乐,而是因为这类内容会给你一种“我好像每天都在接触安全知识”的错觉。CTF训练和所有技能一样,没有捷径,只有高密度的反馈循环——做题、复盘、看别人的优秀思路、再做题。
5.3 我在实操中积累的几条独家技巧
聊几个大家很少写进攻略的实操细节。第一个是善用“报错信息当线索”:比赛时遇到一个程序报错看不到Flag,很多人的第一反应是沮丧,其实报错信息本身就是最关键的线索——它往往精确告诉了你Payload失败的原因,比如“Index out of range”就说明你输入的长度不对,“Access denied”暗示权限验证在哪一行。把报错当作题目的一部分,比死盯着源码猜效率高太多。
第二个是“工具版本不要盲目追求最新”:偶尔有题目恰好就是针对某个工具的已知漏洞来出的(例如针对旧版某反编译器的混淆方式),这时如果你用的是最新版工具,反倒会被新版工具的正常行为“帮了倒忙”,看不出隐藏的逻辑。所以常用逆向工具目录里,建议保留一到两个老版本的备份,以备不时之需。
第三个建议比较反直觉:入门阶段一定要多参加比赛,哪怕你只有解一两道题的水平。因为比赛的节奏和平时刷题完全不同——现场有时间压力、有其他队伍的干扰、有动态计分的心理博弈,这些体验是任何刷题平台都给不了的。你第一次比赛的表现大概率惨不忍睹,但没关系,它给你提供的“真实比赛是什么样”的感知,比你自己埋头学两个月都宝贵。
5.4 常见卡点和问题速查表
自己学习过程中遇到的小问题,一个个上网查很浪费时间,这里列一个高频问题速查表,你可以当作参考来排除故障:
| 典型问题 | 可能原因 | 排查思路 |
|---|---|---|
| 本地Python脚本无法连接远程靶机 | 端口没开放 / 防火墙拦截 | 先本机测试端口通不通,再看题目给的连接地址是否少了端口 |
| 在Ghidra里看不到字符串 | 用错了数据格式 / 代码被加壳 | 先检查文件类型,CFF Explorer查看有没有壳,有壳先脱壳再分析 |
| 用Burp Suite拦截不到HTTPS流量 | 证书未信任 | 安装Burp的CA证书到系统信任库 |
| 解析了flag但提交总失败 | Flag格式大小写问题 | CTF的Flag通常有固定前缀,比如flag{},注意区分大小写和花括号 |
| 用pwntools发payload程序跑到一半崩了 | 覆盖长度算错 | 返回地址前面的填充字节数量需要精确计算,用pattern工具生成测试序列 |
| 做隐写题binwalk出了文件但打不开 | 偏移或损坏 | 用dd命令按偏移截取再修复文件头/尾 |
| 存了Writeup但下次还是不会做 | 没做脱稿复现 | 隔3天重做一遍,只凭记忆写解法 |
| 比赛提交Flag没有得分 | 可能是动态计的分数低于当前阈值 | 确认是否超过题目允许的最多提交次数,检查是否有提交冷却时间 |
这张表当然不可能覆盖所有问题,但可以作为你遇到报错时的第一反应:别慌,把报错信息读完整,然后把你操作的前后过程重新理一遍,七成的问题都能排查明白。剩下三成,再上网按报错关键词搜索,基本都能找到答案。
CTF是一条越走越宽的路,初期可能觉得每个方向都难、每个工具都不会用、每次比赛都被按在地上摩擦。我自己的体会是,前三个月的痛苦期是最难熬的,但只要你坚持“每周解一道题+写一篇Writeup”这个最低节奏,半年后再回头看,你会惊讶于自己已经能独立解题、能看懂往年大赛的Writeup、甚至能在小型比赛中拿到一点名次。遇到瓶颈千万别自己憋着,加入一些讨论群组、多看优秀选手的解题报告,问问题不丢人,丢掉解题的快乐才可惜。祝你也能在这条路上找到属于自己的节奏。
