티스토리 뷰
[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 |
- overflow
- SQLi
- tcache
- pwnable
- FSB
- pwnable.tw
- codegate
- pwable
- ebp change
- HackCTF
- TLS
- oob
- shellcoding
- 해킹
- 본선가고싶다
- srop
- exit
- glibc
- rt_sigreturn
- fastbindup
- heap
- fastbin
- stack reusing
- hacking
- fsop
- Total
- Today
- Yesterday