2018. 7. 30. 10:30ㆍWarGame/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 |