Pwnable/HackCTF

[HackCTF] x64 Buffer Overflow 문제 풀이

RootJJang 2022. 1. 4. 19:31
SMALL

오랜만에 HackCTF 문제 풀이를 해보겠습니다.

 

파일을 다운로드하여 파일 정보를 확인하고 실행시켜봅니다

64-bit 파일이므로 IDA 64-bit로 열어 소스코드를 확인해봅니다.

 

char형 변수 s와 int형 변수 v5를 선언해주고 s를 입력받은 다음 입력받은 문자열을 출력해주네요

다른 함수가 뭐 있는지 보던 중 callMeMaybe라는 함수가 눈에 띄어 한 번 코드를 확인해보겠습니다

 

 

여기서 쉘을 실행할 수 있네요

 

main 함수의 scanf에서는 보호 기법 때문에 bof의 취약점이 막혀있어 쉘코드 삽입은 불가능하니 ret 주소를 callMeMaybe 함수의 시작 주소로 바꿔 쉘을 따내면 될 것 같습니다

 

gdb로 분석해 페이로드를 어떻게 짤지 확인해보겠습니다

 

<+24> 부분을 보면 알 수 있다시피 110byte를 채워주고

callMeMaybe 함수의 시작 주소를 리틀엔디언으로 채워주면 페이로드 완성입니다.

 

 

Paylod : (python -c 'print "A"*280 + "\x06\x06\x40\x00\x00\x00\x00\x00"'; cat) | nc ctf.j0n9hyun.xyz 3004

 

HackCTF{64b17_b0f_15_51mpl3_700}

 

LIST