bugbear의 소스를 확인하는 것으로 시작하겠습니다.
스택이 배신을 했다고 나오네요. 시작주소가 메모리의 시작주소가 \xbf인 곳은 사용 불가능합니다.
그럼 메모리의 공유 라이브러리 쪽의 함수를 사용하는 RTL기법을 사용하면 될듯 합니다.
RTL기법은 LOB gate를 풀 때 보다 자세히 적어 놓았습니다.
http://grayfieldbox.tistory.com/entry/LOBLord-Of-BufferOverflow-gate-gremlin
system(“/bin/sh”);라는 명령어를 스택에 구축하도록 하겠습니다.
만들어주어야 하는 스택의 모습은 다음과 같습니다.
“/bin/sh”’s address |
junk(4byte); |
system()’s address |
SFP |
buffer(44byte) |
우선 system()함수가 들어있는 주소를 알아내도록 하겠습니다.
0x40058ae0에 system()이 존재하네요.
이제 /bin/sh의 문자열을 메모리에 넣고 주소값을 얻어내겠습니다.
/bin/sh가 들어있는 주소는 0x400fbff9입니다.
페이로드는 다음과 같이 됩니다.
“A”*44 + “\xe0\x8a\x05\x40” + “\x90”*4 +”\xf9\xbf\x0f\x40”
예상대로 쉘이 획득 되었습니다.
이제 원본 파일을 대상으로 진행하겠습니다.
성공적으로 bugbear의 쉘이 획득 되었습니다.
bugbear의 패스워드는 new divide입니다.
'HackerSchool Series > L.O.B.' 카테고리의 다른 글
[L.O.B.(Lord Of BufferOverflow)] giant -> assassin (0) | 2016.01.25 |
---|---|
[L.O.B.(Lord Of BufferOverflow)] bugbear -> giant (0) | 2016.01.25 |
[L.O.B.(Lord Of BufferOverflow)] golem -> darkknight (0) | 2016.01.23 |
[L.O.B.(Lord Of BufferOverflow)] skeleton -> golem (0) | 2016.01.23 |
[L.O.B.(Lord Of BufferOverflow)] vampire -> skeleton (0) | 2016.01.22 |