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를 획득할 수 있었다.
'WriteUP' 카테고리의 다른 글
Simple_overflow_bof_ver_2 (0) | 2021.05.21 |
---|---|
Simple_size_bof (0) | 2021.05.21 |
[LOB] orge (0) | 2021.05.20 |
[LOB] darkelf (0) | 2021.05.20 |
[LOB] wolfman (0) | 2021.05.20 |