티스토리 뷰

pwnable/LOB

[LOB] skeleton -> golem write-up

ba0bab 2018. 2. 14. 02:02



[LOB] skeleton -> golem


id : skeleton

pw : shellcoder


먼저 힌트를 보겠습니다.




코드입니다.



ret을 제외한 모든부분을 0으로 초기화를 합니다.


환경변수는 물론 buffer와 argv까지 이용을 못합니다.


그래서 다른 방법을 이용해야 합니다.


바로 공유라이브러리를 사용하는 것 입니다.


LD_PRELOAD 환경변수에 등록시켜놓으면 실행을 할때 우선적으로 설정한 라이브러리가 참조되기 때문에 라이브러리를 실행할때, 스택 어딘가에 저장이 되고 이를 이용해서 쉘을 따면 됩니다.



먼저 아무것도 없는 코드를 짠 후



컴파일을 해줍니다. 여기서


-fPIC는 독립적인 코드로 만들어 주고 목적파일을 만들고


-shared는 목적파일을 이용해 공유라이브러리를 생성 할 때 사용하는 옵션입니다.


보통 2개 다 씁니다.


이제 LD_PRELOAD에 환경변수를 추가해야 합니다.

이렇게 환경변수를 등록해줍니다.


경로를 적어야 합니다.


이제 실행 파일을 실행하면 스택 어딘가에 저 쉘코드가 있을 것 입니다. 찾아 보겠습니다.


프로그램이 실행 되기 전에 로드 되니깐 버퍼보다 앞에 있겠네요 적당히 -5000부터 찾아보겠습니다.




쭉 찾다보면


여기 놉들이 있습니다.


0xbffff5a0을 주소로 잡고 공격을 해보겠습니다.


payload 입니다.


./golem `python -c 'print "\x90"*44+"\xa0\xf5\xff\xbf"'`


실행해보면


쉘을 획득하였습니다.


실제 파일에 공격을 해보겠습니다.

권한이 획득되었습니다.


golem의 password는 “cup of coffee” 입니다.




'pwnable > LOB' 카테고리의 다른 글

[LOB] vampire -> skeleton write-up  (0) 2018.02.14
[LOB] troll -> vampire write-up  (0) 2018.02.11
[LOB] orge -> troll write-up  (0) 2018.02.11
[LOB] darkelf -> orge write-up  (0) 2018.01.27
[LOB] wolfman -> darkelf write-up  (0) 2018.01.27
Comments