概述
针对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伪造堆块然后就行了