System/LOB
[LOB] 13. darkknight -> bugbear
BadSchool
2019. 4. 26. 19:09


▲ 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 문자열 주소를 입력해 주면 된다.