漏洞挖掘(覆盖率引导 fuzzing / 崩溃定位)

SkillSecurity

漏洞挖掘网关。编排:目标与输入面识别 → 覆盖率引导 fuzzing → 崩溃分析 → 逆向定位 → 报告。 子技能:[[re-fuzzing]] [[re-crash-triage]] [[re-exploit]]。 触发词:漏洞挖掘、挖洞、fuzz、模糊测试、AFL、libFuzzer、崩溃分析、 crash、vulnerability hunting、fuzzing。

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the 漏洞挖掘(覆盖率引导 fuzzing / 崩溃定位) skill

What this skill tells your AI

The instructions your AI receives, as published by dslsdzc/rev-skills in .claude/skills/re-vuln/SKILL.md and read by ahel’s review.

完整工作流

按顺序执行;每步产物(目标/输入面结论、fuzz 运行目录、崩溃样本、定位证据)记录证据路径 + sha256(存证方法见 [[re-triage]](能力:triage)),供报告引用。

  1. 目标与输入面识别 —— 先弄清"fuzz 什么、输入从哪进"(见坑 1):
    • 目标形态:本地文件解析(图像/压缩/文档/自定义格式)、网络服务(监听端口收包)、库函数(被调用的解析 API)、命令行工具(argv/stdin)
    • 输入面:fuzz 输入通道(文件 / 文件内容 / 网络包 / stdin / argv)与解析入口函数
    • 初勘:file / strings / 熵 / checksec([[re-triage]](能力:triage));静态定位解析入口([[re-binary-core]](能力:decompilationdebuggingmemory-dumpelf-parserpe-parsermacho-parser) 底座,[[re-ghidra]](能力:decompilationdebugging) 反编译找主处理函数)
    • 决策:fuzz 引擎与插桩方式(源码可插桩 / 无源码 QEMU 模式),见「选择树」
  2. 覆盖率引导 fuzzing → [[re-fuzzing]](能力:fuzzing —— 插桩 + 语料 + 跑起来:
    • 源码可用:AFL++ 编译器包装器 + ASAN 构建(afl-clang-fast -fsanitize=address);库函数写 harness;无源码 -Q(QEMU 模式)
    • 初始化语料(最小有效样本,afl-cmin 去重),afl-fuzz 多实例跑(-M main / -S secondary
    • 覆盖率监控(afl-cov / afl-whatsup),观察 paths 增长;加字典 / 结构化输入提速
  3. 崩溃分析 → [[re-crash-triage]](能力:debugging —— 出现 crash 立即处理:
    • 确定性复现(同一输入重跑必崩);ASAN 报告解读(堆溢出 / 越界 / UAF / double-free)
    • 输入最小化(afl-tmin / afl-cmin)→ 最小 PoC
    • 非确定性崩溃用 rr 录制重放
  4. 逆向定位([[re-binary-core]](能力:decompilationdebuggingmemory-dumpelf-parserpe-parsermacho-parser) 底座) —— 把崩溃翻译成漏洞根因:
    • [[re-triage]](能力:triage):崩溃输入 sha256 存证 + 目标基线记录
    • [[re-ghidra]](能力:decompilationdebugging;或 [[re-ida]](能力:decompilationdebugging) / [[re-radare2]](能力:decompilation)):gdb 回溯栈中无符号帧用反编译补(见坑 5);定位崩溃函数与输入数据流向
    • 确认:越界/悬垂发生在哪段逻辑、输入是否可控、路径是否真实可达(见坑 3)
    • 崩溃 core(进程已死 / 已有 core dump)→ [[re-memdump]](能力:memory-dump) 分析
  5. 报告
    • 记录:崩溃类型、复现命令、最小 PoC(文件 + sha256)、根因(函数/行/偏移)、可达性分析、影响(越界读/写、RCE/DoS)、修复建议
    • 产出:PoC / 崩溃特征可进 [[re-ioc]](能力:threat-intel

何时用哪个原子技能(选择树)

按目标输入形态 / 当前状态分支:

  • 本地文件解析(输入是一个文件:图像/压缩/文档/自定义格式解析器)→ [[re-fuzzing]](能力:fuzzing) 用 AFL++(源码插桩 + ASAN;无源码 -Q QEMU 模式)
  • 库函数(目标是库的 API,如 libpng 的 png_read_*、自定义 parser 函数)→ [[re-fuzzing]](能力:fuzzing) 用 libFuzzer-fsanitize=fuzzer,address + fuzz target harness),或 AFL++ 持久模式 harness
  • 网络服务(监听端口、协议解析)→ 网络 fuzz:[[re-netcap]](能力:network-capture) 抓真实流量做种子,写 harness 重放喂解析函数(见 [[re-fuzzing]](能力:fuzzing) 坑 5);fuzz 的是解析器不是网络栈
  • 已有崩溃 / 崩溃输入(无需重跑 fuzz)→ 直接 [[re-crash-triage]](能力:debugging):确定性复现 → 最小化 → 定位
  • 崩溃已定位、要读函数逻辑 → [[re-binary-core]](能力:decompilationdebuggingmemory-dumpelf-parserpe-parsermacho-parser) 底座([[re-ghidra]](能力:decompilationdebugging) / [[re-ida]](能力:decompilationdebugging) / [[re-radare2]](能力:decompilation))
  • 崩溃是 core 文件(进程已死)→ [[re-memdump]](能力:memory-dump) 分析 core,再按需逆向
  • 目标无输入解析(纯算法/纯逻辑) → fuzz 不适合,符号执行更优([[re-angr]](能力:symbolic-execution) / [[re-z3]](能力:constraint-solving))

跨域联合

  • 底座 [[re-binary-core]]:第 4 步逆向定位固定调用([[re-triage]] 初勘与存证 / [[re-ghidra]] 反编译定位 / [[re-ida]] / [[re-radare2]]);本网关 ①-⑤ 的静态环节都落在底座技能上(规格 2.4:崩溃样本定位 = re-vuln → re-binary-core + re-memdump)
  • 崩溃 core → [[re-memdump]]:进程已死 / 已有 core dump 时,崩溃样本分析走内存转储与 core 提取
  • CTF pwn → [[re-ctf]]:pwn 赛题的 fuzzing / 崩溃分析交本网关;赛题二进制同样适用本网关流程
  • 动态执行沙箱:fuzz / 复现崩溃都是动态执行,默认在 [[re-sandbox]] 内跑([[re-analyze/platform-tips]] 最高原则)
  • 网络目标:[[re-netcap]] 抓包做种子语料与输入面确认
  • 入口调度:本网关由 [[re-analyze]] 按触发词分派(漏洞挖掘 / fuzz / 崩溃分析),triage 已显式接线
  • 产出:PoC hash / 崩溃特征 / 漏洞指纹可进 [[re-ioc]]

常见坑与陷阱

  • 目标/输入面识别不到位就开跑:现象——fuzz 跑几天零崩溃,或崩溃全在无关代码;原因——输入通道/解析入口不对(如把网络程序当文件解析器 fuzz,核心解析逻辑没被覆盖);对策——第 1 步先静态确认解析入口([[re-ghidra]] 反编译找主处理函数),harness 直连解析函数,[[re-netcap]] 抓真实流量验证输入面
  • 崩溃≠漏洞:现象——ASAN 报的越界/UAF 在死代码分支,或崩溃由 harness 自身引入;原因——fuzzer 能触发不等于真实可达、可利用;对策——[[re-crash-triage]] 第 4 步 gdb 回溯 + [[re-binary-core]] 反编译确认崩溃路径真实可达、输入可控;区分 harness bug 与目标 bug
  • 无插桩无覆盖率:现象——execs 涨得飞快但 paths 不动、从不出新崩溃;原因——目标没插桩(release 二进制、参数写错 fuzz 了无关程序);对策——[[re-fuzzing]] 用 afl-showmap 验证覆盖率变化,无源码改用 -Q QEMU 模式
  • 崩溃去重缺失:现象——同一个 bug 的上万个 crash 文件淹没分析;原因——每个变异输入都存盘,未按崩溃点区分;对策——afl-tmin 最小化 + 按 ASAN 类型/回溯栈合并(见 [[re-crash-triage]])
  • 符号缺失定位难:现象——gdb bt 全是 ??;原因——剥离符号/静态链接;对策——记录模块基址与偏移,用 [[re-ghidra]] 反编译补帧([[re-binary-core]] 底座)

Signals

GitHub stars
57
Forks
8
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
re-vuln
Source
github.com/dslsdzc/rev-skills