[어설픈] LOB 13번 darkknight 문제풀이

2019. 4. 2. 10:50System Hacking/[LOB] Hacker School

안녕하세요! 

오늘은 LOB 13번 문제인

darkknight 문제 풀이를 해보도록 하겠습니다!


소스에 RTL1이라고 되어 있네요!

소스 자체도 매우 간단하네요!


버퍼 크기가 40이고

argument 개수가 2개이상이여야 하고!

스택으로 return 하면 안되고!

strcpy에서 취약점 터지고요!


문제를 분석해보니 LOB gate 문제에서

stack return만 막아 놓은 문제 같은데요?


근데 방법은 LOB gate와 똑같이 하면 될 거 같아요!

왜냐면 그때도 return은 library에 있는 system함수로 했거든요! 



자 오랜만에 ldd 명령어를 이용해서

bugbear가 어떤 라이브러리 의존성을 가지고 있는지 확인!

 역시 /lib/libc.so.6을 사용하네요!

(주소는 0x40018000)



그리고 nm 명령어를 통해

/lib/libc.so.6 파일에서 system 함수의 주소를 알아낼게요!

주소는 /lib/libc.so.6 + 00040ae0!



마지막으로 strings 함수로 /lib/libc.so.6에서

/bin/sh 문자열을 찾아보니!

6개가 뜨는데 저는 맨 마지막꺼 사용할게요!


/lib/libc.so.6 주소 + 000e8778 : /bin/sh 주소



그래서 아래와 같이 다시 한번 보기좋게

정리해봤습니다!


RTL은 제가 FTZ에서도  풀었고 LOB 초반에도 풀었으니

방법 설명은 안해도 되겠죠?


payload는 다음과 같습니다!

a를  44개(더미 값) + system 함수 주소 + aaaa(더미 값) + /bin/sh 주소


그래서 성공적으로 쉘을 따고

비밀번호를 얻었습니다!

고생하셨습니다!