pwnable 5번 문제인 x64 Buffer Overflow 이다.

 

입력을 받고 Hello와 내가 입력한 내용을 그대로 출력해준다.

 

제목 그대로 64비트 elf 파일이고, NX-bit가 걸려있으니 쉘코드를 실행 못하고, RELRO도 걸려있으니 got overwrite 도 못한다.

scanf로 s에 문자열 입력을 받는다.

더미값으로 채워서 ret을 덮을 수 있을 것이다.

그럼 ret에 넣을 뭔가 주소를 찾아야하는데..

callMeMaybe 함수가 보였다.

보다시피 쉘을 준다.

callMeMaybe 함수의 주소를 확인했다.

64비트 환경에서 sfp는 8바이트다.

그리고 s의 위치는 rbp-110h이다.

즉, s에 0x110 + 8(sfp) 만큼 더미데이터를 입력하고, callMeMaybe 함수의 주소로 ret을 덮어쓰면 될 것이다.

0x110 = 272(10)

272 + 8 = 280

p callMeMaybe = 0x400606

익스코드를 짜보자.

 

성공적으로 익스플로잇이 된다.

+ Recent posts