death_knight의 소스를 확인하도록 하겠습니다.
이코드는 port를 6666으로 설정하고 256byte의 입력을 받아 buffer에 저장합니다.
Buffer의 크기가 40byte이므로 overflow가 발생하죠.
L.O.B.서버의 6666포트로 접속 하니 문장을 하나 출력하고, 입력을 받고 종료하네요.
메모리에 로드되는 위치를 알 수 없으므로 브루트 포싱으로 ret값을 변경하며 페이로드를 전달하도록 하겠습니다.
페이로드의 쉘코드는 역으로 쉘을 연결하는 리버스 쉘 코드이며, peda로 얻었습니다.
192.168.0.12의 22222포트로 접속을 연결하는 쉘코드입니다.
리버스 쉘을 netcat을 통해 받아오도록 합니다.
ret를 브루트포싱하여 페이로드를 구성하고 전달하는 파이썬을 작성합니다.
이제 공격 하고 기다리면 됩니다.
death_knight의 쉘이 획득되었습니다.
death_knight의 패스워드는 got the life이네요.
death_knight로 접속해 보도록 하겠습니다.
들어가서 있는 파일을 출력하면 다음과 같이 마법진이 나옵니다.
이로서 LOB의 모든 문제가 다 풀렸습니다.
수고하셨습니다.
'HackerSchool Series > L.O.B.' 카테고리의 다른 글
[L.O.B.(Lord Of BufferOverflow)] nightmare -> xavius (0) | 2016.01.30 |
---|---|
[L.O.B.(Lord Of BufferOverflow)] succubus -> nightmare (0) | 2016.01.30 |
[L.O.B.(Lord Of BufferOverflow)] zombie_assassin -> succubus (0) | 2016.01.28 |
[L.O.B.(Lord Of BufferOverflow)] assassin -> zombie_assassin (0) | 2016.01.26 |
[L.O.B.(Lord Of BufferOverflow)] giant -> assassin (0) | 2016.01.25 |