零基础CTF入门完整指南:从赛制、工具到各方向解题思路
发布时间:2026/9/16 3:13:36 作者:尧图编辑部 阅读量:1,286

CTF这个缩写在安全圈和大学生竞赛圈里早就不是冷知识了但很多人听到“夺旗赛”第一反应还是这是什么比赛我零基础能不能玩要不要先学几年渗透测试才配报名说实话CTF确实是一座大迷宫里面塞满了Web、杂项、密码学、二进制、逆向、移动端现在还有AI方向的题目。我见过不少新人满腔热情下了几十G工具包结果打开比赛平台看到一堆奇奇怪怪的附件连从哪儿下手都不知道一周之后默默卸载了所有资料。这套零基础CTF教程想解决的问题就是“少走弯路”这四个字。它不打鸡血也不堆术语而是把CTF从比赛规则、方向分类、工具环境到每个题型的解题思路、常见坑点一步步拆开讲清楚。适合完全没接触过CTF的小白也适合学了几天还在原地打转、想重新建立体系的新手。接下来我就把这套教程里最关键的内容用一篇完整的长文给你过一遍。1. 先搞清楚CTF到底在比什么1.1 三种主流赛制怎么影响你的备赛策略CTF的比赛形式一般分成解题模式、攻防模式和混合模式。很多新人上来就刷“大佬的AWD复盘”结果完全看不懂因为AWD属于攻防模式和线上入门赛的解题模式根本不是一回事。解题模式Jeopardy是最常见的线上赛形式题目分门别类地挂在计分板上比如Web、Misc、Crypto、Pwn、Reverse每一个题目都有一个独立的flag字符串通常长成 flag{...} 或者 ctf{...} 的格式。你解出一道题就能提交拿分分数跟题目难度正相关越难分越高。新手第一场比赛打这种模式最合适因为你可以跳过不会的题目专挑自己拿手的或最简单的下手。攻防模式Attack with Defense简称AWD是线下决赛的重头戏。每个队伍会分配到一个一模一样的环境里面有若干服务你要一边保住自己服务上的flag不被别人拿走一边去攻击其他队伍的服务偷flag。这种模式拼的不只是漏洞利用还有临时修洞、应急响应、脚本自动化压力非常大。很多人打AWD的时候手都在抖因为攻防同时进行你既要想办法打别人又要防着别人打你。混合模式就更直接了一般先来一段解题模式的排位赛再进AWD决赛或者把两种模式穿插着来。对零基础来说我的建议很明确先别碰AWD安心打线上解题赛。AWD看起来热血但它建立在对常见服务、常见漏洞、Linux运维都熟悉的基础上。你连flag怎么提交都没搞清楚就去AWD大概率会在第一轮就被打崩。1.2 五大常规方向加上新冒头的AI方向CTF的出题方向长期稳定在这几个大类Web利用Web应用里的漏洞比如SQL注入、命令执行、文件包含、反序列化、SSTI模板注入。这个方向跟现实中的网站安全关系最密切也是当前题目数量最多的方向之一。Misc杂项凡是塞不进其他方向的都会往这里放。常见的是各种编码、图片隐写、流量分析、压缩包分析、社工题、甚至脑筋急转弯。对新手特别友好很多题靠工具就能出答案。Crypto密码学给出一段密文或一组参数让你还原出明文或者flag。古典密码、对称加密、非对称加密RSA绝对是大头、哈希算法都有涉及。Pwn二进制利用题目会给你一个可执行程序你需要通过漏洞拿到shell或者读文件。栈溢出、堆溢出、格式化字符串是常客。Reverse逆向工程给你一个程序或APK不能看源代码你得用反汇编、调试、静态分析手段搞清楚它的逻辑还原出flag。Mobile严格说算Reverse的一个分支专门做Andrroid/iOS应用逆向题目常以APK附件出现。最近两三年AI方向也开始出现在CTF赛题里。有的是让你分析一个黑盒模型有的是构造对抗样本让模型错判有的干脆是提示词注入题。这个方向对新手来说不用急先把Python用熟再了解一点模型输入输出的基本知识就能入门。1.3 新手第一站选Misc还是Web一个很多新手都会纠结的问题第一个深耕的方向选什么我的答案是如果你想在两三周内就体验到“拿flag”的快感从Misc入手同时配合Web的简单题。Misc题目经常只需要你装好工具、照着思路点两下就出结果比如一张图片拖进010 Editor看到了尾部的flag文本这一段经历能给你巨大的正反馈。Web入门则相对直观你发一个请求、改一个参数flag可能就藏在响应里。Pwn和Reverse入门门槛最高需要理解内存布局、汇编指令、程序的编译链接建议放到学习两周之后再碰而不是一上来就死磕栈溢出。很多新人被劝退就是因为第一天就打开了一堆Pwn题的writeup结果连寄存器、栈帧都看不懂。2. 开练之前先把系统和工具备齐2.1 CTF专用系统怎么选CTF圈子流传一句话能用工具解决的问题就不要自己造轮子。所以环境准备这件事直接决定了你的起始效率。目前主流的做法是装一个Kali Linux虚拟机或者直接用社区分享的CTF专用系统。Kali内置了大量渗透和逆向工具像是Burp Suite、Wireshark、Ghidra都有。Windows下也能做很多题比如010 Editor、IDA、Wireshark都有Windows版但很多题目默认是在Linux环境里运行的脚本和工具链在Linux下更顺手。所以我的建议是Windows做日常装一个VMware或VirtualBox跑Kali Linux做解题环境。真遇到对图形环境要求不高的比赛直接用Kali原生的工具链搞定。如果你实在不想折腾虚拟机也可以找一些社区打包好的CTF专用系统里面已经预装了常用的编码解码、隐写分析、密码破解、逆向反编译工具开箱即用。但要注意网上来源不明的系统镜像里可能有后门下载完一定要校验哈希值别图省事就直接用。2.2 必装工具清单和它们的真实用途工具不在多在于每个工具你都得知道它是干嘛的。我把一个入门级选手最该装好的工具按照题型方向整理成一张清单方向工具用途编码/解码CyberChef、随波逐流CTF编码工具自动识别和转换各种编码比如Base64、Hex、URL编码隐写分析Stegsolve、binwalk、zsteg、010 Editor查看图片通道、提取隐藏文件、分析二进制结构流量分析Wireshark抓包和分析pcapng流量文件提取HTTP对象还原文件WebBurp Suite、浏览器开发者工具、dirsearch抓包改包、目录扫描、分析请求响应密码学CyberChef、hashcat、john、openssl识别编码、爆破哈希、处理RSA参数二进制checksec、gdb、pwntools检查程序保护、动态调试、写漏洞利用脚本逆向IDA Pro、Ghidra、jadx、apktool反汇编、反编译、分析APK源码这里多嘴提一句工具本身没有“正邪”但使用场景一定要合法。在CTF比赛平台和本地靶场里随便折腾都没问题别拿去打真实目标。比赛里的规矩就是比赛的出了赛场要守法律的边界。2.3 自己搭一个动态靶场平台到底有什么用很多教程会把“CTF动态靶场平台搭建”讲得特别复杂我拆开说。所谓动态靶场简单理解就是你提交一道题系统用Docker临时起一个容器里面跑着漏洞环境你在这个独立的容器里解题。比赛里的题目大多就是这样下发的每个选手互不干扰。对个人来说搭一个本地的动态靶场平台最大的价值不是“当主办方”而是比赛结束后你能把题目环境一键复现出来反复研究。很多比赛不公开题目源码你想复盘只能自己搭建环境。用CTFd这类开源平台再配合Docker的题目封装在本地机器就能搭建出一套mini版CTF系统。搭建步骤也不复杂准备一台Ubuntu服务器或虚拟机装好Docker和Docker Compose然后部署CTFd再写几个最简单的Dockerfile把赛题封装进去。新手不需要追求题目容器自动化下发那一套高级玩法先把“把题目跑起来”这件事搞定就已经领先很多人了。3. 各方向核心题型与解题思路精讲3.1 Misc杂项题压缩包伪加密、JPEG隐写、流量分析Misc是包容性最强的方向很多题目看起来毫无头绪实际上套路都写在题目名里。下面几个是高频考点。压缩包伪加密。一道Misc题给你一个zip双击之后让你输密码但题目里根本没给密码。这时候别急着上爆破工具先怀疑“伪加密”。zip文件有个通用位标志general purpose bit flag如果第0位被置1系统就会把它当成加密文件要求输入密码但如果这个标志只是被“假装”置上了文件本身并没有加密那你只要把标志位改回0就能直接解压缩。实操上先用010 Editor打开zip找到本地文件头PK..后面的通用位标志字段如果值是09或01多半是伪加密。把对应位改成00保存后再解压。注意有的zip有多个文件头每一个都要检查。我曾经遇到过一个zip前面几个文件是伪加密最后一个文件是真加密结果很多人只改了第一个标志就走了弯路。JPEG隐写。题目给你一张图片看起来风平浪静flag可能藏在图片里。最常见的几招用strings或binwalk扫描有没有隐藏字符串或隐藏文件。binwalk能帮你分离出藏在JPEG后面的zip或其他二进制数据。用Stegsolve打开图片逐个通道查看尤其是LSB低位隐写flag可能藏在每个像素最低位的比特串里。把Red、Green、Blue的0号位数据提取出来转成ASCII经常就是flag。用exiftool看图片的元数据有些出题人偷懒直接把flag写在Comment或Artist字段里。实战中一道题往往不是一层隐写而是“图片隐写压缩包伪加密Base64编码”的连环组合。解出一层先别急着高兴看看得到的内容是不是一个能继续解包的东西。流量分析。给你一个pcap或pcapng抓包文件flag可能藏在某个HTTP请求的参数里也可能藏在DNS查询的域名里甚至在VoIP通话录音里。用Wireshark打开后先不要肉眼滚动翻包。常规操作是先看Statistics里的协议分层判断主要流量类型再用Export Objects里的HTTP导出全部传输文件如果是VoIP题直接在菜单栏找到Telephony - VoIP Calls选中通话记录播放flag就藏在录音内容里。热词里提到的“flow分析voip后是通话录音”指的就是这种题。Misc题很多时候胜在细心和工具熟练度答案就摆在那里看你能不能想到用正确工具去提取。3.2 Web题文件包含、命令执行、Git泄露Web题对新手来说非常有成就感因为你能直接看到请求和响应改一个参数就可能有新发现。文件包含是高频考点。常见代码是PHP里的 include($_GET[file]) 这样的写法你可以在file参数里传路径读取服务器上的文件。如果flag就在源码里你可以用php://filter伪协议读取文件内容比如filephp://filter/convert.base64-encode/resourceflag.php这样返回的是Base64编码的源码解码后就能看到flag。如果遇到的是日志包含、会话文件包含重点就变成“把恶意代码写进日志或Session然后包含它执行”。命令执行。漏洞出现的原因可能是代码直接拼接了用户输入到系统命令里。经典的函数有system、exec、shell_exec、passthru。出题人通常会做一些“看似死路”的过滤比如过滤掉空格、过滤掉cat、过滤掉斜杠。绕过的思路很固定空格被过滤用${IFS}、$IFS$9、或者Tab代替。cat被过滤用tac、more、less、tail、nl等替代或者把命令拼成cat。分离符被过滤试试%0a换行或者用管道符。更极端的情况直接Base64编码命令再执行比如把 echo Y2F0IGZsYWc|base64 -d|sh 传进去。热词里那条“ctf命令执行passthru”就是一个典型环境题目故意留着passthru()函数让你执行系统命令flag一般在当前目录或根目录下。遇到这种题先执行ls和find / -name flag这两个命令通常就能锁定目标。Git泄露。如果网站能够通过浏览器访问到一个/.git目录说明开发者的源代码仓库被原样部署到了线上。这时候可以用工具把源码和历史提交拉下来flag往往藏在某次commit的改动记录里。GitHack和dvcs-ripper都是老牌工具用法在GitHub主页写得很清楚。Web题的做题节奏通常是目录扫描找隐藏路径看源码找参数点尝试输入构造payload。如果你能在浏览器里看到一个登录框别急着爆破先试试万能密码再看看有没有SQL注入的可能性。3.3 密码学题先识别编码再谈算法Crypto方向看着高深大部分入门题其实在考“识别编码”。很多新人拿到一个字符串不知道它是Base64、Hex、URL编码还是凯撒加密就跑去找RSA的解法方向全错。一个非常实用的经验是把字符串丢进CyberChef的Magic功能它自动帮你尝试各种解码。另一个国产工具“随波逐流CTF编码工具”也做得很顺手集成了大量编码、哈希、古典密码的处理功能适合不想折腾太大工具链的新手。简单识别经验Base64字符集为A-Z、a-z、0-9、、/末尾可能出现号。Hex只有0-9和a-f偶尔带0x前缀。URL编码大量%xx。凯撒密码字母频率明显偏高但移位后还是字母。栅栏密码字符串按行排列后重新拼接肉眼很难直接看出来但如果是英文句子解密后非常可读。到了真正的算法题RSA是重灾区。RSA入门题常见的给法是知道两个大素数p、q以及公钥指数e求私钥d解密密文c。计算方式就是经典的模反函数用Python的gmpy2库几行搞定。如果你看到题目给了两个“看起来很随机”的大数一个叫p一个叫q多半就是RSA。3.4 二进制与逆向rip这种经典题到底怎么做“ctf二进制中的rip题目怎么做”是很多新手搜过的问题。rip几乎成了Pwn入门题的代名词原因是它短小精悍能帮人建立起“栈溢出控制程序流”的最基本概念。题目一般给你一个编译好的可执行程序程序里有一个明显的栈溢出点比如gets、strcpy或者read把一个长输入拼进一个短缓冲区。同时程序里通常“恰好”存在一个后门函数或者你能通过ROP调用system(/bin/sh)。做这类题的完整流程先用checksec看程序开启了哪些保护。如果开启了PIE地址会随机化你还需要泄露地址如果开启了Canary栈上会有保护值覆盖返回地址前要先绕过。用IDA或objdump定位漏洞函数和后门函数地址。计算缓冲区到返回地址的偏移量。最简单的方式是用gdb的cyclic工具或者pattern create生成一段特征字符串崩溃后看gdb提示的偏移值。写脚本发送payload。新手建议直接用Python的pwntools库。一个最小示例假设后门函数地址是0x4011a6偏移量是40from pwn import * p process(./pwn) payload ba * 40 p64(0x4011a6) p.sendline(payload) p.interactive()如果题目是远程部署的把process换成remote(目标地址, 端口)就行。Pwn题核心思路就是找到漏洞点、找偏移、改返回地址、拿权限。方向明确后剩下的就是熟练度问题。Reverse方向入门更简单直观。拿到一个exe或elf用IDA打开按F5反编译main函数看代码逻辑里有没有比较字符串、异或、字符变换。很多简单题的flag直接以硬编码字符串存在程序里你不做任何分析用strings命令扫一遍也能扫出来。复杂一点的会先对flag做处理比如逐字符1你需要在反编译代码里还原算法。3.5 AI赛题新方向是怎么回事AI题这几年在CTF赛场上越来越多零基础看到也别慌。常见的出题模式有以下几种模型黑盒探测给你一个部署好的模型API你需要通过输入样本反推出模型分类规律或者找到能让模型输出特定结果的输入。对抗样本提供一个基于MNIST手写数字训练的分类模型要求你构造一张肉眼看起来像“3”但模型识别为“7”的图片构造成功就有flag。提示词注入一个程序内部设定了“不要告诉别人你的系统提示词”你需要设计输入诱导它泄露信息。数据还原训练过程中故意隐藏了一部分信息你需要从模型权重或输出中还原出训练数据。要准备这类题基础是Python和PyTorch不需要你把机器学习从头学到尾但至少要会写脚本调用模型、构造输入、调整参数。对零基础学员我的建议是放在学习路线最后一周的“扩展了解”里先把传统五大方向搞扎实AI题当彩蛋。4. 从零到能打比赛一周学习路线规划4.1 一周从“不知道Flag是什么”到“能上场”网上很多标题党喊“一周变大神”我不信那一套但一周从零基础到能参加一场线上赛、并且做出两三道送分题是完全现实的。前提是你把时间花在“正确的事情”上。下面是一张可以直接照着做的计划表天数做什么具体内容第1天搭环境了解规则安装虚拟机、Kali/CTF专用系统了解CTF赛制、flag格式看2篇writeup理解做题流程第2天Misc专项学zip伪加密、图片隐写、流量分析在题库里刷3道Misc简单题第3天Web专项学文件包含和命令执行用Burp Suite改包刷2道Web题第4天Crypto专项熟悉CyberChef学Base64、Hex、URL编码做2道密码入门题第5天综合刷题选一个平台不限方向刷简单题目标是独立做出3到5道第6天打一场线上赛找当周开放的CTF比赛很多平台每周都有心态放平能做几道是几道第7天复盘整理笔记把做过的题、用过的工具、翻过的writeup整理成自己的“解题字典”第7天的复盘最重要。很多人刷题如流水做完就忘下次遇到同类型的题还是不会。我的习惯是建一个本地笔记库每个题目记录题目类型、难点、工具、关键payload、flag提交格式。到后来这个笔记就是你的“个人题库”比赛前翻一遍比临时找教程高效得多。4.2 值得常驻刷题的几个平台热词里反复出现“有哪些可以看的网站”“CTF题库”这里统一推荐几个我实际用过的平台都是公开、免费/低门槛的CTFshow题目难度梯度做得很好适合新手从入门到进阶Web和Misc的题目尤其多很多还配了官方writeup或思路提示。BUUCTF收集了大量往届比赛的公开赛题一个平台能刷很多比赛的题不用到处找资源。攻防世界老牌平台题库按方向分类清晰新手友好。青少年CTF练习平台很多初中生、高中生都在上面练题目量不小导航也对零基础比较友好。这些平台直接搜索名字就能找到。刷题时不要贪多一个方向一晚上能做透两三道题比走马观花看十道题强。4.3 线下赛、红蓝对抗选手要提前准备什么技能有些读者可能对“CTF红蓝对抗”感兴趣这通常是线下赛或大型演练的现场形式。它的核心模式就是AWD和线上解题赛完全是两种节奏。要打好AWD拼的其实是“基本功的肌肉记忆”Linux命令要熟练ls、find、netstat、ps、kill、tar备份操作靶机时要快准狠。常见Web漏洞要会快速定位和利用看到PHPT留言板类服务先检查有没有文件上传看到JSP服务先看是否命令执行。防御脚本要提前写好能不能快速给服务打patch决定了你能不能在攻防中减少扣分。流量监控要会能在被攻击时快速从日志里看到攻击者的payload反手打进对方。赛前你最好准备一个“工具箱目录”里面放好备份脚本、不死马查杀脚本、常用payload集合。AWD开局第一件事永远是备份文件很多人忙着进攻结果自己的服务被打挂直接出局。5. 实战中踩过的坑和排查思路5.1 压缩包“伪加密”导致死活解不开怎么办这种题是Misc里的送分题但翻车率极高。典型的场景是你拿到一个zip尝试用密码爆破跑了一晚上没跑出来最后发现是伪加密。排查顺序我建议固定成一条流水线先用file命令看看这个文件到底是什么格式。用binwalk分析有没有嵌套的压缩文件或者文件尾附加数据。用010 Editor打开搜索所有zip本地文件头PK逐个检查通用位标志。如果标志确认是伪加密把标志置0保存再解压。重要提示有的出题人会做“半伪加密”也就是里面某个子文件是真加密、另一个是伪加密。这时候你把所有标志都改了可能还是没法解压需要仔细区分。这类题往往会在文件名或文件结构和压缩包内容里给出提示多留意题目描述。5.2 命令执行题“我真的会谢”的几个经典死法热词里“ctf 我真的会谢”大概率是某道命令执行题给人留下的心理阴影。我总结了三个最常见的卡点过滤了cat。你以为只有cat能读文件其实tac、tail、less、more、nl都能读。多背几个替代命令不吃亏。过滤了空格。这时候可以用${IFS}代替空格但要注意不同环境支持的写法不一样。bash里可以用$IFS$9sh里有时不生效。多准备几种写法现场试。输出被重定向或者长度截断。有些题会把命令执行结果的部分内容隐藏掉你可以把结果Base64编码后传递出来或者写入一个可访问的文件再通过浏览器访问拿到。还有一个很多人忽略的点先执行id命令确认当前用户权限。如果已经是root很多后续操作都会简单很多。如果权限受限制再考虑能不能切目录、读敏感文件。5.3 流量分析题永远找不到flag的排查顺序流量分析题做不出来很多时候不是你不会工具而是你没有一个固定的排查顺序。我的流程是看流量文件大小。如果文件很大先按协议过滤掉噪音重点关注HTTP、DNS、TLS的ClientHello、FTP等和内容传输相关的协议。看有没有文件传输痕迹。Wireshark的File - Export Objects把HTTP、SMB、TFTP等对象全部导出看有没有可疑文件图片、压缩包、脚本。重点查找请求参数和响应内容里的关键字。可以用搜索功能直接搜“flag”“ctf”“password”等关键词快速定位可疑包。如果是VoIP题直接进入Telephony - VoIP Calls选中通话流播放录音。flag一般就在通话内容里注意录音可能不止一段要全部听一遍。如果流量里有明显可疑的DNS查询域名把域名拼接起来可能就是一段编码数据。我见过很多人面对着几十万条数据包手足无措精力消耗在一条条看包上效率极低。记住流量分析的目的是“找到那个特殊的包”不是“看懂所有包”。5.4 CTFshow等平台上经典题的共性套路在CTFshow、BUUCTF这类平台上刷题你会慢慢发现出题人是有“偷懒惯性”的。很多中等难度的题目都是几套基础套路的组合。题目叫“give her”或者“给她的题”多半是给你一个加密的文本和一段提示让你猜出密码。这类题的密码通常藏在提示里比如生日、手机号后几位。像“小明的生日”这种题就要你根据题目线索构造字典而不是跑通用爆破。题目名里带“粗心”字样的通常考察的是你有没有注意到文件里藏了备份文件、隐藏目录或注释。题目给了你一个奇怪的字符串先别沉迷在算法上试试直接丢进CyberChef的Magic。很多时候所谓“加密”不过是三重Base64嵌套。换种说法平台上面的题基本都是“练套路”的你在自己平台的练习量越大上正式比赛的心态就越稳。正式比赛的题可能包装得更花哨但底层思路还是这些。5.5 从“看着Writeup都懂”到“自己独立做出来”学习CTF的过程里有个分水岭从“看着别人writeup觉得好简单”到“自己拿到题静下心分析最终独立做出flag”。这个过程没有捷径只有两个笨办法一是坚持独立做题不轻易看答案卡住至少半小时再瞄思路二是把做过的题讲给别人听或者写在笔记里。你能把一道题从“题目描述”到“解题步骤”完整讲清楚才算真正吸收。我自己带过不少新人发现一个规律进步最快的人不是天赋最高的而是最愿意复盘的人。有些人一周刷了二十道题但从不总结有些人只做了五道题但每道题都写了完整的分析笔记。一个月后后者的做题速度明显更快。最后分享一个小技巧CTF入门这件事最大的门槛永远不是技术而是“你根本不知道自己卡在哪里”。所以请你从今天开始做一件事不管能不能解出题都把解题过程记录下来——你尝试了哪些思路、哪个工具报了什么错、卡了多久。这个记录会是你后续快速定位问题、查漏补缺最珍贵的资料。等你坚持刷完一百道题再回头看最开始那个连zip伪加密都搞不清的自己会发现所谓“小白变大神”从来不是一条一步登天的捷径而是一条由一个个flag串起来的、真实存在的路径。这条路你现在就可以走。