漏洞开发
域名:exploit-dev
二进制漏洞利用开发域,提供 ROP/JOP gadget 搜索、shellcode 编码、保护机制检测与偏移计算。
Profile
- full
典型场景
- ROP 链构建
- Shellcode 编码与混淆
- 二进制保护检测
- 缓冲区溢出偏移计算
常见组合
- exploit-dev + binary-instrument
- exploit-dev + memory
工具清单(20)
| 工具 | 说明 |
|---|---|
exploit_find_gadgets | 在二进制文件中搜索 ROP/JOP gadgets。返回每个 gadget 的地址、指令和字节。支持正则表达式过滤。用户需提供目标二进制文件。 |
exploit_build_rop_chain | 为指定目标(execve、write_memory、call_function)构建 ROP 链。自动搜索所需 gadgets 并串联。返回十六进制链和 gadget 列表。用户需按需提供命令/地址/函数。 |
exploit_encode_shellcode | 编码 shellcode 以避免坏字符或检测。支持字母数字、Unicode、XOR 和 fnstenv 编码。返回编码后的 shellcode 和解码器存根。用户需提供原始 shellcode。 |
exploit_analyze_mitigations | 检测二进制安全保护机制(NX/DEP、PIE/ASLR、栈金丝雀、RELRO、FORTIFY_SOURCE)。返回每个保护的布尔标志。 |
exploit_calculate_offsets | 从崩溃值和 De Bruijn 模式计算缓冲区溢出偏移。用于确定精确的 EIP/RIP 覆写偏移。 |
exploit_generate_pattern | 生成用于偏移查找的 De Bruijn 序列。每个 4 字节子串唯一,允许从崩溃转储精确计算偏移。 |
exploit_find_jmp_esp | 查找用于栈迁移的 "jmp esp" / "call esp" 风格 gadgets。搜索跳转到特定寄存器的指令。 |
exploit_cache_stats | 获取 exploit-dev 缓存统计信息,包括命中率、内存使用和条目数。用于性能监控和缓存调优。 |
exploit_cache_clear | 清除所有缓存的 exploit-dev 结果。在二进制文件被修改或需要释放内存时使用。 |
exploit_cache_configure | 更新 exploit-dev 缓存配置(TTL、内存限制、启用/禁用)。更改立即生效。 |
exploit_build_heap_spray | 生成堆喷射载荷以获得可预测的堆布局。支持 V8(ArrayBuffer)、IE(BSTR)和通用(ArrayBuffer)三种喷射目标。返回喷射代码、分配次数和可预测性评分。 |
exploit_build_format_string | 生成格式化字符串漏洞利用载荷,用于任意地址写入。使用 %hn(2 字节)写入以提高可靠性。返回十六进制载荷和可靠性评估。 |
exploit_solve_constraints | 使用 Z3 SMT 求解器求解约束系统。每个约束是类 JavaScript 布尔表达式(如 "x > 10"、"y <= 20"),约束间为合取关系(AND)。支持 int/real/bool/bitvec 变量类型。满足时返回 sat 及变量赋值模型。用于 ROP gadget 验证、不透明谓词反转和通用约束求解。 |
exploit_verify_rop_chain | 使用 Z3 验证用户提供的 ROP 链是否满足漏洞利用目标。将十六进制链解码为 gadget 地址,匹配已知 gadget,模拟寄存器效果,检查最终状态是否满足目标(如 execve 系统调用寄存器、write_memory 地址/值、call_function ABI 参数)。返回有效性标记、解码链、最终寄存器状态、违规项和警告。用于在使用前审计手工或第三方 ROP 链。 |
exploit_generate_egghunter | 为受限缓冲区大小生成 egghunter shellcode。egghunter 在进程内存中搜索 4 字节 egg 标记(连续出现两次)并跳转到其后的真正 shellcode。支持 Linux x86 access(2) 和 Windows SEH 两种 egghunter。参考:skape《Safely Searching Process Virtual Address Space》(2004)。 |
exploit_build_stack_pivot | 从二进制文件中查找并组装栈迁移 gadget。栈迁移将栈指针(ESP/RSP)重定向到受控缓冲区,在栈空间有限时启用 ROP 链。检测 xchg(add/sub/mov,sp)、push/pop(sp)、leave 和 add sp,N 等迁移模式。 |
exploit_cache_invalidate | 按路径使特定二进制文件的 exploit-dev 缓存结果失效。计算二进制哈希并移除所有匹配的缓存条目。不传 binaryPath 则清空整个缓存。在二进制文件被重新编译或修改后使用。 |
exploit_build_jop_chain | 从二进制 gadget 构建 JOP(跳转导向编程)链。JOP 通过间接跳转分发器(如 jmp [rax])而非 ret 来链式调用 gadget 以绕过 CFI。发现分发器候选,按分发寄存器分组功能 gadget,组装覆盖指定目标约束的链。同时支持 COP(调用导向)和 COOP(伪面向对象)链。 |
exploit_discover_one_gadget | 发现常见 libc 版本的一键利用(one-gadget)偏移——跳转到单个地址即可触发 shell。先查内置数据库(glibc 2.23/2.27/2.31/2.35/2.39 的 x64/x86 版本,musl 1.2),未命中时回退到启发式二进制扫描。返回偏移及其约束条件(如 "[rsp+0x70] == NULL")。listKnown=true 时列出所有已知 libc 标识。 |
exploit_generate_pwntools | 生成 pwntools 兼容的 Python 漏洞利用脚本(exploit.py)。接受 ROP 链、JOP 链、shellcode 或 one-gadget 偏移,输出含 ELF 加载、远程/本地 I/O 设置和载荷组装的可直接运行脚本。模板:io、rop、shellcode、ret2libc、format。 |