0%

pwn系列之四

Heap Overflow

堆概述

在程序运行过程中,可以提供动态分配的内存;由程序本身而非编译器负责申请和分配;实际上是内存空间中一块连续的线性区域;由低地址向高地址方向增长;chunk是堆的最小操作单元。

堆的数据结构

如图,详情见这儿

堆溢出

向某个堆块中写入的字节数超过了堆块本身可使用的字节数,从而导致了数据溢出,并覆盖到物理相邻的高地址的下一个堆块;

写人的字节要超过可使用的字节而不是用户申请的字节,因为堆管理器会进行调整。

于是,覆盖与其物理相邻的下一个chunk,然后利用堆的机制来实现任意地址写入或控制堆块内容,以达到攻击目的。