经典的fastbin attack
在先前的学习中,我忽视了一个非常简单的利用堆溢出来求libc地址的问题,怎么说呢,感觉还是对这块不太熟悉,
就这一道菜单题,他并没有对输入的长度做判断,因此我们可以从一个堆块溢出到另一个堆块上。
我不会的点就在于把没有释放的堆块放在已经释放的堆块内,于是我做了这道题加以查漏补缺
这个堆块控制的步骤是,首先我们要知道得利用unsortedbin 来泄露出堆的地址
- 提前申请几个小堆块
- 利用第一个chunk的溢出,修改第二个chunk的size,能够覆盖下一个堆块(第三个)。
- free第二个chunk,再申请回来
- 利用这个chunk 改大第三个chunk (free能后进unsortedbin )
- 通过第二个chunk读第三个chunk的fd(main_arena+88的地址)
首先呢,我们先申请以下几个堆块
add(0x10)#0 |
其次利用第一个chunk的溢出,修改第二个chunk的size,能够覆盖下一个堆块(第三个)
edit(0,0x20,p64(0x61)*4) |
修改后的索引所对应的位置并不会改变
delete(1) |
add(0x50) |
edit(1,0x20,p64(0x91)*4) |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 cccchen!
评论
GitalkDisqus