CTF(Capture The Flag)中文译作:夺旗赛
CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今,已经成为全球范围网络安全圈流行的竞赛形式,2013年全球举办了超过五十场国际性CTF赛事。
而DEFCON作为CTF赛制的发源地,DEFCON CTF也成为了目前全球最高技术水平和影响力的CTF竞赛,类似于CTF赛场中的“世界杯” 。
一、赛事介绍
CTF是一种流行的信息安全竞赛形式,其英文名可直译为“夺得Flag”,也可意译为“夺旗赛”。其大致流程是,参赛团队之间通过进行攻防对抗、程序分析等形式,率先从主办方给出的比赛环境中得到一串具有一定格式的字符串或其他内容,并将其提交给主办方,从而夺得分数。为了方便称呼,我们把这样的内容称之为“Flag”。
1、解题模式(Jeopardy)
在解题模式CTF赛制中,参赛队伍可以通过互联网或者现场网络参与,这种模式的CTF竞赛与ACM编程竞赛、信息学奥赛比较类似,以解决网络安全技术挑战题目的分值和时间来排名,通常用于在线选拔赛。题目主要包含逆向、漏洞挖掘与利用、Web渗透、密码、取证、隐写、安全编程等类别。
2、攻防模式(Attack-Defense)
在攻防模式CTF赛制中,参赛队伍在网络空间互相进行攻击和防守,挖掘网络服务漏洞并攻击对手服务来得分,修补自身服务漏洞进行防御来避免丢分。攻防模式CTF赛制可以实时通过得分反映出比赛情况,最终也以得分直接分出胜负,是一种竞争激烈,具有很强观赏性和高度透明性的网络安全赛制。在这种赛制中,不仅仅是比参赛队员的智力和技术,也比体力(因为比赛一般都会持续48小时及以上),同时也比团队之间的分工配合与合作。
3、混合模式(Mix)
结合了解题模式与攻防模式的CTF赛制,比如参赛队伍通过解题可以获取一些初始分数,然后通过攻防对抗进行得分增减的零和游戏,最终以得分高低分出胜负。采用混合模式CTF赛制的典型代表如iCTF国际CTF竞赛。
三、CTF各大题型简介
PWN(溢出):PWN在黑客俚语中代表着攻破,取得权限,在CTF比赛中它代表着溢出类的题目,其中常见类型溢出漏洞有栈溢出、堆溢出。在CTF比赛中,线上比赛会有,但是比例不会太重,进入线下比赛,逆向和溢出则是战队实力的关键。主要考察参数选手漏洞挖掘和利用能力。
MISC(安全杂项):全称Miscellaneous。题目涉及流量分析、电子取证、人肉搜索、数据分析、大数据统计等等,覆盖面比较广。我们平时看到的社工类题目;给你一个流量包让你分析的题目;取证分析题目,都属于这类题目。主要考查参赛选手的各种基础综合知识,考察范围比较广。
CRYPTO(密码学):全称Cryptography。题目考察各种加解密技术,包括古典加密技术、现代加密技术甚至出题者自创加密技术。实验吧“角斗场”中,这样的题目汇集的最多。这部分主要考查参赛选手密码学相关知识点。
WEB(web类):WEB应用在今天越来越广泛,也是CTF夺旗竞赛中的主要题型,题目涉及到常见的Web漏洞,诸如注入、XSS、文件包含、代码审计、上传等漏洞。这些题目都不是简单的注入、上传题目,至少会有一层的安全过滤,需要选手想办法绕过。且Web题目是国内比较多也是大家比较喜欢的题目。因为大多数人开始安全都是从web日站开始的。
REVERSE(逆向):全称reverse。题目涉及到软件逆向、破解技术等,要求有较强的反汇编、反编译扎实功底。需要掌握汇编,堆栈、寄存器方面的知识。有好的逻辑思维能力。主要考查参赛选手的逆向分析能力。此类题目也是线下比赛的考察重点。
PPC(编程类):全称Professionally Program Coder。题目涉及到程序编写、编程算法实现。算法的逆向编写,批量处理等,有时候用编程去处理问题,会方便的多。当然PPC相比ACM来说,还是较为容易的。至于编程语言嘛,推荐使用Python来尝试。这部分主要考察选手的快速编程能力。
STEGA(隐写):全称Steganography。隐写术是我开始接触CTF觉得比较神奇的一类,知道这个东西的时候感觉好神奇啊,黑客们真是聪明。题目的Flag会隐藏到图片、音频、视频等各类数据载体中供参赛选手获取。载体就是图片、音频、视频等,可能是修改了这些载体来隐藏flag,也可能将flag隐藏在这些载体的二进制空白位置。有时候需要你侦探精神足够的强,才能发现。此类题目主要考查参赛选手的对各种隐写工具、隐写算法的熟悉程度。实验吧“角斗场”的隐写题目在我看来是比较全的,以上说到的都有涵盖。新手盆友们可以去了解下。
四、赛题情况分析
- PWN、Reserve 偏重对汇编、逆向的理解
- Crypto 偏重对数学、算法的深入学习
- Web 编程对技巧沉淀、快速搜索能力的挑战
- Misc 则更为复杂,所有与计算机安全挑战有关的都算在其中
CTF 工具集合
VSCode | 最好用 最轻量的 文本编辑器 依靠扩展可实现包括但不限于 IDE 各种功能 | 官网 | / |
VMware Workstation | 虚拟机软件 | 官网 | / |
PyCharm | Python 集成开发环境 (IDE) | 官网 | / |
IDEA | Java 集成开发环境 (IDE) | 官网 | / |
PHPStorm | PHP 集成开发环境 (IDE) | 官网 | / |
PHPStudy | Web 环境 (Apache / Nginx + FTP + MySQL) 快速部署 常用于 Web 初学阶段的一些本地 web 页面的搭建 |
官网 | / |
Docker | 容器服务 常用于 题目本地搭建测试 靶场环境,漏洞复现环境搭建等 除了静态附件题目,几乎所有的 CTF 题目都依赖 Docker |
官网 | / |
Navicat | 优秀的数据库 管理 操作 调试 以及 可视化软件 | 官网 | / |
Watt Toolkit | GitHub Discord 部分谷歌服务 页面元素 CDN 访问加速 | 不是用来让你打游戏的啊喂 (#`O′)! |
GitHub | / |
Clash |
Web | Web 安全¶
- 注意 工具包含 应用程序 和 浏览器插件
- 以下为 Web 常用工具或者说基础工具,一些漏洞利用程序将不会被归纳到这,您可以 点击此处 查看后方的 CTF 项目归档来查找更多工具。
项目名称 | Usage | 项目地址 | 使用文档 | 其他 |
---|---|---|---|---|
hackbar | 浏览器插件,能够在页面上直接完成 请求 / 响应内容编辑,完成各种包括但是不限于伪造的工作。 | 谷歌商店 GitHub |
/ | / |
Proxy SwitchyOmega | 代理管理软件,方便一个浏览器多个代理端口的切换。 | GitHub | / | / |
Wappalyzer | 页面技术识别软件,方便快速定位页面的框架技术等信息 | 官网 | / | / |
Burp Suite | 代理抓包软件,用于 Web 应用程序的渗透测试和攻击 | 官网 | / | / |
Antsword | 开源 Webshell 管理工具 | GitHub | / | / |
dirsearch | 目录扫描工具 | GitHub | / | / |
SQLMap | 自动化的 SQL 注入利用工具 | GitHub | / | / |
JD-GUI | Jar 包反编译工具 | GitHub | / | / |
Ysoserial | Java 反序列漏洞利用工具 | GitHub | / | / |
🕸 MISC | 杂项¶
❆ 基础工具¶
- 基础语言 | 模块
项目名称 | Usage | 项目地址 | 文档 |
---|---|---|---|
Python | MISC 方向中用途最广的语言。 | 官网 | / |
- 编码 / 解码 / 解密 工具
项目名称 | Usage | 项目地址 | 文档 |
---|---|---|---|
CyberChef | 近乎全能的编码解码工具。 | 官网 国内中文镜像站 |
/ |
Ciphey | 自动化解密工具。 | GitHub | |
CTFCrackTools | 国内首个 CTF 工具框架 , 内涵多个主流密码加解密,支持添加支持 Python 编写的插件。 | GitHub | / |
- 文本 / Hex 编辑 | 文件工具
项目名称 | Usage | 项目地址 | 文档 |
---|---|---|---|
010 Editor | 专业的文本编辑器和 16 进制编辑器,可通过加载模块脚本,解析文件结构。 | 官网 | / |
lmHex | 开源的 16 进制编辑器。 | GitHub | |
WinHex | 16 进制编辑器为核心的数据处理软件。 | 官网 | / |
Binwalk | 可识别文件分离提取工具,常用于从文件中提取隐写到其中的其他文件。 | GitHub | / |
Foremost | 用于提取一个文件中包含的多个文件。 | / | / |
- 隐写工具 | 图像 / 音频
项目名称 | Usage | 项目地址 | 文档 |
---|---|---|---|
Qrazybox | 二维码分析和恢复 | GitHub Usagepage |
|
QR Research | 专业的二维码扫描识别软件,支持多个纠错等级,掩码选项 (已停止维护)。 | / | / |
UleadGIFAnimator | 高级 GIF 编辑器 | / | 吾爱论坛 |
----- 图像类 | |||
Stegsolve | 图像分析工具。 | GitHub | / |
TweakPNG | 用于检查和修改 PNG 图像文件 |类似于 010 的 Png Template 功能 | 官网 | / |
BlindWaterMark(python) | 基于 python 的图像盲水印 | GitHub | / |
BlindWatermark(java) | 基于 java 的图像盲水印 | GitHub | / |
WaterMark(隐藏水印) | 图像隐写工具,在频域添加数字水印 | / | 吾爱论坛 |
WaterMarkH | 单图盲水印 (频域隐写) 工具 | / | / |
zsteg | PNG 和 BMP 图片隐写 | GitHub | / |
StegoVeritas | 隐写工具 | GitHub | / |
Stegdetect | 检测 jpeg 图像隐写工具,搭配 stegbreak 食用更佳 | GitHub | / |
----- 音频类 | |||
Steghide | 将文件隐藏到 ** 图片或音频 ** 中的工具 | 官网 | / |
Audacity | 多轨音频处理软件。 | GitHub | / |
Mp3stego | 音频隐写提取工具 | 官网 | / |
Silenteye | 音频 / 图像隐写工具 | 官网 | / |
DeepSound | 可以将文件加密保存到一段声音文件中 | 官网 | / |
Mp3tag | 音频文件元资料编辑器 | 官网 | / |
- 取证工具
项目名称 | Usage | 项目地址 | 文档 |
---|---|---|---|
Forensics-Wiki | 取证综合资料库 | 官网 | / |
----- 密码爆破 | |||
ZipCenOp | 伪加密加 / 解密工具 | GitHub | / |
ARCHPR | 压缩文件密码暴力破解工具。 | / | / |
Ziperello | zip 压缩包密码恢复软件。 | / | / |
Aopr | Office 文件密码暴力破解工具。 | / | / |
Passware Kit Forensic | 十分强大的解密工具,各类文件 / 磁盘密码爆破,密钥搜索等 | / | - 依依的汉化包 - 汉化版 |
Hashcat | 高性能,GPU/CPU 兼容的本地密码破解,支持多种不同格式 | GitHub | / |
John the Ripper | 简单易用的离线破解 | GitHub | / |
Hydra | 远程或在线密码的并行暴力破解。 | GitHub | / |
----- 流量分析 | |||
Wireshark | 流量分析取证软件。 | 官网 | / |
----- 内存 磁盘 取证 | |||
Volatility | 内存分析取证软件。 | 官网 GitHub |
/ |
MemProcFS | 新型内存取证框架 | GitHub | / |
NtfsStreamsEditor | NTFS 流分析 | 官网 | / |
R-Studio | 内存取证 tick+ 磁盘文件恢复分析 | 官网 | / |
AutoPsy | 用来分析磁盘映像和恢复文件的开源取证工具 | 官网 | / |
RegistryExplorer | 注册表文件分析器 | 官网 | / |
PowerToy | 注册表文件分析器 | GitHub | / |
❆ 解题工具¶
⚠请不要过分依赖下面工具!!!
-
MISC 是一个对编程能力要求比较高的方向,不过大多数考点的固定衍生出比较多的 " 轮子",当然轮子减少手动操作,确实是好东西,但是容易产生一些弊端,因为跳过了手动操作所以不懂原理也能梭题目,可能会导致选手略过本来应该学的原理,手动会做之后再碰到了用工具减少操作是完全没问题的,即便没有这些整合工具,用现成脚本说到底本质也是一样的。
使用工具获取便利的同时 请不要忽略对原理的学习!
项目名称 | Usage | 相关地址 |
---|---|---|
随波逐流 | 离线加密解密,字符编码进行转换,文件隐写查看等多项功能。 | 官网 |
PuzzleSolver | MISC 综合解题工具,由 Byxs20 开发。 | 神秘数字 |
❆ 开源脚本¶
🔔MISC 是一个十分注重编程能力 和 脑洞 的方向,希望你能从下面的开源脚本中获得启发,也欢迎 PR 投稿你的开源脚本 x
项目名称 | 项目地址 | 项目作者 |
---|---|---|
自动爆破 PNG 图片宽高并一键修复工具 | GitHub | AabyssZG (曾哥) ) |
文件反转、倒置、导出工具 | GitHub | AabyssZG (曾哥) ) |
CRC 碰撞全自动化脚本 | GitHub | AabyssZG (曾哥) ) |
自动化内存取证 _GUI 版本 | GitHub | Tokeii0 (猫捉鱼) |
🔑 Crypto | 密码学¶
项目名称 | Usage | 项目地址 | 其它 |
---|---|---|---|
---语言 | 模块 | |||
Python | CTF 密码学中离不开的语言 x | 官网 | / |
Crypto 包 | 密码学工具库,用于在 Python 中实现各种加密、解密和哈希算法。 | GitHub | / |
gmpy2 包 | 包含了许多常用的数论函数和算法,适配各种大整数情况,算法效率高于原生库。 | GitHub | / |
numpy 包 | 基于 C 代码实现了底层数据结构和计算函数优化,适用于处理大型数据集和高性能计算,在密码学中常用于矩阵类运算。 | GitHub 官网 |
/ |
---应用程序 | |||
Sagemath | 开源的数学软件系统 , 整合了许多开源 Python 包。 | 官网 GitHub |
Sage 中文文档 |
Yafu | 本地的因数分解程序 | 官网 | / |
Factordb | 在线的因数分解网站 | 官网 | / |
z3 | 开源的约束求解器,针对约束求解题型 | GitHub | / |
💫 Reverse | 逆向¶
基础工具¶
项目名称 | Usage | 项目地址 | 其他 |
---|---|---|---|
微步沙箱 | 文件敏感操作检查 | UsagePage | / |
Binaryai | 基于开源项目代码匹配度在线反编译工具 | UsagePage | / |
IDA | 最常用的静态逆向工具 | 官网 | ida pro 权威指南 |
Ghidra | 开源的静态逆向工具,和 IDA 作用相同 | 官网 | / |
Ollydbg | 同为反汇编调试器 (官方已经停止维护) | 官网 | / |
x64dbg / x32dbg | 在 windows 上使用的开源 x64 / x32 调试器 | 官网 | / |
DIE | 查壳工具,拿到程序第一件事就是分析文件类型,是否有壳 | GitHub | GitHub |
Exeinfope | 同为查壳工具 | 官网 | / |
Cheat Engine | 对程序的内存数据进行扫描和调试。 | 官网 | / |
GDB | 一般用于 ELF 的动态调试,配合插件 (如 pwngdb,gdb-peda) 使用更佳 | 使用包管理工具安装 | Sourceware |
z3 | 开源的约束求解器,针对约束求解题型 | GitHub | / |
dnSpy | 强大的 .NET 调试、修改和反编译的工具 (已停止维护) | GitHub | / |
----Java 反编译 | |||
JADX | 开源 更好的代码可读性 自动恢复丢失的类和方法、变量和方法名称、可以将反编译结果导出为 Eclipse 或 IDEA 项目 | GitHub | / |
JD-GUI | 更好的代码可读性 可导出为 Java 文件或 Jar 包 | GitHub | / |
JEB | 支持 wasm 可交叉引用、可看字节码、反编译结果纯粹 | 官网 | / |
GDA | 支持 apk, dex, odex, oat, jar, class, aar 文件的反编译, 支持 python 及 java 脚本自动化分析 | 官网 | / |
Fernflower | IDEA 采用的反编译工具 , 支持 Jar 包反编译。 | GitHub | / |
----Python 反编译 | |||
pycdc | pyc 反编译 , 对高版本有不错兼容性。 | GitHub | / |
Unpy2exe | 对 py2exe 打包的 python 程序提取字节码文件 (.pyc)。 | GitHub | / |
Pyinstxtractor | 对 pyInstaller 打包的 python 程序提取字节码文件 (.pyc)。 | GitHub | / |
[Python]uncompyle | 用于对 Python 字节码文件 (.pyc) 的反汇编,将其变成 python 源代码。 | 官网 | / |
💥 PWN | 二进制¶
项目名称 | Usage | 项目地址 | 其他 |
---|---|---|---|
GDB | 一般用于 ELF 的动态调试,配合插件 (如 pwngdb,gdb-peda) 使用更佳。 | Sourceware | / |
Pwntools | 用于编写 EXP。 | GitHub | / |
Pwncli | 一款简单、易用的 pwn 题调试与攻击工具,帮助你快速编写 pwn 题攻击脚本,并实现本地调试和远程攻击的便捷切换,提高你在 CTF 比赛中调试 pwn 题脚本的速度与效率。 |
GitHub | / |
Checksec | 查看二进制文件开启了哪些保护机制。 | GitHub | / |
ROPgadget | 编写 ROP 的 EXP 时需要用到,可以帮助你寻找合适的 gadgets。 | GitHub | / |
objdump | 反汇编工具,查看文件的一些表信息,如 got 表。 | / | / |
radare2 | UNIX-like reverse engineering framework and command-line toolset. | GitHub | / |
windbg | Window 内核模式和用户模式代码调试。 | Microsoft Learn | / |
🛡 AWD / AWDP¶
项目名称 | Usage | 项目地址 | 其他 |
---|---|---|---|
MISC | 杂项
信息收集
编码扩展
文件基础
压缩包
隐写技术
流量分析
内存取证
附 : 文件签名表
Web | 网络攻防
Crypto | 密码学
Reverse | 逆向工程
Pwn | 二进制安全
0. 汇编语言 (x86)
1. 栈上数组越界 & 栈溢出
1.1. ROP 入门
1.2. 常见的 ROP 技巧
2. 常见保护
x. 杂七杂八的解题技巧
AWD | 攻防模式
1. AWD 介绍
2. AWD 平台
3. 【WEB】AWD 技巧
4. 【PWN】AWD 技巧
AI | 人工智能安全
初识 AI
你的第一个神经网络
blockchain | 区块链安全
原文始发于微信公众号(龙哥网络安全):2024最全CTF入门指南、CTF夺旗赛及刷题网站(建议收藏!)
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论