house_of_botcake 是针对2.29对double free做出限制以后提出的利用方法
fastbin_reverse_into_tcache 是利用fastbin实现一个类似于unsorted bin attack的效果
0x01 house_of_botcake
1 |
|
先申请7个chunk,然后再申请出一个a和一个prev,我们最后会对这个a进行攻击。(注意先申请prev,再申请a,顺序不能乱)
1 | for(int i=0; i<sizeof(x)/sizeof(intptr_t*); i++){ |
随后把tcache填满,释放a和prev,释放a和prev,这个时候a和prev合并了,都在unsortedbin中
1 | for(int i=0; i<7; i++){ |
然后实现double free,此时没有相同指针在bin和tcache中
1 | puts("Step 4: add the victim chunk to tcache list by taking one out from it and free victim again\n"); |
最后更改fd,完美
1 | intptr_t *b = malloc(0x120); |
0x02 fastbin_reverse_into_tcache
1 |
|
这个给的代码例子看起来貌似很复杂,但实际上是挺简单的过程,概括起来就是
先把tcache填满,然后再给fastbin填6个
1 | char* ptrs[14]; |
然后再修改fastbin尾部那个chunk的fd,把tcache清空。当从fastbin中取出chunk的时候,会把其它的fastbin中的chunk反向插入到tcache中,这样就可以实现把目的地址的fd写上一个堆地址。
1 | //------------VULNERABILITY----------- |