house of rabbit:fastbin的其他攻击方式

Heap基础知识

[toc]

house of rabbit

house of rabbit是一种fastbin的攻击方法,可以在没有leak的情况下通过获得一个overlap chunk或者是一个fake chunk。这是利用了malloc_consolidate没有进行很好的安全校验来进行攻击的。

我们知道fastbin attack需要保证取出的chunksizefastbinsize一样,在很多情况下需要寻找0x7f或者是打unsortedbin attack来找0x7f。而house of rabbit同样针对fastbin,它只需要能够触发malloc_consolidatemalloc一个很大的值就可以触发),然后下列两者条件中的一个即可:

  • 可以控制fastbinchunkfd指针
  • 可以控制fastbinchunksize

上面我们提到两个条件是二选一即可,是因为两个条件可以发起不同的攻击。下面让我们详细理解。

可以控制fd指针

当可以控制fd指针的时候,师傅们很容易想到fastbin attack,然而fastbin attack在部分情况下存在局限性。

只要可以控制fastbin chunkfd指针,之后只需要将fd指针指向一个任意地方的fake chunk,然后触发malloc_consolidate,就可以申请到该位置的fake chunk。但也需要附加条件,那就是需要该fake chunk的下一个和下下个fake chunk也构造好(实际上只需要构造chunk size)。画个图来理解:

image-20231114100530815

可以控制chunksize

当可以控制chunksize时,可以获得一个chunk overlap。具体过程如下:

首先申请两个相同大小的chunk,例如0x40的两个chunk。释放后,我们将第一个chunksize更改为0x80,此时若触发malloc_consolidate,那么会分别将两个chunk添加到大小为0x400x80smallbin中。那么当size被修改为0x80chunk被添加到大小为0x80smallbin中后,chunk overlap实际上就已经发生了。因为只需要申请大小为0x80chunk就可以获得这个chunk了。


house of rabbit:fastbin的其他攻击方式
http://example.com/2023/09/23/system/Heap/house_of_rabbit/
作者
Ltfall
发布于
2023年9月23日
许可协议