用途:当你已取得任意写原语(如堆利用、格式化字符串 %n、越界写)后,本技能帮助把写原语转化为代码执行,即“最后一公里”。
主要能力:按 glibc 版本给出目标选择表,并说明各目标所需前置知识(二进制基址、libc 基址、ld.so 基址、堆地址、栈地址、TLS 地址、pointer guard 等)。覆盖 GOT 覆写(printf→system、free→system 等,需 Partial RELRO);glibc<2.34 的 __malloc_hook、__free_hook、__realloc_hook 及 realloc 栈对齐技巧;_IO_FILE vtable 按版本(直接覆写、_IO_str_jumps、_IO_wfile_jumps、House of Cat)与 FSOP 触发;__exit_funcs 的指针 mangling(ROL(ptr ^ pointer_chk_guard,0x11));glibc≥2.34 的 TLS_dtor_list;_dl_fini/link_map 损坏(FINI_ARRAY 指针不 mangling);内核 modprobe_path;.fini_array;C++ vtable 覆写;setcontext 垫片(<2.29 用 RDI,≥2.29 用 RDX)。
使用方式:按决策树依 RELRO 级别、glibc 版本、是否掌握 pointer guard、是否有堆/栈地址选择目标;格式化字符串可用 from pwn import fmtstr_payload;命令与代码片段保持原样。
适用场景:CTF 与授权渗透中的二进制定向利用研究。
限制:仅限合法授权测试;许多目标已在新版 glibc 中被移除或加入范围检查;需自行获得相应地址与指针保护值,否则无法利用;部分方案依赖具体保护配置(如 Full RELRO 下 GOT 只读)。官方文档未提供的额外细节暂未提供。