소스를 보면 RET값에 공유 라이브러리 영역과 스택영역값을 쓸수없도록 되어있다. 일반적으로 생각했을땐 익스플로잇 하기 힘들다 생각할 수 있지만 RET Sled 기법을 사용하면 우회가 가능하다.
RET값에 RET명령어의 주소값을 넣어주면 RET가 2번실행되면서 기존에 BOF통해 덮은 RET + "4바이트"의 4바이트 지점으로 EIP가 이동된다. 그럼 환경변수를 통해 쉘 코드를 올려놓고 RET 뒤의 4바이트값을 쉘코드 주소로 넣어주면 된다. ret명령어 주소는 main 함수의 맨 마지막에 있는 ret명령어 주소값을 썼다.
'Wargame > Lord Of the Bof(redhat)' 카테고리의 다른 글
LOB zombie_assassin -> succubus (0) | 2018.01.11 |
---|---|
LOB assassin -> zombie_assassin (0) | 2018.01.11 |
LOB bugbear -> giant (0) | 2018.01.11 |
LOB darkknight -> bugbear (0) | 2018.01.10 |
LOB golem -> darkknight (0) | 2018.01.09 |