unsortedbin_attack
知识点
glibc2.23
我们知道当一个chunk大于0x80时,再free掉的时候会进入unsorted_bin (先进先出),这时如果我们通过堆溢出等手段改变这个chunk的bk指针,这样再申请这样的堆块,就可以达到把bk指针的值造成改变
好好说话之Unsorted Bin Attack_unsortedbin attack-CSDN博客
这个师傅的图讲这里很清晰,这里借用一下
这是unsortedbin将一个堆块挂入时发生的变化
这是,我们改变chunk_400的bk指针后再申请堆快回来
可以看到我们可以再target处改写一个字节大小的值
例题:buu hitcontraining_magicheap
保护
这里其实有个后门,就是magic地址的>4869时,会进入后门
所以这题的思路很清晰了,就是要改变magic的值
怎么改变呢,这里要利用之这里堆溢出和unsorted bin 结构
经典编辑函数时字节溢出漏洞
我们进入动态调试
先创建3个堆快,再free掉第二个
1 | CreateHeap(0x30,'aaaa') |
因为我们要用unsorted bin所以第二个堆快的大小为0x80
接着我们利用堆溢出改变第二堆快的bk指针
1 | magic = 0x6020A0 |
先看目的magic地址
现在都是0
再创建完堆快之后
因为我们在申请了一个堆快,因为unsorted bin的指针呗改成的magic-0x10,所以我们申请的堆快在magic-0x10处,而magic被改写成了unsort bin原来的地址
这个值远远大一4869,所以我们只要按照题目要求输入4869就可以进入bookdoor了
exp
[BUUCTF]PWN——hitcontraining_magicheap-CSDN博客
脚本来源
1 | from pwn import * |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 鱼非愚!
评论