Fastbin attack

当free较小size的chunk时,会被分配到fastbin。相同容量的fastbin里的chunk被用单向链表存储起来,原数据区的第一行被用来存放FD指针。

如上图所示,第一次重新malloc如果命中size,将从fastbin上取回(a),并将(b)放到链表的开头。

如果我们可以覆盖(a)的FD,指向另一块内存,那再次malloc后就会得到位于那块内存地址的chunk。

如果Fake Chunk为某个标准函数的GOT地址,那么我们通过2次malloc得到这个chunk后,就能改写GOT地址为任意其他函数了。