level9
힌트를 보면 /usr/bin/bof의 소스 코드가 존재한다. buf와 buf2가 존재하고, buf를 40글자 입력받는다. 그리고 buf2가 "go"일 경우, uid를 3010으로 설정한 후 쉘을 실행한다. 이때 주의해야 할 것은 buf가 10글자라는 것이다. 이를 통해 overflow 공격이 가능하다.
/usr/bin/bof를 gdb로 분석한 내용이다. 여기서 주의해서 볼 내용은 다음과 같다.
0x0804844b <main+43>: lea eax,[ebp-40]
0x08048457 <main+55>: lea eax,[ebp-24]
이는 각각 buf와 buf2를 나타낸다. 이 둘 사이에는 16의 간격이 존재한다. 즉 buf에 16글자를 채우고 나면 그 다음부터는 buf2에 대입이 된다.
/usr/bin/bof를 실행한 후 앞에 임의의 16글자를 채우고 "go"를 17, 18번째 글자로 입력하게 되면 buf2가"go"가 된다. 그러면 level10 권한으로 쉘이 실행된다. 그 상태에서 my-pass 명령어를 사용하면 level10의 password가 출력된다.
interesting to hack!
728x90
'CTF > 시스템' 카테고리의 다른 글
해커스쿨 FTZ level11 (0) | 2020.09.17 |
---|---|
해커스쿨 FTZ level10 (0) | 2020.08.27 |
해커스쿨 FTZ level8 (0) | 2020.08.22 |
해커스쿨 FTZ level7 (0) | 2020.08.22 |
해커스쿨 FTZ level16 (0) | 2020.08.20 |