감자 텃밭

64bof_basic 본문

my_study/HackCTF

64bof_basic

g2h 2021. 5. 21. 17:05

HackeCTF 64bof_basic 문제

 

해당 프로그램을 실행시켰을때는 특정값을 입력받고 입력을 받으면 Hello [입력받은 값]이 출력 된다.

프로그램의 실행 모습

메모리 보호기법이 어떤것들이 작동하고있는지 먼저 확인해보았다

RELRO와 NX가 걸려있다 RELRO는 자세히모르고.. NX가 걸려있는걸로 봐서는 쉘코드를 실행시킬 수 없는 거 같다.

해당문제를 gdb로 확인해보았다.

흠.. 특별한거는 딱히 없는 거 같다 스택의공간을 0x120(288)만큼 확보 후 입력을 받고 출력을하는?거 같다

 

그리하여

숨겨진 함수가 있는지 확인해보았다.

함수목록

callMeMaybe라는 수상한 함수를 찾았다.

해당 함수를 확인해보았을떄 /bin/bash를 인자값으로 받아오는 걸 보니 대충 쉘을 실행시켜주는 프로그램인 거 같다

그렇다면 돌아가서 메인함수에서 scanf를 사용하니 저기서 버퍼오버플로우를 이르켜 ret에 해당 callMeMaybe 함수의 주소를 넣으면 해당 함수를 실행시키며 쉘이 실행 될 거 같다. 일단 시도해보자 

callmemaybe함수의 시작주소는 0x0000000000400606이다.

 

 

payload는 dummy(272)+sfp(8)+ret(8 (callmemaybe)) 로 작성하면 될 거 같다. 당연한 거 지만 sfp와 ret가 8바이트인것은 64bit 실행파일이기 때문이다.

 

해당  payload를 작성하고 실행시키면!!

실행성공!

성공적으로 쉘을 획득하고 flag를 획득할 수 있었다.

'my_study > HackCTF' 카테고리의 다른 글

Simple_overflow_bof_ver_2  (0) 2021.05.21
Simple_size_bof  (0) 2021.05.21
내 버퍼가 흘러넘친다!!  (0) 2021.05.18
Basic_BOF#2  (1) 2021.05.17
Basic_BOF#1  (2) 2021.05.17