System Hacking

[HackCTF] x64 Buffer Overflow

ankisile 2020. 5. 16. 12:45

먼저 파일을 실행해 보았다.

문자를 입력받으면 그 문자를 출력하는 형태인것 같다.

 

보호기법이 뭐가 있는지 확인해 보았다.

NX가 걸려있다. 쉘코드를 사용하지 못한다.

 

IDA를 이용해서 뜯어보자

s를 입력받고 v5에는 s의 길이가 들어가고 printf를 통해 s를 출력한다.

s를 입력받을때 그 길이가 제한되어 있지 않으므로 여기서 오버플로우가 발생할 수 있다.

s의 크기는 0x110=272바이트이다.

 

예전에 이런 문제를 풀었는데 이때 함수를 이용하여 문제를 풀었다.

따라서 함수가 뭐가 있는지 확인한다.

callMeMaybe라는 함수가 있다.

이 함수의 주소는 0x400606이다.

자세히 살펴보자

이 함수는 쉘을 실행시키는 함수이다.

따라서 이 함수의 주소를 ret에 넣어준다면 풀릴 것이다.

 

s의 크기는 272바이트이고 sfp크기는 8바이트이다.

payload는 dummy값을 280바이트로 채운다음 그다음에 함수의 주소를 넣어주면 된다.