unsorted_bin_attack
unsorted bin attack
关于这个手法的学习,必须要搞清楚两件事,不然理解起来挺懵的。
第一、从unsorted bin中取堆块的时候,是从尾部取的堆块。
上图变为结构图为:
当从unsorted bin中拿取最后一个堆块时(unsorted bin中堆块是从最后一个取的,跟fastbin和tcachebin还不一样),会触发下面这部分的操作。
1 |
|
代码分析:
1 |
|
1 |
|
1 |
|
1 |
|
从上面的分析可以看出,在执行完这串代码之后,chunk3从unsorted bin中分离了出去。
这四步中,我们可以从第二步进行攻击,如果我们可以利用溢出来伪造这个bck(也就是victim->bk,大白话就是用溢出unsorted bin中的尾部的chunk的bk指针(fd指针无所谓)),这就意味着我们可以将unsorted_chunks (av)(这个也就是main_arena+88/96的地址)写入到我们伪造的chunk的bck->fd(也就是bck+0x10)中。如果我们将伪造的地址先-0x10,那么最后这个伪造的地址就会被写入main_arena+88或main_arena+96的地址。
1 |
|
unsorted_bin_attack
http://ak0er.github.io/2024/05/04/unsorted-bin-attack/