You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
然而对比 check 和 vm 中的执行过程,可以找到一条指令没有进行校验,用该指令加载字符串作为对象(越界)即可。
堆风水 TBC.
babyaegis
题目背景
题目开启了 address sanitizer
delete 函数可存在 UAF
关键位置
secret 函数写一个地方为0
通过一些操作,制造出一个 UAF
利用 uaf 进行任意地址读写
__sanitizer::Die()函数内部call rax 可挟持程序流程
babyheap
题目背景
题目实现了一个简单的堆分配,有Allocate,Update,Delete,View四个功能
题目限制了堆块大小只能是0x00 - 0x58
关键位置
题目漏洞在于Update中,存在着一个null off by one,但是这里没有unsorted bin,而想要unsorted bin需要触发malloc_consolidate来让多余的fast bin合并成unsorted bin,这一第一个问题就是,top比较大,很难触发malloc_consolidate,解决思路:利用null off by one来缩小top chunk,当top小到无法满足分配的时候,就会触发malloc_consolidate。
由于是libc 2.28的库,在null off by one攻击之后,可以使堆块重叠,如何获取shell是一个难题,在libc 2.28中,io vtable被废,所以劫持unsorted bin没有作用,而又不能申请0x60的块,这样无法直接分配到malloc hook位置,解决方案,任然选择利用fastbin attack,这里利用堆块高位0x55和0x53来最为合法的size,直接分配堆块到main arena,而top的指针就在fastbin下面,这样可以修改top指针,指向某个合法的位置,达到任意内存分配。