资讯动态

CTF工具包搭建指南:覆盖Web、Misc、Crypto、Reverse、Pwn五大方向

发布时间:2026/10/8 8:31:42 来源:尧图企业网站定制
简介CTF工具包.zip 面向网络安全竞赛参赛者与渗透测试初学者聚焦抓包、分析与解密三大环节帮助解决比赛中流量分析、密码破解与逆向工程等实战问题。压缩包共132个文件约84.72MB以89个txt说明文档、15个zip子工具包、11张png截图、6个exe可执行程序、4个jar工具及少量rar、7z、py脚本为主覆盖抓包分析、编码转换、进制编辑、后台扫描与密码破解等常见用途。内容预览中可见16进制编辑器、编码转换、御剑后台扫描、CTFcrack、Cknife等工具配合Wireshark、Burp Suite、John the Ripper、HashCat、IDA Pro等经典方案可支撑HTTP/HTTPS流量拦截、哈希爆破、二进制逆向与漏洞利用等典型赛题场景。目前已有2703人学习下载适合希望系统整理工具链、快速上手实战演练的选手参考。1. 从「CTF工具包.zip」说起一个压缩包里到底该装什么很多人第一次打 CTF卡住的地方不是不会解题而是环境没搭好。比赛开始十分钟别人已经在看流量包了你还在装 Python 库、配 pwntools、找 CyberChef 的离线版。所以「CTF工具包.zip」这个标题背后真正的诉求不是要一个神秘压缩包而是要一套能覆盖 Web、Misc、Crypto、Reverse、Pwn 五大方向的本地工具集合并且能在断网或低带宽的比赛环境里稳定跑起来。我见过太多人把工具包理解成「下载即用」结果解压出来几十个 exe真到比赛一个都想不起来怎么调。工具包的价值不在数量在于分类清晰、依赖可复现、每个工具都知道什么时候用。这篇文章就按这个思路把 CTF 工具包从选型、搭建、配置到避坑完整讲一遍适合刚入门的新手照着搭也适合打了几年比赛的老手对照检查自己的环境有没有短板。2. 工具包该按什么维度分类五个方向的最小可用集2.1 为什么按题型分而不是按工具类型分新手最容易犯的错是按「编程语言」「是否 GUI」来整理工具比如建一个python工具文件夹、一个exe工具文件夹。这种分法在比赛里是灾难因为你拿到题目第一反应是「这是什么题型」而不是「这题用什么语言写的」。按题型分的好处是看到题目类型直接打开对应文件夹里面的工具就是为这类题准备的。Web 题不会用到 binwalkMisc 题也不会去开 Burp。下面这张表是我自己工具包的目录结构五个方向各一个文件夹外加一个common放通用脚本。目录覆盖题型核心工具典型使用场景webWeb 漏洞利用Burp Suite、sqlmap、dirsearch、phpggc找 flag、命令执行、文件上传misc杂项与取证CyberChef、binwalk、foremost、zsteg图片隐写、流量分析、文件恢复crypto密码学CyberChef、RsaCtfTool、sage、factor.pyRSA 分解、编码转换、古典密码reverse逆向工程IDA Free、Ghidra、jadx、dnSpy反编译、脱壳、算法还原pwn二进制利用pwntools、gdbpwndbg、ROPgadget、one_gadget栈溢出、格式化字符串、堆利用这张表不是让你全装而是让你知道每个方向至少要有哪几样。比如 Crypto 方向如果只装一个 CyberChef遇到 RSA 大数分解就抓瞎反过来如果只装 RsaCtfTool 不装 CyberChef遇到 base64 套娃又要手写脚本。2.2 最小可用集的安装命令下面这套命令基于 Debian/Ubuntu 系Windows 用户可以用 WSL2 跑同一套。我一般会先建一个统一目录再按方向装依赖。# 创建工具包根目录 mkdir -p ~/ctf-kit/{web,misc,crypto,reverse,pwn,common} cd ~/ctf-kit # 通用依赖Python 环境与常用库 sudo apt update sudo apt install -y python3 python3-pip git curl wget unzip pip3 install --upgrade pip # Web 方向 pip3 install sqlmap dirsearch # Burp Suite 需要手动下载社区版放到 web/ 目录 # Misc 方向 sudo apt install -y binwalk foremost exiftool pip3 install zsteg # Crypto 方向 pip3 install pycryptodome gmpy2 sympy # sage 建议用 conda 单独装避免和系统 python 冲突 # Reverse 方向 sudo apt install -y ghidra jadx # IDA Free 和 dnSpy 手动下载 # Pwn 方向 pip3 install pwntools ropgadget one_gadget sudo apt install -y gdb # pwndbg 用 git clone 装这段脚本的关键点有三个。第一先建目录再装工具避免工具散落在系统各处比赛时找不到。第二pip 装的和 apt 装的分开pip 管 Python 库apt 管系统级二进制工具混用容易出依赖冲突。第三sage 单独用 conda因为 sage 自带的 Python 版本往往和系统 Python 不一致直接 pip 装会污染环境。参数说明pip3 install --upgrade pip这步别省很多工具要求较新的 pip 才能解析依赖binwalk和foremost都装是因为 binwalk 擅长识别嵌套文件foremost 擅长按文件头恢复两者互补。2.3 验证工具包是否可用装完不是结束要跑一遍验证。我习惯写一个check.sh每个方向挑一个命令测试。#!/bin/bash # 工具包自检脚本 echo [*] 检查 Web 工具 sqlmap --version || echo sqlmap 缺失 echo [*] 检查 Misc 工具 binwalk --help /dev/null echo binwalk OK || echo binwalk 缺失 echo [*] 检查 Crypto 工具 python3 -c from Crypto.Util.number import getPrime; print(pycryptodome OK) || echo pycryptodome 缺失 echo [*] 检查 Pwn 工具 python3 -c from pwn import *; print(pwntools OK) || echo pwntools 缺失这个脚本的逻辑是每个方向至少验证一个核心依赖能 import 或能执行。如果某个方向报缺失说明那类题你比赛时大概率会卡。注意binwalk --help用重定向丢弃输出只看返回码避免刷屏。3. 把工具包变成可复现环境Docker 与离线包两条路3.1 为什么建议用 Docker 封装本地装工具最大的问题是换机器就废。比赛可能用主办方提供的环境也可能临时借一台笔记本。Docker 的好处是把整个工具包打成镜像换机器只要docker load就能恢复。常见做法是写一个 Dockerfile基于ubuntu:22.04把上面那套安装命令固化进去。这样每次重建环境都是可复现的不会出现「上次能跑这次不行」的玄学问题。FROM ubuntu:22.04 ENV DEBIAN_FRONTENDnoninteractive RUN apt update apt install -y \ python3 python3-pip git curl wget unzip \ binwalk foremost exiftool gdb \ rm -rf /var/lib/apt/lists/* RUN pip3 install --upgrade pip \ pip3 install pwntools ropgadget pycryptodome gmpy2 sympy sqlmap dirsearch zsteg WORKDIR /ctf-kit COPY . /ctf-kit CMD [/bin/bash]逻辑说明DEBIAN_FRONTENDnoninteractive避免安装过程中弹出交互提示卡住构建rm -rf /var/lib/apt/lists/*减小镜像体积pip 和 apt 分两层 RUN利用 Docker 缓存改 pip 依赖时不用重装 apt 包。参数说明基础镜像选ubuntu:22.04而不是 latest是因为 22.04 的 Python 版本和多数 CTF 工具兼容性最好如果比赛环境是 20.04把 FROM 改掉即可其他不用动。3.2 离线包的打包与恢复有些比赛环境完全断网Docker 镜像也传不进去这时候需要离线包。思路是把 pip 依赖和 apt 依赖分别下载成 whl 和 deb放到工具包里。# 下载 pip 依赖到本地目录 mkdir -p ~/ctf-kit/offline/pip pip3 download -d ~/ctf-kit/offline/pip \ pwntools ropgadget pycryptodome gmpy2 sympy # 下载 apt 依赖 mkdir -p ~/ctf-kit/offline/deb apt-get download binwalk foremost exiftool # 离线安装时 pip3 install --no-index --find-links~/ctf-kit/offline/pip pwntools dpkg -i ~/ctf-kit/offline/deb/*.deb关键参数pip3 download -d指定下载目录--no-index --find-links表示不从网络找包只从本地目录装。apt-get download只下载不安装适合提前准备。注意 apt 依赖可能有嵌套apt-get download不会自动下依赖需要手动补或者用apt-rdepends查依赖树。3.3 工具包目录的版本管理工具包会不断更新今天装的 pwntools 和三个月后的版本行为可能不一样。我一般用 git 管理工具包目录把安装脚本、Dockerfile、自检脚本都提交进去工具本体用.gitignore排除。cd ~/ctf-kit git init cat .gitignore EOF offline/ *.whl *.deb tools/ EOF git add Dockerfile check.sh .gitignore git commit -m init ctf-kit这样做的价值是环境配置可追溯。某次比赛发现某个工具版本有问题可以回滚到上一个 commit 的安装脚本重新构建。.gitignore排除工具本体是因为二进制文件太大而且可以重新下载没必要进仓库。4. 避坑与排查工具包装完却用不起来的五个血泪经验4.1 现象pwntools 装完 import 报错No module named pwn原因通常是 pip 装到了 Python 2 的 site-packages或者系统里有多个 Python 版本pip3和python3指向不一致。解决方法是先确认版本对应关系。which python3 python3 --version which pip3 pip3 --version # 如果 pip3 对应的 python 和 python3 不一致用 python3 -m pip install pwntools用python3 -m pip而不是直接pip3能保证装到当前 python3 对应的环境里。这是最常见的翻车点尤其是系统里同时有 conda 和 apt 的 Python 时。4.2 现象binwalk 解包时提示unsquashfs not found原因是 binwalk 依赖外部工具解特定文件系统apt 装 binwalk 时不会自动装所有解包器。解决方法是补装。sudo apt install -y squashfs-tools mtd-utils这类问题的通用排查思路是看 binwalk 报错里提到的工具名手动装上。binwalk 本身只是个调度器真正解包靠的是外部命令。4.3 现象sage 和系统 Python 冲突装完 sage 后 pwntools 用不了原因是 sage 自带一套 Python 环境如果把它加进 PATH 前面系统 Python 的包就找不到了。解决方法是不要改全局 PATH用 conda 环境隔离或者用 sage 的绝对路径调用。# 不推荐把 sage 加进 PATH # export PATH/path/to/sage:$PATH # 推荐用绝对路径 /path/to/sage/sage -python solve.sage比赛时如果 Crypto 题需要 sage单独开一个终端用绝对路径跑不要污染主环境。4.4 现象Burp Suite 社区版抓不到 localhost 的包原因是浏览器和 Burp 的代理配置不匹配或者目标用了 HTTPS 但没装证书。解决方法是确认代理端口并导入 Burp 的 CA 证书。常见配置Burp 默认监听127.0.0.1:8080浏览器代理设成同样的地址和端口。HTTPS 需要在浏览器里导入 Burp 的证书访问http://burp下载 CA导入到「受信任的根证书颁发机构」。4.5 现象Docker 镜像构建到一半卡在 apt update原因是网络问题或者 apt 源不可达。解决方法是换国内源或者加超时重试。RUN sed -i s/archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list \ apt update apt install -y ...注意换源要在apt update之前且只改域名部分路径不要动。如果比赛环境有内网源优先用内网源。5. 进阶技巧让工具包在比赛里真正提速工具包装好只是第一步比赛里真正拉开差距的是调用速度。我自己的习惯是给高频操作写别名和快捷脚本减少敲命令的时间。比如 Misc 题经常要提取图片里的隐藏文件我会在~/.bashrc里加一个函数# 快速提取图片隐写 extract_img() { local img$1 echo [*] exiftool 元数据 exiftool $img echo [*] binwalk 嵌套文件 binwalk -e $img echo [*] zsteg LSB zsteg $img echo [*] foremost 恢复 foremost -i $img -o foremost_${img%.*} }这个函数的逻辑是把 Misc 图片题的常规检查一次性跑完先看元数据有没有藏信息再看有没有嵌套文件再查 LSB 隐写最后用 foremost 按文件头恢复。参数说明binwalk -e的-e表示自动提取foremost -o指定输出目录避免覆盖。另一个提速点是维护一个常用 payload 速查表。Web 题的命令执行、文件上传、PHP 反序列化payload 结构大同小异提前整理成文件比赛时直接改参数。题型速查内容存放位置命令执行空格绕过、管道符、passthru 用法web/payloads/rce.txt文件上传后缀绕过、Content-Type 伪造、.htaccessweb/payloads/upload.txtPHP 反序列化常见魔术方法链、phpggc 用法web/payloads/phpggc.txt流量分析USB 流量脚本、HTTP 对象导出misc/scripts/usb_traffic.py这张表不用背关键是比赛前过一遍知道东西在哪。我见过太多人比赛时现搜 payload浪费十几分钟。最后一个习惯是每次比赛后更新工具包。遇到新题型、新工具、新脚本当场记下来赛后补进对应目录。工具包不是一次性的是跟着比赛经历一起长的。我自己从第一次打 CTF 到现在工具包目录改了不下二十次每次翻车都是下次提速的机会。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑