LOB - 13. darkknight-> bugbear

2018. 7. 30. 10:30WarGame/LOB

이번문제 코드를 보자마자 기분이 좋았습니다. :)

마찬가지로~~


로그인을 합니다.


\


코드를 살펴봅니다.




간단하게 해석하면 리턴 맨앞을 "\xbf"로 맞춰주고, 인자는 1개이상 넣어줘야겠군요.

하지만 (stack betrayed you!!\n");부분을 보니 스택은 사용이 안되겠군요 ㅠ

저번 2번문제를 RTL로 풀었던 기억이 나네요.. 그대로 하면 됩니다.




RTL기법을 이용해서 쉘을 탈취한다.


RTL기법이란 (Return-to-Libc)의 약자로 리턴을 libc로 주는 것이다.

함수가 실행될때에는 system이라는libc를 사용하게되는데. 이 함수내에는 우리가 원하는 "/bin/sh"도 포함이 되어있다.

ASLR이 적용되어있지않아서 저 함수가 실행되게끔 이동하게된다면 shell을 얻을 수 있을 것이다.

RTL기법이 CTF에서도 많이 사용이 가능하기때문에 이포스팅에선 이 방법을 택할 것이다.


tmp폴더를 생성하고 그 폴더에 복사본을 옮긴다.



tmp폴더 내에서 디버깅을 해서 system 함수의 주소를 찾는다.

참고) ASLR이 적용되어있지않아서 주소는 모두 같을 것이다.

system 함수 주소 : "0x40058ae0"



이제 문제는 system 함수 내에서 "/bin/sh"를 찾는것이다.

직접 x/100s $esp로 찾아도 좋지만, 컴퓨터가 우리보다 빠르니 프로그램을 작성하도록 하죠!



프로그램을 돌렸더니"/bin/sh"의 위치가 "0x400fbff9"가 나왔습니다.



그래도 exploit해주면 될거같습니다.



성!공!

(grin)

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

LOB - 15. giant -> assassin  (283) 2018.07.30
LOB - 14. bugbear-> giant  (277) 2018.07.30
LOB - 12. golem -> darkknight  (277) 2018.07.30
LOB - 11. skeleton -> golem  (268) 2018.07.29
LOB - 10. vampire -> skeleton  (261) 2018.07.29