本文是二进制安全之堆溢出系列的第十章节,主要介绍unsorted bin attack。
原理
- 实现效果
只能在任意地址写入一个大数
通常在一个地址写入7f,然后配合fastbin attack使用,达到任意地址写的效果
断链操作
/* remove from unsorted list */
bck = victim->bk
unsorted_chunks (av)->bk = bck;
bck->fd = unsorted_chunks (av); //此时fd中存放的是main_arena的地址
unsortedbin attack之后不能在遍历`unsorted bin链了,因为此时的main_arena的bk已经被我们改为target_addr,av->bk索引到的地址是一般是无法绕过check的。
因此需要提前malloc一个fastbin大小的堆块,在unsortedbin attack之前free掉它,在unsortedbin attack之后再malloc fastbin大小的堆块。
这时就能得到一个fd为main_arena地址的chunk
unsorted bin attack 流程