-
[F.T.Z] Level 19Wargame/F.T.Z 2022. 10. 5. 05:08반응형
Level 19를 풀어보자.
Level 19의 hint를 살펴보자.
F.T.Z의 초반 Level에서나 보던 아주 짧은 hint다.
3줄이기는 하지만 buf 배열도 있고, overflow를 할 수 있는 gets 함수도 있다.
있을건 대충 있는 것 같으니 다음 단계로 가보자.

<Level 19의 hint> gdb로 attackme 파일의 main을 분석해보자.
buf 배열이 ebp에서 40 바이트만큼 떨어져 있는 것이 보인다.
sfp의 4 바이트를 더하면 ret까지는 44 바이트만큼 떨어져 있다는 것을 알 수 있다.
NOP를 44 바이트만큼 채우고 ret를 변조하면 공격이 될 것이다.

<attackme 파일의 gdb 분석> 이번 문제는 main 함수에 setreuid가 없으므로, setreuid가 포함된 쉘코드로 환경 변수를 만들도록 하자.
쉘코드의 앞에 NOP를 25 바이트만큼 넣은 것은 특별한 이유는 없다.
단지, NOP를 어느 정도 넣으니 쉘코드가 더 잘 실행되었다. (다른 블로그들도 많이들 하고 있었다..)

<환경 변수 선언> 선언한 환경 변수의 주소를 알아보기 위해 코드를 작성한다.
앞의 Level 들에서도 많이 했었기 때문에 넘어가도록 하자.

<환경 변수의 주소를 알기 위한 코드> NOP를 44 바이트만큼 채우고, 환경 변수의 주소를 입력한 페이로드로 공격을 수행한다.
그러자 비밀번호가 나타났다.

<나타난 비밀번호> 반응형'Wargame > F.T.Z' 카테고리의 다른 글
[F.T.Z] Level 20 (1) 2022.10.09 [F.T.Z] Level 18 (0) 2022.10.05 [F.T.Z] Level 17 (0) 2022.10.01 [F.T.Z] Level 16 (1) 2022.09.30 [F.T.Z] Level 15 (0) 2022.09.29