CTF(Capture The Flag)一般译作“夺旗赛”,在网络安全领域中指网络安全技术人员之间进行技术竞技的一种比赛形式。 [11]通过各种攻击手法,获取服务器后寻找指定的字段,或者文件中某一个固定格式的字段,这个字段叫做Flag,其形式一般为Flag{xxxxxxxX},提交到裁判机就可以得分。
解题模式(Jeopardy)
在解题模式CTF赛制中,参赛队伍可以通过线上或者线下参与,这种模式的CTF竞赛与ACM编程竞赛、信息学奥赛比较类似,以解决网络安全技术挑战题目的分值和时间来排名,通常用于在线选拔赛。
攻防模式(Attack-Defense)
在攻防模式CTF赛制中,参赛队伍在网络空间互相进行攻击和防守,挖掘网络服务漏洞并攻击对手服务来得分,修补自身服务漏洞进行防御来避免丢分。攻防模式CTF赛制可以实时通过得分反映出比赛情况,最终也以得分直接分出胜负。
混合模式(Mix)
结合解题模式与攻防模式的CTF赛制,比如参赛队伍通过解题可以获取一些初始分数,然后通过攻防对抗进行得分增减的零和游戏,最终以得分高低分出胜负。采用混合模式CTF赛制的典型代表如iCTF国际CTF竞赛。
我们先不讨论攻防模式,因为很少有CTF竞赛初赛就是攻防模式的,一般像大型比赛的半决赛和决赛才会进行攻防模式,现在的CTF竞赛初赛都是以解题模式来进行选拔的。
意如名,很杂,考的很多,主要有以下类型,基本包含了,
图片隐写
基础隐写:LSB(最低有效位)、EXIF 信息、颜色通道分离、文件尾追加数据
文件结构:PNG(IDAT 块)、JPG(DQT/DHT 表)、GIF(帧分离、延迟时间)
进阶技巧:CRC 校验错误修复、图片大小篡改、盲水印、傅里叶变换分析
音频隐写
频谱分析:Audacity 查看波形/频谱图(如摩尔斯电码、SSTV)
LSB 隐写:WAV 文件 PCM 数据隐写
视频隐写
帧提取(ffmpeg
)、逐帧分析
隐藏字幕、时间轴信息篡改
文本隐写
空格/零宽度字符(Zero-Width Characters)
字体内嵌信息、排版特征(如字间距、行间距)
特定编码隐写:Snow
(文本末尾空格隐写)
其他文件隐写
PDF 隐写:对象流、隐藏图层、JavaScript 触发
Office 文档:宏代码、隐藏文字、OLE 对象
压缩包嵌套(套娃)、加密压缩包爆破
常见编码识别与转换
Base64/32/16、URL 编码、HTML 实体编码
Hex 编码、ASCII 编码(十进制/十六进制/八进制)
莫尔斯电码、敲击码(Tap Code)、培根密码
进制转换(二进制、八进制、十六进制)
字符替换类编码:凯撒密码、ROT13、栅栏密码、维吉尼亚密码
特殊编码体系
文字替换:猪圈密码(Pigpen)、银河字母(Galactic Alphabet)
棋盘密码(Polybius Square)、盲文(Braille)
条形码/二维码:Code128、QR Code 纠错等级修复
电报编码:中文电码、Unicode 编码(UTF-8/16/32)
编码混淆技巧
多重编码嵌套(如 Base64 套用多次)
自定义编码表(需逆向分析)
网络流量包分析
协议分析:HTTP/FTP/TCP/UDP/DNS 请求提取
关键字段:Cookie、Authorization 头、URL 参数
文件提取:从流量中还原传输的文件(如图片、压缩包)
协议漏洞利用
DNS 隧道数据隐写
ICMP 协议隐写(Ping 数据包)
USB 键盘流量捕获与解析
无线协议与蓝牙
Wi-Fi 握手包分析(aircrack-ng
)
蓝牙协议(BLE)数据嗅探
磁盘镜像分析
文件系统修复:EXT4/NTFS/FAT32 文件恢复
工具:Autopsy
、FTK Imager
、testdisk
隐藏分区、磁盘 slack 空间数据提取
内存取证
内存镜像分析(Volatility 框架)
进程列表、网络连接、注册表键值提取
恶意进程检测、DLL 注入痕迹
日志分析
Web 日志(Apache/Nginx)中的攻击痕迹
Windows 事件日志(Event Log)分析
压缩包破解
密码爆破:John the Ripper
、hashcat
字典生成:crunch
、cupp
伪加密(Zip 文件头修改)
明文攻击(已知部分文件内容)
文件修复与结构分析
文件头/尾修复(如 PNG/PDF 文件头缺失)
文件签名识别(file
命令、Hex 编辑器)
分离嵌套文件
信息搜集
图片元数据(GPS 坐标、拍摄设备)
域名Whois查询、IP归属地分析
社交媒体信息关联(如 EXIF 中的用户名)
验证码与人类交互
验证码绕过(OCR 识别、人工打码平台)
音频验证码转文本
脑洞题
时间戳转换(Unix 时间戳、Windows 时间)
条形码/二维码生成与扫描
游戏存档修改(如 save.dat
文件)
组合型题目
多步骤嵌套(如隐写+编码+流量分析)
动态交互题(需要编写脚本自动化处理)
密码学中考得较多的应该是RSA,MD5这种比较多,现在的密码学不单单只是一种密码,而是几种一起考,难度直线上涨,其他类型的也有,比较简单,一般此题目都是通过python脚本来进行解题的,像RSA的p,q一般都是几十位数的
单表替换
凯撒密码(Caesar Cipher):位移替换(ROT13为特例)
仿射密码(Affine Cipher):加密公式 E(x)=(ax+b)mod 26E(x)=(ax+b)mod26
多表替换
维吉尼亚密码(Vigenère Cipher):通过密钥循环生成多表替换
自动密钥密码(Autokey Cipher):使用明文或密钥扩展生成密钥流
栅栏密码(Rail Fence):按“之”字形排列后按行读取
列置换密码(Columnar Transposition):按密钥列顺序重排明文
矩阵置换:将明文填充至矩阵后按特定规则读取(如螺旋顺序)
培根密码(Bacon's Cipher):用两种字符(如A/B)表示5位二进制编码
摩尔斯电码(Morse Code):符号与短长音(·/−)的映射
棋盘密码(Polybius Square):5x5矩阵替换(如ADFGX密码)
分组密码
AES:ECB/CBC/CTR等模式,重点分析填充(PKCS#7)及密钥扩展
DES/3DES:Feistel结构,弱密钥与半弱密钥攻击
S盒分析:差分分析、线性分析(如S盒的差分均匀性)
流密码
RC4:密钥调度算法(KSA)与伪随机生成算法(PRGA)漏洞
LFSR(线性反馈移位寄存器):通过已知输出序列恢复初始状态
RSA
基础原理:n=p×qn=p×q, ϕ(n)=(p−1)(q−1)ϕ(n)=(p−1)(q−1), ed≡1mod ϕ(n)ed≡1modϕ(n)
常见攻击:
小模数分解(Fermat、Pollard's Rho算法)
共模攻击(相同n,不同e)
小指数攻击(低e如e=3)
Wiener攻击(d过小)
Coppersmith攻击(已知明文高位或低位)
选择密文攻击(CCA)
进阶变种:
RSA-OAEP填充、RSA签名(PSS模式)
多素数RSA(n = p*q*r)、RSA-CRT(中国剩余定理加速)
椭圆曲线密码(ECC)
椭圆曲线离散对数问题(ECDLP)
异常曲线攻击(Smart's Attack)
无效曲线攻击(无效点注入)
Diffie-Hellman密钥交换
中间人攻击(MITM)
小素数子群攻击(参数p-1含小因子)
常见哈希算法:MD5、SHA-1、SHA-256、SHA-3
攻击类型:
碰撞攻击(Birthday Attack)
长度扩展攻击(如MD5、SHA-1)
彩虹表(Rainbow Table)预计算
应用场景:HMAC、盐值(Salt)防御
CBC-MAC、HMAC
伪造攻击(如长度扩展攻击影响某些MAC实现)
模运算:逆元、欧拉定理、费马小定理
扩展欧几里得算法(求解ax + by = gcd(a,b))
中国剩余定理(CRT)
素数检测:Miller-Rabin算法
离散对数问题(DLP):BSGS算法、Pohlig-Hellman攻击
有限域(Galois Field)运算:GF(2^8)上的乘法和逆元
矩阵运算:行列式、逆矩阵(用于Hill密码)
多项式环:Reed-Solomon编码、Berlekamp-Massey算法
Base64/32/16、Hex编码(ASCII十六进制)
URL编码、HTML实体编码(如A
表示'A')
自定义编码表(需逆向或统计分析)
从这开始真正进入网络安全的领域,web需要掌握以下知识
目录/文件枚举
使用工具:dirsearch
、gobuster
、ffuf
常见敏感文件:.git
/.svn
泄露、robots.txt
、phpinfo.php
、备份文件(.bak
/.swp
)
指纹识别
识别框架/CMS:WordPress、ThinkPHP、Django、Flask
中间件版本:Apache/Nginx/IIS 版本漏洞
端口与服务扫描
工具:nmap
、masscan
常见服务:SSH、FTP、Redis(未授权访问)、MySQL(弱密码)
类型:
联合查询注入(Union-Based)
布尔盲注(Boolean-Based)
时间盲注(Time-Based)
报错注入(Error-Based)
跨站脚本(XSS)
类型:
反射型 XSS(URL 参数触发)
存储型 XSS(数据库存储恶意脚本)
DOM 型 XSS(前端 JavaScript 操作触发)
利用场景:
Cookie 窃取(document.cookie
)
钓鱼攻击(伪造登录页面)
绕过技巧:
事件处理器:onerror
、onload
编码绕过:HTML 实体、JavaScript Unicode 编码
CSP 绕过:unsafe-inline
、JSONP 回调
跨站请求伪造(CSRF)
原理:诱导用户发起非预期请求(如修改密码)
防御绕过:
检查 Referer 头伪造(利用开放重定向)
JSON CSRF(Content-Type
为 text/plain
时绕过)
文件上传漏洞
绕过技巧:
后缀名绕过(.php5
、.phtml
、.htaccess
)
MIME 类型伪造(image/png
)
文件内容检测绕过(添加图片头 GIF89a
)
竞争条件(上传+快速访问临时文件)
利用链:
上传 Webshell()--一句话木马
结合文件包含(LFI)执行恶意代码
文件包含(LFI/RFI)
本地文件包含(LFI):
读取敏感文件:/etc/passwd
、源码(index.php
)
结合 PHP 伪协议:php://filter/convert.base64-encode/resource=index.php
远程文件包含(RFI):
加载远程恶意脚本(需 allow_url_include=On
)
命令注入(Command Injection)
常见触发点:system()
、exec()
、popen()
绕过技巧:
分隔符:;
、&&
、|
、\n
空格绕过:${IFS}
、%09
(Tab)
通配符:/???/???
→ /bin/cat
反序列化漏洞
语言特性:
PHP:unserialize()
触发魔术方法(__wakeup
、__destruct
)
Java:Apache Commons Collections 链(CC1/CC6)
Python:pickle
模块的 __reduce__
方法
利用链构造:POP(Property-Oriented Programming)链
服务端模板注入(SSTI)
常见模板引擎:
Jinja2(Python):{{ 7*7 }}
→ 49
Twig(PHP):{{_self.env.registerUndefinedFilterCallback("exec")}}
Freemarker(Java):${"freemarker.template.utility.Execute"?new()("id")}
利用场景:执行系统命令、读取文件
SSRF(服务端请求伪造)
攻击目标:
内网服务探测(http://127.0.0.1:8080
)
协议利用:file:///etc/passwd
、gopher://
攻击 Redis
XXE(XML 外部实体注入)
利用方式:
读取文件:
内网探测:http://192.168.1.1:80
DoS攻击:Billion Laughs(实体扩展攻击)
条件竞争(Race Condition)
场景:
文件上传后快速访问(绕过删除操作)
高并发修改账户余额(金融类题目
CORS 配置错误
漏洞利用:
任意 Origin 允许(Access-Control-Allow-Origin: *
)
窃取用户敏感数据(通过恶意页面发起跨域请求)
JSONP 劫持
原理:利用回调函数窃取数据()
WebSocket 安全问题
漏洞类型:
未授权访问(缺乏身份验证)
跨站 WebSocket 劫持(CSWSH)
客户端存储漏洞
敏感信息泄露:LocalStorage、SessionStorage 中存储密码或 Token
XSS 持久化:通过客户端存储触发恶意脚本
HTTP 头安全
安全头缺失:
Content-Security-Policy
(CSP)配置不当
X-XSS-Protection
未启用
HttpOnly
标记未设置(Cookie 可被 JavaScript 读取)
中间件配置错误
Nginx/Apache:
目录遍历(autoindex on
)
错误配置的代理(暴露内网服务)
HTTP 请求走私(HTTP Request Smuggling)
原理:利用前后端解析差异构造恶意请求
攻击类型:CL-TE(Content-Length vs Transfer-Encoding)
PHP 特性利用
弱类型比较(==
与 ===
):"0e12345" == "0"
→ True
哈希比较绕过(md5($_GET['a']) == md5($_GET['b'])
)
伪协议利用:php://input
、data://text/plain,
Node.js 漏洞
原型链污染(Prototype Pollution):篡改 __proto__
属性
沙箱逃逸:vm
模块的未过滤代码执行
Python 框架漏洞
Flask:{{ config }}
泄露敏感配置(SSTI)
Django:SECRET_KEY
泄露导致会话伪造
JWT(JSON Web Token)安全问题
算法篡改:将算法改为 none
(alg: none
)
密钥爆破(弱密钥如 secret
)
未验证签名(直接解析 Header/Payload)
pwn意味进入网络安全的核心,签到题能够出现在MISC,Crypto,Web,但是一定不会出现在pwn,需要的知识是更加广泛的,汇编语言是基础,并且还需要对计算机操作系统底层有一定的了解,
程序内存布局
栈(Stack):函数调用、局部变量、返回地址
堆(Heap):动态内存分配(malloc
/free
)
全局数据区(BSS/Data):未初始化/已初始化全局变量
代码段(Text):只读的机器指令
汇编语言基础
x86/x64 架构:寄存器(EAX、EBX、ESP、RIP)、指令集(MOV、PUSH、CALL、RET)
ARM 架构:寄存器(R0-R12、SP、LR、PC)、指令集(LDR、STR、BL)
函数调用约定:
cdecl(x86)、fastcall(x64)
ARM 的 AAPCS 标准
ELF 文件结构
文件头(ELF Header)、程序头表(Program Header)、节头表(Section Header)
动态链接:PLT/GOT 表(过程链接表/全局偏移表)
基础栈溢出
覆盖返回地址:通过缓冲区溢出篡改函数返回地址
Shellcode 注入:向栈中写入可执行代码并跳转执行
ROP(Return-Oriented Programming)
利用现有代码片段(Gadgets)构造攻击链
工具:ROPgadget
、ropper
进阶技术:
栈迁移(Stack Pivot):通过 xchg esp, eax
等指令切换栈空间
Ret2libc:调用 system("/bin/sh")
绕过栈保护机制
Canary 绕过:
泄露 Canary 值(格式化字符串漏洞、内存泄露)
覆盖 Canary 的低位字节(Partial Overwrite)
DEP/NX 绕过:使用 ROP 或 JIT-ROP(动态生成代码)
堆管理机制
glibc 的 ptmalloc2:
Chunk 结构(size、prev_size、fd/bk 指针)
Bins 分类:Fastbin、Smallbin、Largebin、Unsortedbin
分配策略:malloc
的 best-fit
和 first-fit
Windows 的 Heap Manager:LFH(Low Fragmentation Heap)
常见堆漏洞
Use-After-Free(UAF):释放后继续使用指针
Double Free:同一 chunk 被多次释放
Heap Overflow:堆块溢出篡改相邻 chunk 元数据
经典堆利用技术
Fastbin Attack:
篡改 Fastbin 链表,实现任意地址分配(如改写 __malloc_hook
)
Unlink Attack:
触发 unlink
操作时修改全局指针(如 global_max_fast
)
House of 系列:
House of Spirit:伪造 Fastbin chunk
House of Einherjar:通过 Off-by-One 合并 chunk
House of Orange:利用 _IO_list_all
触发 FSOP(File Stream Oriented Programming)
House of Rabbit:结合 tcache
的利用
Tcache 攻击(glibc ≥ 2.26):
Tcache Poisoning:篡改 tcache_entry
的 next
指针
Tcache Dup:通过 Double Free 实现任意地址分配
高级堆利用
FSOP(File Stream Oriented Programming):
伪造 _IO_FILE
结构体(如 _IO_jump_t
)触发任意代码执行
Largebin Attack:篡改全局变量(如 global_max_fast
)
漏洞原理
用户控制格式化字符串参数(如 printf(user_input)
)
读写任意内存:%n
(写入已打印字符数)、%x
(泄露栈数据)
利用技巧
泄露栈数据:获取 Canary、libc 地址、程序基址
篡改 GOT 表:将 printf
的 GOT 表项指向 Shellcode
覆盖返回地址或函数指针
整数溢出
符号错误(Signedness Bug):无符号与有符号数比较
溢出导致缓冲区长度计算错误(如 malloc(size)
中 size
可控)
类型混淆(Type Confusion)
同一内存区域被解释为不同数据类型(如 C++ 虚表指针篡改)
用户态与内核态交互
系统调用(Syscall)、ioctl
接口
内核模块(LKM)漏洞利用
常见内核漏洞类型
堆溢出(SLUB/SLAB 分配器)
Use-After-Free(UAF)
条件竞争(Race Condition)
提权技术
修改 cred
结构体(将 UID/GID 改为 0)
劫持 modprobe_path
或 core_pattern
真正网络安全的核心,难度直线上涨,涉及的知识点也是很多的,比如
二进制文件格式
ELF(Linux):节头表(Section Header)、程序头表(Program Header)、动态链接信息(.plt/.got)
PE(Windows):DOS头、NT头、节表(.text/.data/.rdata)、导入表(IAT)、导出表
Mach-O(macOS/iOS):Load Commands、符号表(Symbol Table)
通用结构:文件头签名(Magic Number)、入口点(Entry Point)、重定位表
汇编语言基础
x86/x64:寄存器(EAX/RIP)、指令集(MOV/CALL/JMP)、函数调用约定(cdecl/stdcall)
ARM/ARM64:寄存器(R0-R12/PC/LR)、指令集(LDR/STR/BL)、条件执行(如BGT
)
MIPS:延迟槽(Delay Slot)、寄存器命名(t0/t0/a0)
静态分析
代码流分析:识别主函数、关键分支逻辑(if-else/switch)
字符串提取:查找硬编码密钥、敏感信息(strings
命令或工具)
交叉引用(Xrefs):追踪函数调用与数据引用
伪代码生成:使用 IDA/Ghidra 生成近似源码
动态分析
断点设置:函数入口、内存访问、条件断点
寄存器与内存监控:观察关键变量、栈帧变化
Hook 技术:使用 Frida 或 ptrace 修改运行时行为
反编译与代码重建
分析编译器优化特征(如O2优化后的代码简化)
识别标准库函数(如strcmp
、memcpy
的调用模式)
控制流图(CFG)分析
还原程序逻辑结构(循环、递归、分支)
定位关键校验函数(如License验证)
算法逆向
识别加密算法:
对称加密(AES/DES)的特征(S盒、密钥扩展)
非对称加密(RSA的模幂运算、椭圆曲线点乘)
哈希算法(MD5/SHA-1的轮函数)
自定义算法:
魔改加密(如异或+置换组合)
混淆运算(基于位操作的复杂计算)
输入验证绕过
序列号验证:静态密钥比对、数学变换(如x*2 + 5 == 123
)
迷宫类题目:通过逆向生成地图与移动规则
CRC校验:逆向生成多项式与初始值
虚拟机(VM)分析
自定义指令集:逆向虚拟指令到实际操作的映射
字节码解析:分析VM的调度逻辑与寄存器模拟
壳与代码保护
脱壳技术:
动态脱壳(Dump内存镜像)
静态脱壳(修复IAT、重建节表)
常见壳类型:UPX、ASPack、Themida、VMProtect
代码混淆技术
控制流平坦化:将逻辑拆分为多个基本块并通过状态机跳转
虚假分支:插入永真/永假条件干扰分析
字符串加密:运行时解密敏感字符串
反调试与反逆向
反调试技巧:
检查调试器(IsDebuggerPresent
、ptrace
)
时间差检测(rdtsc
指令计时)
反反调试绕过:
修改寄存器标志位(如TF Trap Flag)
使用插件屏蔽检测(如ScyllaHide)
花指令(Junk Code)
插入无效指令(如push eax; pop eax
)干扰反汇编
利用跳转指令分割代码逻辑
标准算法识别
AES:SubBytes
(S盒)、MixColumns
(矩阵乘法)
RSA:大数运算(powmod
)、密钥生成逻辑
Base64:特征表(ABCDEFGHIJKLMNOPQRSTUVWXYZ...
)
自定义编码
查表替换(如TEA算法中的Delta常量)
多层编码嵌套(Base64 → Hex → XOR)
密钥硬编码问题
在二进制中直接存储密钥字符串或数组
通过常量传播追踪密钥生成过程
Android 逆向
APK 分析:
解包(apktool
)、反编译(JADX/jeb)
分析 AndroidManifest.xml
、resources.arsc
Native 层逆向:
JNI 函数映射(RegisterNatives
)
ARM 汇编分析(IDA Pro)
动态调试:
使用 Frida 注入 Hook 函数
调试 SO 库(gdbserver
+ IDA)
iOS 逆向
Mach-O 文件分析:
Class-dump 提取 Objective-C 类信息
分析 __TEXT.__cstring
节中的字符串
动态调试:
使用 LLDB 调试越狱设备
Hook 方法(Cydia Substrate)
.NET 逆向
使用 dnSpy 反编译 C#/VB.NET 程序
分析 IL 代码(如ldstr
加载字符串、callvirt
调用方法)
Win32 API 分析
识别关键API调用(如CreateFile
、RegQueryValueEx
)
分析窗口消息处理逻辑(WndProc
)
驱动程序逆向
分析 IRP(I/O Request Packet)处理函数
识别设备对象(DeviceObject
)与分发例程
符号执行(Symbolic Execution)
使用 angr
自动化求解路径约束
绕过复杂条件分支(如if(x ^ 0x1234 == 0x5678)
)
二进制补丁(Patching)
修改跳转条件(如jz → jnz
)
修补校验函数(直接返回验证通过)
自动化逆向
编写 IDAPython 脚本批量分析
使用 Binary Ninja
API 提取函数特征
ctf比赛除了需要知识之外,也需要使用工具,工具是必不可少,好的工具能够让你事半功倍,接下来我来详细介绍一下各个题目使用的工具
杂项的工具就很多了
工具清单
隐写:Stegsolve、zsteg、ExifTool、SilentEye
流量:Wireshark、TShark、Chaosreader
取证:Volatility、Autopsy、Bulk Extractor
编码:CyberChef、dCode.fr、ciphey(自动化解码)
爆破:John the Ripper、Hashcat、fcrackzip
文件:foremost、binwalk
二进制:010 editor,winhex
还有个集成工具箱,随波逐流,很好用
密码学的工具比较少,大多数一个python脚本就能搞定,最主要的就是要求你足够熟练python,以及最重要的,你得有思路,作者感觉密码学真的跟做数学题一样,不会是真的不会啊。一些常见的密码学工具辅助还是有的,
通用工具
Python库:pycryptodome
、gmpy2
、sage
(数学运算)
在线工具:CyberChef、dCode.fr、factordb.com(分解大数)
专用工具:
RsaCtfTool
(自动化RSA攻击)
hashcat
(哈希爆破)
John the Ripper
(密码破解)
数学计算工具
SageMath:用于解离散对数、格基约减(LLL算法)
Mathematica:符号计算与复杂方程求解
CTF框架
pwntools:编写自动化攻击脚本
web用的最多也是最有用的就是burpsuite,hackbar解决一些题目也是可以的,python脚本也使用的很多,像sqlmap自动化工具,简单的还是能够做的,但是稍微难一点,就必须得手注了,要是有waf的话,算了,说多了都是泪啊
渗透测试工具
Burp Suite:抓包、重放、Intruder 爆破、Scanner 扫描
Postman:调试 API 接口
sqlmap:自动化 SQL 注入
Commix:自动化命令注入
辅助脚本
Python requests
库编写自动化攻击脚本
使用 pwntools
处理二进制交互
代理与调试工具
Charles:HTTPS 流量分析
Chrome DevTools:调试 XSS、DOM 操作
目录扫描:dirsearch
、gobuster
、ffuf、御剑
文件上传:蚁剑、哥斯拉、冰蝎
静态分析工具
IDA Pro/Ghidra:反汇编与伪代码分析
Binary Ninja:快速定位漏洞点
checksec
:检测二进制保护机制
动态调试工具
GDB(增强插件:pwndbg
/gef
/peda
)
LLDB(用于 macOS/iOS 调试)
WinDbg(Windows 内核调试)
漏洞利用开发
pwntools
:Python 库(封装进程交互、ROP 链生成)
ROPgadget
:自动化提取 Gadget
one_gadget
:查找 libc 中的 execve("/bin/sh")
指令
辅助工具
libc-database
:快速匹配 libc 版本
patchelf
:修改二进制文件的依赖库
必备工具
静态分析:IDA Pro、Ghidra、JEB
动态调试:x64dbg、GDB(pwndbg)、Frida
辅助工具:PEiD、Detect It Easy(查壳工具)
以上工具大多数可以在github上找到,免费的,有些也是收费的,比如IDA Pro,010,由于工具较多,链接我就不发了,大家可以在网上寻找。