▲ LOB 13번 문제. darkknight -> bugbear 문제이다. bugbear.c 와 bugbear 파일이 존재한다.
▲ RET를 덮었을 때 0xBF으로 시작하면 안된다고 한다. 즉, stack을 이용할 수 없다. 그럼 어떻게 해야할까?
▲ 힌트에도 나와 있었듯이 RTL (Return To Libc) 공격기법을 이용하면 된다.
RTL 공격 기법이란 모든 프로그램이 불러오는 공용 라이브러리에 있는 함수를 이용해 공격하는 것이다.
이중에서 우리는 system()함수를 이용하여 /bin/sh를 실행시킬것이다.
▲ gdb 에서 print system으로 system함수의 주소를 알아내고, 간단한 c코드로 /bin/sh의 문자열 주소를 알아낸다.
system함수는 인자값이 두개인데 그 중 뒤의 인자값에 넣어주면 된다.
▲ 따라서 우리는 RET에 system함수 주소 + NOP[4] + /bin/sh 문자열 주소를 입력해 주면 된다.
'System > LOB' 카테고리의 다른 글
[LOB] 15. giant -> assassin (0) | 2019.04.26 |
---|---|
[LOB] 14. bugbear -> giant (0) | 2019.04.26 |
[LOB] 12. golem -> darkknight (0) | 2019.04.26 |
[LOB] 11. skeleton -> golem (0) | 2019.04.26 |
[LOB] 10. vampire -> skeleton (0) | 2019.04.26 |