ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

CTF夺旗赛常用工具清单:从Web到Pwn的实战装备指南

CTF夺旗赛常用工具清单:从Web到Pwn的实战装备指南 如果你是从零开始接触CTF或者已经打过几场线上赛正被琳琅满目的工具搞得头大那这篇清单就是给你准备的。我打了几年CTF从大一被Web题打到怀疑人生到现在能在自己的技能树体系里快速分配选手角色最大的感受是CTF打得好不好很大程度取决于你的工具链顺不顺。不是工具越多越强而是每类题你都知道该立刻掏出哪个家伙、怎么配置、怎么排查问题。这篇文章我按Web、密码学、杂项、逆向、Pwn、环境与技能树几个维度整理每一类都尽量讲清是“干什么用”“什么时候上”“有什么坑”。文章里的每一条我都实际踩过或长期使用过你可以直接把它当成一份可复用的装备清单来收藏。1. 为什么需要一张CTF工具清单1.1 工具与方向的关系CTF虽然统一叫“夺旗赛”但内部的方向差异极大。Web题靠的是HTTP协议理解和漏洞利用密码学题靠数学推导与脚本能力杂项题靠文件分析和流量审计的细心度逆向题靠反编译与调试功底而Pwn则直接和操作系统底层的漏洞利用打交道。这就导致一个很现实的问题没有人能只用一个工具打通所有方向。哪怕是同一个方向的题目不同出题风格也会逼着你准备多套替代方案。比如同一个RSA题有时候需要分解n有时候需要低指数爆破有时候是共模攻击对应的工具和使用姿势完全不同。所以我整理清单的第一个原则是按方向组织而不是按工具名海选。你看到一份工具清单时第一步应该判断它解决的是“哪一类赛题里的哪一类问题”而不是先纠结“哪个工具最强”。工具只有放进具体场景里才有意义。1.2 选型原则——够用、快、能复现很多人收藏工具清单最大的误区是“宁滥勿缺”看见一个NYAN猫相关的图形工具就装结果电脑卡到打不了题。我的经验是三句话优先选跨平台且开箱即用的。比如CyberChef是网页版没有环境依赖Wireshark、Burp Suite基本全平台通用。比赛里环境是你自己的不是部署在生产服务器没必要折腾那种需要源码编译才能跑的工具。优先选主流程成熟的。主流程成熟意味着遇到问题时搜索社区能快速找到答案而不是看了半天文档还不知道怎么调试。优先验证可复现性。CTF题目的输入是固定的因此工具和脚本一定要保证“同一输入重复执行输出稳定”。我见过有人把一个写死路径的提取脚本当成万能工具换一道题就直接报错这就是没有养成“参数化输入”的习惯。基于这些原则下面进入正题。既然标题是“常用工具清单”我就按实际比赛里出镜率最高的顺序来讲先Web再密码学再杂项最后逆向和Pwn的环境。你也可以把这张清单当成自己搭建CTF虚拟机时的安装索引。2. Web方向夺旗快慢全看这一套2.1 Burp SuiteWeb题的主战核心Web方向里Burp Suite是当之无愧的第一梯队核心。无论是抓包分析、改包重放还是爆破枚举它都能干。社区版虽然有一些限制比如插件生态受限、部分扫描功能不可用但对CTF比赛来说完全够用。我建议把Burp的关键功能用熟Proxy模块开启拦截后浏览器里的所有HTTP请求都会先到达Burp你可以逐字节观察请求头、Cookie、参数名、路径也可以改完再放行。很多Web题的漏洞点就藏在请求头里比如自定义的XFF头、Cookie里的序列化串、奇怪的URL编码。Repeater手动重放拿到一个请求后右键Send to Repeater就能反复修改参数名、值、方法、编码方式并观察响应差异。这是SQL注入、命令执行、逻辑漏洞最常见的测试姿势。Intruder简易爆破社区版的Intruder速度有限但对付题目里设置好的四位PIN、六位验证码、字典不大的后台路径还是够用的。如果遇到需要大字典爆破的题我会直接用ffuf或wFuzz代替。日常我会在Burp里顺便配一个“隐藏高亮”的姿势在Proxy选项里把静态资源扩展名.js、.css、.png、.gif加到“不显示”列表同时把响应码不是200的请求换个颜色标出来。这样在CTF首页和应用之间来回浏览时注意力不会被大量静态资源分散真正要看的交互请求一目了然。2.2 目录扫描与信息收集Web题解不出很多时候不是漏洞难而是信息收集没做够。目录扫描是第一步我优先推荐dirsearch它内置了常用目录字典支持递归扫描、多线程、自定义扩展名命令很简单python3 dirsearch.py -u http://target.com -e php,html,txt,jsp -x 404这里-e指定扫描时要追加的扩展名-x 404直接过滤掉不存在的路径避免输出被无关结果淹没。实战中如果扫出/backup.zip、/.git/、/flag.txt这类意外文件整道题往往就迎刃而解了。ffuf则更偏灵活枚举。比如你怀疑题目里存在某个时间戳文件名可以用ffuf做基于模式和自定义字典的快速爆破配合Burp抓到的正常请求模板使用效率比Intruder高很多。关于信息收集我还强烈建议把网络搜索引擎当成第零号工具。很多CTF题的组件、API、特殊路径在互联网上有公开的源码或默认口令。遇到奇怪的路由名先搜一搜再扫目录会省下大量时间。这不算作弊因为真实Web渗透的第一步也是开源情报和信息暴露面分析CTF只是把这步放在了可控靶场里。2.3 注入与命令执行类的基本款SQL注入里sqlmap可以帮你快速确认注入点但它不是万能的。我的用法是先手工用单引号、报错语法、时间延迟确认存在注入再用sqlmap去拉库和表。纯依赖sqlmap直接打比赛会很容易被题目里的WAF、过滤逻辑或特殊字符过滤卡住最后陷入“工具没报错就不知道怎么办”的窘境。如果手工测试发现参数名和闭合方式都很明确我甚至会在比赛中直接写Python脚本配合requests库去手工抽取数据这比配置sqlmap各种tamper脚本还快。记住一个原则工具负责批量手工负责验证。命令执行是另一个高频考点。题目常见形态是给你一个命令执行接口但过滤了cat、flag、空格、分号等关键词。此时你最需要的是几套基础payload和编码姿势而不是某个图形工具用?cmd....观察回显判断是短标签还是长标签是回显还是盲注尝试passthru、system、exec、shell_exec等函数在不同语言里的行为差异因为不同框架禁用的函数集不一样过滤/时试试$IFS$9、%0a、十六进制编码路径过滤空格时试试${IFS}、$IFS、tab字符过滤关键词时试试通配符?、*和/bin/ca?这类简化写法。我在真实比赛里还遇到过一道题直接把flag字符串写进了WAF名单所有带flag的请求都会被打回但允许执行/readflag这类二进制程序。这类题的关键是理解命令执行点到底给你的权限范围到哪一层而不是死磕cat flag。2.4 文件上传、源码泄露与其他Web细分考点文件上传在CTF里考法非常多我整理过一张表基本能覆盖八成题型考法核心思路常用手段扩展名过滤尝试绕过php、php5、phtml、PhP等大小写和别名扩展名改后缀、用.htaccess、双扩展名内容检测服务端校验了文件头和PNG/JPEG魔数在图片末尾追加WebShell代码解析漏洞Nginx/Apache特定配置导致URL解析到可执行脚本上传a.jpg后访问a.jpg/x.php文件包含上传成功但不直接执行需结合本地/远程包含配合php://filter读取源码或data://写入执行存储路径猜测上传后需要找到实际目录否则无法连接扫描上传目录、观察响应中的路径回显很多新手打完上传题后最大的困惑是“明明上传成功了为什么访问/upload/shell.php没有反应”。这时第一件事是看响应头里的Server字段和解析器类型Nginx和Apache的解析差异非常大题目很少会给你直接标注“我是Apache”。源码泄露类题目也很常见。.git文件夹泄露可以用git_dumper抓取历史版本.DS_Store泄露可以用ds_store_exp解析.svn泄露则对应svn_dump。另外直接下载题目提供的网站源码压缩包是另一种常见开局这时候你手上就拥有一份完整白盒环境可以直接用IDE打开搜索flag、secret、password等关键词。还有一类PHP伪协议考点比如php://filter/convert.base64-encode/resourceindex.php配合include可以读取目标文件内容data://text/plain;base64,可以直接包含一段代码执行。这类题目本质是考察你对PHP流封装协议的理解建议把file://、php://filter、php://input、data://、phar://的语法和使用场景背熟它们是Web题里最经常出现的“免杀”和“绕过”元素。3. 密码学与杂项方向细心比直觉更重要3.1 密码题全家桶密码学期末复习最大的敌人不是数学而是“题目加密方式看不懂”。新手拿到一段密文常常不知道是Base64、十六进制、凯撒还是AES。这时候CyberChef绝对是第一选择。CyberChef的界面就是“配方”模式左边拖入操作中间传入密文右边实时输出结果。我最常用的操作组合是Magic自动识别尝试几十种常见编码和加密方式From Base64 / From Hex / From Binary处理编码类XOR Brute Force处理异或加密配合已知明文或flag头flag{可快速验证AES / DES / RSA解密模块需要注意填充模式和初始向量的填写。遇到密文先不用慌把数据丢进CyberChef后用Magic跑一遍这个操作能解决密码题里至少三成“题目没说明加密方式”的情况。RSA是密码题里的的重量级常客。如果单纯是把n分解质因数直接上factor.py或者factordb.com小素数因子几秒钟就有结果。如果n很大但公钥指数选得小可以尝试低指数攻击如果两组密文共用一个n马上想到共模攻击如果私钥指数d很小就得考虑Wiener攻击。这些攻击要手写非常痛苦所以我一律推荐RsaCtfToolgit clone https://github.com/RsaCtfTool/RsaCtfTool python3 RsaCtfTool.py --publickey pub.pem --uncipherfile flag.enc这个工具会自动尝试多种攻击模式并输出恢复后的明文或私钥。比赛时如果时间紧跑一遍它没有结果再转手动分析比上来就手写脚本科学得多。椭圆曲线、格密码、AES分组模式这类题目我建议提前安装pycryptodome、sympy、gmpy2、z3。特别说一下z3它是个约束求解器遇到那种“给了几个关系式要求x、y、z的具体值”的数论类密码题把方程写进去跑约束求解往往比用纯数学推导快得多from z3 import * x, y, z Ints(x y z) s Solver() s.add(x*y 100000) s.add(x y z 317) print(s.check(), s.model())很多2025年CTF赛题里密码部分喜欢出“混合题型”比如把密码学和逆向结合一段程序内嵌一个加密流程你需要先逆向恢复解密逻辑再跑脚本还原明文。这时候你手里如果只有密码工具没有反汇编器就很难独立完成整条链路。建议不要把密码学工具和逆向工具割裂看待它们经常联合作战。3.2 杂项题的“验尸”工具链杂项Misc是国内CTF赛题里范畴最大的方向覆盖隐写、流量、取证、社工甚至猜谜。它的核心能力就是一个细致地观察文件每一个字节并快速提取隐藏信息。我本地的杂项工具起始三件套是strings查看文件中的可打印字符串很多flag{...}就明文躺在里面file判断文件的真实类型题目经常把图片伪装成txt或者把压缩包藏进图片hexdump / 010 Editor逐字节查看文件结构重点观察文件头结尾、包含的Zip头PK、PNG的IDAT块。当你怀疑一张图片里藏了文件时直接用binwalk -e image.png它会扫描文件里是否嵌入其他文件Zip、Rar、其他图片。binwalk解出来的内容可以在_image.png.extracted目录里找到。如果扫出来一堆Zlib压缩数据还能配合foremost再做一次自动分割提取。图片隐写常见手法包括LSB隐写、JPG的DCT系数隐写、GIF帧合并、图片加色道图。最爱用的图形工具还是stegsolve它能以不同颜色通道、不同位平面逐张查看图片并支持帧遍历。比如一个PNG图片右下角有一行不可见文字用Stegsolve切到蓝色通道第0位就能看到。如果题目是两道图的叠加也可以用它的Analyse - Image Combiner做XOR叠加。音频隐写也不少见。Audacity是首选可以看波形、看频谱图。有些题目把文字藏在频谱图里人耳完全听不见用Audacity切到频谱视角一下就露馅。另外遇到摩斯电码的音频题把波形截图或标记时间间隔之后我还是建议自己写个Python小脚本来转码比肉眼盯着音频强得多。3.3 流量分析的实操路线USB流量分析是近年来Misc方向高频考点。题目给的通常是pcapng文件里面是USB键盘或鼠标的输入捕获。键盘流量每8个字节代表一次按键事件你需要把每个包里的按键码提取出来再对照HID键码表还原成字符。我整理过一个本地脚本框架import pcapng但更快捷的方式是先把原始数据提取成时间戳和键值列表再写一个简单的映射函数把0x04转成a、0x05转成b这样的映射拉通一遍。这里最大的坑是小键盘Keypad和主键盘区的键码表不一样鼠标流量还要额外分析x,y偏移和按钮状态。网络流量里的常规考点包括HTTP明文传参、DNS TXT记录外带、TCP流数据重组、TLS加密流量密钥导出。前面两种用Wireshark就能解决TLS流量则要重点看题目是否提供了sslkeylog或服务端RSA私钥在Wireshark的Edit - Preferences - Protocols - TLS里设置(Pre)-Master-Secret log filename后流量才能解密。如果你打的比赛偏“仿真环境”比如2025年冬季个人挑战赛的一些综合题流量包里还可能出现用户浏览网页、发送FTP口令、访问后台管理页面等完整攻击链。这种题目我建议用tshark把特定协议字段批量导出成文本再配合grep去过滤关键词。图形界面适合定位命令行适合批量。4. 逆向与Pwn方向跨平台的二进制工具箱4.1 静态分析从Ghidra到IDA逆向方向最重要的工具就是反汇编器/反编译器。Windows上老牌的IDA Pro功能最强但正版价格不低Ghidra是NSA开源的工具完全免费且界面现代化对CTF和学生党更友好。Ghidra最实用的功能是反编译到近似C语言你能直接看到函数的参数、返回值、局部变量分配和交叉引用。静态分析的标准开局流程用file确认二进制格式是ELF还是PE是32位还是64位用checksec看开启了哪些安全机制PIE、NX、RELRO、Stack Canary这个信息对Pwn题异常关键但对纯逆向题只影响分析深度用strings先扫一遍经常能看到usage: ./program xxx、password:这样的提示性字符串把二进制丢进Ghidra定位main函数从strcmp、memcmp、atoi等敏感调用点往回推逻辑。很多逆向入门题的加密算法是XOR或有固定密钥的RC4、AES。你在Ghidra里看到一堆异或操作的连续指令再配合strings里的密钥线索基本可以判定是XOR加密下一步就是写脚本还原。4.2 动态调试GDB、x64dbg常用姿势静态分析只能看代码形状动态调试则能观察程序在特定输入下的实际行为。Linux下用GDB加PEDA或gef插件调试体验会好很多。最常用的命令其实不多break main在main处下断点run传参并运行x/20gx $rsp查看栈内容info registers查看寄存器现场continue继续执行python扩展脚本可以用来做自动化。Windows下我一般用x64dbg调试PE程序用Process Monitor观察文件和注册表访问用dnSpy或ILSpy直接反编译.NET程序集。还要提醒一句——如果题目给了加壳提示先用upx -d脱壳UPX是最常见的外壳。遇到不认识的壳别硬调先查壳名和对应脱壳工具浪费时间不如换路线。4.3 移动端与脚本语言的逆向现在越来越多的CTF题目把逆向对象从ELF/EXE扩展到Andorid APK和Python字节码。APK逆向我固定用jadx它能把dex字节码还原成近似Java源码打开直接搜索flag、check、verify基本就能定位校验逻辑如果需要动态调试APK那就要配合模拟器里的Frida这个工具有点学习门槛但功能极强。Python题常见的形态是给了你一个pyc字节码文件原始源码被删除。PYC逆向可以用uncompyle6但有些新版本Python的pyc格式它支持不好这时就要用pycdc或decompyle3。我建议Python字节码题目不要只依赖反编译也可以直接手写一个脚本让pyc里的函数跑起来观察它的输出和行为。4.4 Pwn方向的环境与脚本Pwn是CTF所有方向里对“工具链完整性”要求最高的因为你不仅要有分析工具还要有本地调试环境和交互框架。核心工具组pwntoolsPython库提供sendline/recv/接收正则/ELF解析/ROP链构造等全套函数尤其适合远程连接题目和编写exploitchecksec快速查看二进制防护措施ROPgadget在二进制中搜索可用的gadget如pop rdi; ret用于构造ROP链one_gadget搜索libc中“一条数据就能拿到shell”的函数偏移LibcSearcher根据泄露的printf函数地址反查远程libc版本。Pwn题在本地打exploit时最痛苦的场景是“远程必须在题目环境上交互但你本地很难复现完全一致的libc”。我的经验是用Docker搭和题目一致或接近的glibc环境把题目的libc文件替换进容器然后跑exploit验证没有题目libc时先泄露一个gets/puts的地址再用LibcSearcher匹配远程服务器版本。这个方法在绝大多数题目里都能稳定逼近正确答案。另外新手往往忽略的网络协议交互问题也很重要。有些Pwn题只给你一个nc地址看起来是TCP端口但实际交互协议可能是protobuf或HTTP。这时候你直接在终端里nc是没法正常交互的必须先用Burp或自定义脚本确认协议类型。虽然这不是Pwn本身的知识点但确实每年都会卡住一批人。5. 常见问题排查与实操心得5.1 环境配置踩坑记录CTF工具安装、使用中最常见的问题是环境依赖冲突。比如pwntools在不同Python版本下行为有差异RsaCtfTool需要老版本gmpy2binwalk在部分Linux发行版上默认不带-e解压功能所需要的foremost组件。我踩过最大的坑是把一堆工具直接装到日常系统里Python版本一升级以前能用的小脚本全部报错。后来我改用的模式是虚拟机和容器隔离本地日常折腾用Kali Linux或Ubuntu虚拟机专门作为CTF工具集环境每个的重要项目比如某个比赛的复现、某个研究方向用Docker或Python虚拟环境包一层所有工具版本记录到一个requirements.txt或安装清单里方便重装复现。这个习惯能让你少奋斗一整晚。5.2 工具失效时怎么办比赛中最恐怖的不是题目难而是工具在关键时刻抽风。常见的几个典型问题和我验证过的解决方案如下现象常见原因处理办法binwalk -e解不出任何东西文件不是普通打包方式或不支持自动提取手动搜索PK头、Rar头用dd分割后单提CyberChef的Magic没有识别出正确答案密文在Magic处理之前已经编码多层手工叠加Hex解码、Gunzip、URL解码后再跑sqlmap跑不出来存在过滤或WAF或注入点需要二次验证手工构造报错注入payload确认再配置tamper脚本重跑pwntools远程连接超时题目启用了交互协议不是纯TCP回显改用socket模拟协议或先用nc验证是否返回明文指令Ghidra反编译结果逻辑混乱二进制被优化过、内联、混淆交叉引用查看汇编层逻辑或动态调试辅助确认不要迷信“某个工具一定有效”。工具只是帮你把重复劳动自动化核心判断力永远在你这边。遇到工具失效先把题目信息搜集完整再用最朴素的方式验证一遍。5.3 技能树怎么点——结合方向规划热词里有人提到“CTF技能树”和“青少年CTF”我很建议新手按方向画一张自己的技能树而不要东一榔头西一棒子。我的推荐路径是入门期先用一个方向的题建议Web或Misc打基础掌握Burp、CyberChef、binwalk、Wireshark这几个高频工具积累解题手感成长期把密码学和逆向的基础能力补上重点练Python脚本能力因为几乎所有方向的工具自动化都依赖脚本突破期选一个主攻方向深入比如Web里专门研究文件上传、命令执行同时补Pwn环境的知识稳定期定期参加线上赛复盘赛题整理属于自己的“工具卡片库”和题解模板。很多选手“看起来什么工具都有实际上哪个都不精”原因就是没有按技能树逐级解锁。工具清单的价值不在于“收藏”本身而在于明确每个工具在你的技能树上所处的位置以及你打算用它解锁哪种能力。我个人实际操作中的体会是每打完一场比赛至少花半小时复盘“哪道题卡在工具上、哪道题卡在知识上、哪道题卡在心态上”。把工具问题记录到自己的工具笔记里下次赛前翻一遍比临时抱佛脚去装新工具有效得多。这张清单你尽管收藏但更重要的是把里面的工具装进自己的CTF虚拟机并在下一场练习赛里真正用起来。
返回列表