欢迎访问 内存溢出 —— 独立后端与系统工程技术博客

专注于分布式系统、Linux内核、数据库存储与后端工程实践

内存分配器对抗:Glibc ptmalloc 堆风水(Heap Feng Shui)与 Chunk 布局

发表于:|最后更新:|分类:二进制安全|阅读:6756 次

在漏洞利用中,堆风水(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
}