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