농소

The Lord Of The BOF // skeleton -> golem (hooking) 본문

Wargame/The Lord Of The BOF

The Lord Of The BOF // skeleton -> golem (hooking)

농소 2018. 2. 13. 02:13

이번에도 문제를 풀어보겠습니다.




이번에 추가된 바로는 stack destroyer가 추가되었네요 스택을 전부 못쓰게 막아놨습니다.



gdb로 살펴본 결과 스택에 쉘코드를 넣을 공간이 아무리 찾아봐도 없네요

후킹기법을 이용 해야겠네요



우선 hook.c라는 간단하게 원본geteuid함수에 갈것을 7777로 낚아채는 코드를 만들었습니다.



gcc를 이용하여 공유라이브러리 형태로 만들어주고



LD_PRELOAD라는 환경변수를 추가하여 직접만든 공유라이브러리 PATH를 값으로 지정해줍니다.

이렇게 하면 어떤것이든 실행을 할때 이 해당 공유라이브러리가 먼저 실행이 됩니다.

id라는 명령어를 쳐본결과 euid가 7777로 반환됨을 확인이 되었습니다

후킹이 제대로 먹히네요

여기서 물론 편하게 다음 레벨의 euid에 접근하여 my-pass를 해주면 쉽게 비밀번호를 캐낼수 있지만

편법이므로 이 후킹을 이용해 다른방법으로 접근해 보겠습니다.



같은경우 제가만든 hook.so라는 공유라이브러리 파일에 심볼릭 링크를 걸어 쉘코드를 입히는 방식으로 진행하겠습니다.

우선 제가 쓰는 쉘코드의 경우 "\x2f"가 존재하여 경로를 따로만들어 주어야합니다

항상 하던대로 경로를 만들어주었고



심볼릭링크를 이용하여 쉘코드를 넣었습니다.



그리고 이것을 LD_PRELOAD의 값에 해당 PATH를 설정해주고



env로 확인한 결과 정상적으로 쉘코드가 들어가있음을 확인해줍니다.



이제 gdb를 이용하여 해당 경로를 찾아줍니다. 0xbffff4c3에 위치해 있네요



찾은 주소를 넣어준결과 쉘이 실행이 되어 권한상승이 발생했습니다.