概述
针对small bin的堆利用
作用:分配任意地址的chunk
要求:堆溢出修改chunk
的bk域
利用原理
感觉和fastbin attack差不多,都是修改指向的堆块,然后申请出来
不过在small bin上需要注意绕过堆bck->fd
的检测,而且small bin是FIFO
即先进先出的
1 | // 获取 small bin 中倒数第二个 chunk 。 |
举一个简单的例子:
- 申请
chunkA
,chunkB
,chunkC
三个chunk,其中chunkB
位于smallbin范围内 - 释放
chunkB
,使其进入unsortedbin中 - 申请一个比
chunkB
还大的堆块,使chunkB
进入smallbin中 - 修改
chunkB
的bk
指针为伪造的fake chunk
- 构造
fake chunk
使fake chunk
的fd
指针指向chunkB
malloc
两次即可申请到fake chunk
总结
一句话就修改bk伪造堆块然后就行了