标签: 堆利用

2 篇文章

切割堆块
在glibc源码中搜索split可以找到堆块切割相关源码 在malloc.c的_int_malloc函数中发生堆块切割的情形如下: 遍历unsorted chunks时 请求满足small request last remainder 堆块是唯一堆块,且切割后剩下的仍然满足最小堆块大小 从largebin中找到最小的满足要求的堆块 切割后剩余堆块的…
thumbnail
free后向合并unlink利用
利用条件 存在两个相邻堆块 能控制前一堆块数据部分 能控制后一堆块header部分 有可写指针指向前一堆块数据段地址,能获取该指针地址 利用原理 堆块 free 时,如果相邻前一堆块处于空闲状态,会尝试进行后向合并的操作,将两堆块合并成一个堆块。其中由于空闲堆块原本在双向链表中管理,因此会触发 unlink 对其进行脱链,即从双向链表中取出。 关于…