CTF思路
点击放大

<p align="center">
<img src=" alt="">
<img src=" alt="license">
<img src=" alt="python">
<img src=" alt="ctf">
</p>
> 纯算法驱动 — IntelPwn 通过 capstone 反汇编 + pwntools + angr 符号执行 + 静态/动态分析,自动检测二进制漏洞并生成可直接运行的 exploit 脚本。
---
| 检测项 | 方法 | 说明 |
|---|---|---|
| 栈缓冲区溢出 | 语义层 v2 (定义-使用链数据流): 有界读 (read/fgets/memcpy/strncpy/snprintf) 回溯大小定义链 vs 缓冲栈偏移比较, 无界写 (gets/strcpy/sprintf/strcat) 看目标地址; 破固定窗口, 编译器重排/长链不漏 | 双重判定 + 置信度 |
| angr 语义兜底 | 轻量判"未知"时符号执行求值 (节流 3 次/analyze + 500KB 上限防爆) — --semantic=force 强制纯 angr | 疑难场景补充 |
| scanf 精确判定 | 解析格式串: 仅无宽度 %s 判险, %d/%x 不误报 | 消除旧版无条件误报 |
| 全局缓冲写入 | strcpy/strcat/sprintf 到可写全局段 (.bss/.data) 的语义链回溯 — 固件/配置解析类 (off-by-one/槽不匹配溢出), 栈检测覆盖不到的补盲 | 真实场景检测面 |
| 格式化字符串 | 静态 + 黑盒, 合并 4 批加速; 无 printf 族直接排除 (防菜单回显误判) | 偏移自动定位 |
| 安全保护 | Canary / NX / PIE / RELRO / RWX 段 / 静态链接 | 带风险评级 |
| PLT 危险函数 | 自动标注 system/execve/gets/printf 等 | 用途分类 |
| ROP gadgets | capstone 定向扫描 (x64: pop_rdi/rsi/rdx, ret, jmp_rsp, syscall;ret · x86: pop_eax/ebx/ecx/edx, int 0x80) + pwntools 回退 | ~0.1s |
| x86 32 位支持 | cdecl 栈传参检测 (lea [ebp-X] → push/mov[esp]), scanf %s 格式串 vaddr→offset 映射, 三重 padding 验证自适应 (eip/esp/ebp + p32) | 全链路覆盖 |
| 静态链接专项 | libc 内置符号识别 (system/exec 固定地址), 危险函数符号表 fallback (静态链接无 PLT 也能识别 gets/read), fmtstr 无 GOT 覆写返回地址路径 | 能力包 |
| 复杂 ROP 组装 | ret2csu (__libc_csu_init) 识别 + x86 pop;pop;ret 多参链 | 链可行性分析 |
| 堆助手 | glibc 版本识别 (支持 --libc 附件判定) + tcache/safe-linking/__free_hook 行为表 (按版本给攻击面) + tcache poisoning 版本感知原语 (GOT→system 完整路径 / 2.34+ 现代路径标注) + 跨函数 UAF 链检测 (选项粒度: free→use 同对象数组) + 动态验证 (-- 泄露复现/打穿判定) | 独立模块 |
| BSS 可写区 | ELF 符号表扫描大尺寸 BSS 符号 | 用于 shellcode 存储 |
| CFG 复杂度 | 指令流直接计数边和节点 (去 NetworkX) | 5ms |
| 堆漏洞线索 | 同函数多 free (double-free) / malloc 大小算术运算 (整数溢出) / 循环内 free (UAF 场景) | 启发式提示 |
| angr 符号执行 | 主动发现: 全量枚举危险调用点 (可达性 + 栈目标 + 大小 taint), 静态漏检的 strcpy 等无界写也能发现并算 padding; 溢出点符号化 padding 交叉确认 | 可选插件 |
| 汇编自动注释 | 三级注释引擎: 漏洞链(红, 危险输入点/可溢出字节数/返回地址改写点, 来自分析结论) · 风险提示(黄, syscall 号/canary/敏感函数, 规则猜测) · 语义标注(灰, 序言/栈帧/PLT 调用解析); 供 --web 反汇编视图 | 规则引擎 |
| 菜单交互识别 | 双通道识别 (rodata "N. 名称" 菜单项 + cmp/je 分支链) + 跳转表菜单 ([reg*8+table]+call reg); stripped 无符号赛题两通道定位 (输入调用自身链 / 读选项函数调用点链 + 业务过滤), rodata 标签回填 handler 名 (func_ → add/del/show/edit); 溢出题匹配漏洞函数触发注入, 堆题菜单也识别 (options 供堆模板) | 通用基础设施 |
| 利用策略生成 | 基于保护状态 + 可用函数 + ROP → 自动推导方案 | 多种策略 |
| 场景 | 模板 | 状态 |
|---|---|---|
| ret2win (有 win 函数) | gen_ret2win | x64/x86 通用 (p64/p32) |
| int 0x80 execve 链 (x86 32 位) | gen_int80_execve | pop_eax/ebx/ecx/edx + int 0x80, eax=0x0b |
| ret2system (system@plt + /bin/sh) | gen_ret2system | 64 位需 pop_rdi; 32 位栈传参免 gadget; 静态链接固定地址 (static_libc) |
| ret2libc (leak + ret2system) | gen_ret2libc | 64 位有 pop_rdi 时自动; 32 位栈传参布局 |
| leak 解法 (无 system/no-read, glibc>=2.40 通用) | gen_leak_ret2libc | puts@got 泄漏 → libc 基址 → ret2system; 自动栈对齐 (重入帧偏移), 有 --libc 全自动否则引导查偏移 |
| ret2dlresolve (无 libc) | gen_ret2dlresolve | read@plt 或 gets@plt + 可写 BSS + 非 Full RELRO; glibc>=2.40 本地场景脚本运行时自检+指引, 远程不误杀 |
| SROP (sigreturn) | gen_srop | 有 syscall;ret + pop 三件套 + read@plt — Kali 实测打穿 |
| shellcode 注入 (NX 关闭) | gen_shellcode | 无 jmp_rsp gadget 时不生成断路径 |
| Canary 爆破 + ret2win | gen_canary_ret2win | 4/8 字节自适应; 支持 --remote fork 服务器 |
| 格式化字符串 (GOT 覆写) | gen_fmtstr | 有 puts@got+system@plt 时生成实际 payload |
| tcache dup (堆) | gen_tcache_dup | 版本感知完整原语: 菜单题自动交互 (add/delete/show/edit 选项号) + safe-linking 泄露 + GOT 覆写; glibc<2.34 完整可打, >=2.34 标注 tls_dtor_list/FSOP 现代路径 |
| one_gadget 自动定位 | ret2libc 内嵌 | 有 one_gadget 工具时自动填充偏移 |
| ROP 骨架 (无自动路径时) | — | 输出 gadget 列表 + 推荐工具 |
所有 exp 模板:
context.binary (pwntools 自动检测 arch)read() 系溢出使用 send() 而非 sendline()# [WARN] 注释 + 修复命令[骨架], 不输出看似可用实则必崩的脚本rec(锚点) + sendline(选项) (所有模板受益, 无需手动选菜单)--json 参数 → schema v2.0 (见 schema/intelpwn.schema.json), 可管道给 jq / CI--dir <目录> 扫描目录下所有 ELF, 输出汇总表或 JSON 数组--web 参数 → 本地交互界面 (总览 + 反汇编三级注释 + CFG 图, 见下节)---
安装完成后直接可用:
说明:
~/.intelpwn-venv 隔离环境intelpwn.py 启动时自动切换到 venv (INTELPWN_NO_VENV=1 可禁用), 因此 python3 intelpwn.py 直接可用angr_check 插件跳过---
--web)analyze --web 在本地起一个 web 服务 (默认 0.0.0.0:5000, Kali VM 场景宿主机浏览器直接访问 VM IP), 把分析结果渲染成可交互的漏洞视图:
| 视图 | 内容 |
|---|---|
| 总览 | 保护状态 / 溢出 / ret2text 目标 / 交叉验证结论 摘要 |
| 反汇编 | 每行指令带三级自动注释: 漏洞链(红, 危险输入点/可溢出字节数/padding/返回地址改写点) · 风险提示(黄, syscall 号/canary/敏感函数, 规则猜测) · 语义标注(灰, 序言/栈帧/PLT 调用解析); 红注释始终显示, 黄/灰可开关 |
| CFG 交互图 | IDA 式控制流图 (cytoscape/dagre), 漏洞块红色高亮自动选中, 点节点在右侧独立面板查看块内反汇编 |
API: GET /api/functions /api/disasm/<addr> /api/cfg/<addr> /api/report (JSON, 供二次开发)。
> 安全提示: 默认 0.0.0.0 会把分析数据暴露给局域网; 敌对网络请用 --web-host 127.0.0.1 锁定本机。
---
项目包含 14 道预设 CTF 练习题 (含 32 位 x86 与静态链接), 覆盖主流 pwn 题型:
| Challenge | 保护 | 漏洞 | 自动 exp |
|---|---|---|---|
| challenge_ret2win | NX, NoCanary, NoPIE | 栈溢出 72 padding | ret2win |
| challenge_ret2win_canary | NX, Canary, NoPIE | 栈溢出 + Canary | canary 爆破 + ret2win |
| challenge_ret2libc | NX, NoCanary, NoPIE | 栈溢出 72 padding | (需 pop_rdi) |
| challenge_fmtstr | NX, NoCanary, NoPIE | 格式化字符串 | 偏移探测 + [骨架] |
| challenge_fmtstr_canary | NX, Canary, NoPIE | 格式化字符串+Canary | 含 canary 定位 |
| challenge_shellcode | ExecStack, NoCanary | 栈溢出 136 padding | shellcode 注入 |
| challenge_srop | NX, NoCanary, NoPIE | 栈溢出 72 padding | SROP (实测打穿) |
| challenge_ret2dlresolve | NX, NoCanary, NoPIE | 栈溢出 72 padding | ret2dlresol<2.40) |
| challenge_tcache | NX, NoCanary, NoPIE | UAF + tcache poisoning | 手动 exploit (现代 glibc 实测打穿) |
| challenge_tcache_dup | NX, NoCanary, NoPIE | UAF + 菜单 + safe-linking 泄露 | tcache poisoning 完整原语 (版本感知) |
| challenge_angr_hidden | NX, NoCanary, NoPIE | 子函数 strcpy 栈溢出 | angr 主动发现 (静态漏检) |
| challenge_x86_vuln | x86 32 位, NX, NoCanary, NoPIE | gets 栈溢出 52 padding | ret2win (实测打穿) / ret2system (32 位栈传参) |
| challenge_static_vuln | 静态链接, NX, NoCanary, NoPIE | gets 栈溢出 72 padding | static_libc 符号识别 + 静态 ret2system |
| mini_configd | NX, NoCanary, NoPIE | 全局缓冲写入 (key off-by-one: strlen>= 误用, strcpy 溢出到 value) | 真实场景 (模拟固件配置解析) — 全局写入线索 |
| challenge_rop | NX, NoCanary | 栈溢出 24 padding | 骨架 + gadget 列表 |
| challenge_pie | NX, PIE, NoCanary | 栈溢出 + PIE | 解析运行时地址 |
---
> 想写你的第一个能力包? 见 CONTRIBUTING.md — 插件三件套完整指南 (分析器注册 / 黑板协议 / exploit 模板 / 测试与提交流程)。
一个能力包 = 三个口子, 挂上即通 (核心零改动):
1. 分析器口子 — 检测结果写入 results, 前端自动展示:
analyze_all 会在内置流程之后自动执行所有已注册插件, 无需修改编排器。
2. exploit 模板口子 — 按条件路由, 可覆盖内置模板:
3. 前端兜底渲染 — 分析器输出的任何 key, 未硬编码时自动渲染为"其他发现"折叠卡片 (JSON 结构化, XSS 转义), 无需改 webui/static/app.js。
4. 通配 CLI — 终端报告的"扩展分析输出"区块自动显示所有插件/扩展分析器的结果 (通用键值渲染 + 菜单/静态链接 libc 专项), 新增插件无需改 report.py。
> 能力包示例: 静态链接专项 / 复杂 ROP 组装 / 堆助手等, 均可按此三件套接入。
| 优化项 | 优化前 | 优化后 | 加速比 |
|---|---|---|---|
| CFG 圈复杂度 | networkx.DiGraph (500ms, 50MB) | O(n) 指令扫描 (5ms, 1KB) | 100x |
| 格式化字符串黑盒 | 8 轮串行 subprocess (<=24s) | 4 批合并 (<=11s) | 2.2x |
| 溢出函数过滤 | O(NxF) 列表推导 | O(N) + bisect 二分查找 | 100x |
| ROP 扫描 | pwntools 全量 (3-5s) | capstone 定向 8 pattern (0.1s) | 50x |
| 反汇编 | o + fmtstr 各跑一次 | 预反汇编 + 共享 | 2x |
| 黑板基础设施缓存 | 各分析器重复 open_elf + 符号表 + PLT 解析 | analyze_all 一次性物化 _shared (insns/func_bounds/sym_by_addr/plt_map), o/menu 消费 | 大二进制省 4-5 次重复解析 |
| padding 验证 | 每次跑 GDB (2s 固定) | 静态一致时跳过 (~0.2s) | 10x |
---
| 特性 | IntelPwn | checksec.sh | pwntools | ROPgadget |
|---|---|---|---|---|
| 一键全量分析 | 支持 | 不支持 | 不支持 | 不支持 |
| 栈溢出 padding 计算 | 支持 (三重验证 + angr) | 不支持 | 不支持 | 不支持 |
| 格式化字符串检测 | 支持 静态+黑盒 | 不支持 | 不支持 | 不支持 |
| Exp 自动生成 | 支持 10+ 模板 | 不支持 | 不支持 | 不支持 |
| 符号执行验证 | 支持 (angr 插件) | 不支持 | 不支持 | 不支持 |
| 批量扫描 + JSON | 支持 (--dir + schema) | 不支持 | 不支持 | 不支持 |
| 中文报告 | 支持 | 不支持 | 不支持 | 不支持 |
| 单元测试 | 193 用例 | - | - | - |
---
---
1. 纯算法, 零 ML — 所有分析基于反汇编 + 符号执行 + 静态/动态分析,无模型依赖,结果可解释可复现
2. 模块化 + 插件化 — 分析引擎拆为独立模块, 新检测项通过 register_analyzer 自注册
3. 实用优先 — 生成的 exploit 脚本可直接运行; 无法自动利用时诚实标注 [骨架], 绝不输出必崩脚本
4. 性能意识 — CFG 去 NetworkX、定向 ROP、条件 GDB、共享反汇编, 一次全量分析 ~3-5s
5. 环境安全 — 安装脚本用隔离 venv 装 Python 依赖, 不污染系统 python
---
---
MIT — 玄幕安全团队-guaidao2 (见 LICENSE)
开发语言:Python
Star 数:61
该项目属于CTF思路方向的开源资源,代码结构清晰,适合安全研究人员学习参考。项目围绕玄幕安全团队创始人自设计架构,兼vibecoding的CTF pwn解题辅助框架。展开,提供了可运行的实现,对理解相关安全机制、工具原理与攻防技术具有较高的研究价值。
从技术实现角度看,此类项目的核心在于对底层原理的深入理解与工程化落地。开发者在研究过程中可以结合官方文档与社区讨论,梳理项目的初始化流程、核心模块职责与数据流转,逐步掌握其中的技术细节与设计思路。
1. 下载源码压缩包,解压到本地环境。
2. 根据项目类型准备对应的运行环境与依赖。
3. 按照 README 中的步骤完成配置与部署。
4. 在隔离的测试环境中运行验证,避免影响生产系统。
本资源来源于开源社区,仅供安全研究、技术学习与合法授权范围内的攻防演练使用,请勿用于任何非法或侵害他人权益的用途。使用本项目产生的一切后果由使用者自行承担。
| 资源标题 | intelpwn - 玄幕安全团队创始人自设计架构,兼vibecoding的CTF pwn解题辅助框架。 |
| 所属分类 | CTF思路 |
| 发布作者 | admin |
| 发布时间 | 2026-10-06 00:04:01 |
| 下载权限 | 免费下载 |
| 附件数量 | 2 个下载链接 |
| 浏览次数 | 108 |
| 讨论数量 | 0 |
| 主题状态 | 正常讨论中 |