▲ LOB 12번 문제. golem -> darkknight 문제이다. darkknight.c과 darkknight 파일이 존재한다.
▲ 소스코드가 많이 간결해 졌다. argv[1]을 problem_child 인자값으로 넘겨 준다.
그런데 이번엔 strcpy가 아닌 strncpy로 BOF를 방지한다. 이럴 땐 어떻게 해야 할까?
▲ 바로 FPO(Frame Point Overwrite) 공격 기법을 사용하면 된다.
▲ 모든 함수들은 함수 프롤로그와 함수 에필로그로 구성되어 있어 스택 프레임을 유지하는데 사용한다. 우리는 이 특성을 이용해 SFP를 변조해준다.
▲ 원래의 SFP값은 0xbfffa94. 우리는 이를 이 뒤인 0xbfffa90을 이용한다. 이렇게 진행을 하게 되면 함수 에필로그 과정에서 다시 우리 쉘코드의 시작 주소로 이동하게 된다.
'System > LOB' 카테고리의 다른 글
[LOB] 14. bugbear -> giant (0) | 2019.04.26 |
---|---|
[LOB] 13. darkknight -> bugbear (0) | 2019.04.26 |
[LOB] 11. skeleton -> golem (0) | 2019.04.26 |
[LOB] 10. vampire -> skeleton (0) | 2019.04.26 |
[LOB] 9. troll -> vampire (0) | 2019.04.26 |