在漏洞利用中,堆风水(Heap Feng Shui) 是一种通过精心编排 malloc() 和 free() 的调用时机与大小,精细控制堆块(Chunk)在内存中的相邻物理分布,以便通过堆溢出覆盖相邻目标 Chunk 的元数据或函数指针。
一、堆块重分配精细占位技术
c
void heap_layout() {
// 连续分配 3 个 chunk
void *chunk_a = malloc(0x80);
void *chunk_b = malloc(0x80);
void *chunk_c = malloc(0x80);
// 释放中间 chunk 制造空洞
free(chunk_b);
// 再次申请相同大小的 chunk 会由 tcache 或 fastbin 优先复用原 chunk_b 位置
void *target_chunk = malloc(0x80);
// 此时 target_chunk 物理紧邻 chunk_a,若 chunk_a 存在单字节溢出即可污染 target
}