[L.O.B.(Lord Of BufferOverflow)] darkknight -> bugbear
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입니다.