티스토리 뷰




※ 레벨에대한 정확한 비밀번호를 알려드지는 않습니다.  힌트와 해결과정을 포스팅하려고합니다.

※ 이 게시물은 시스템에대한 폭넓은 이해를 돕기위함이며, 이 게시물을 악용하여 발생한 피해는 책임지지 않습니다.

※ 최대한 스스로 풀어보시기를 권합니다.




- level2는 VI 편집기 기능 가운데 파일열기, 파일 닫기(저장), 문자열 검색, 문자열 변경, 커서 이동, 페이지 이동 같은 기능 이외에 VI에서 제공하는 고급 

기능 이상을 구사할 수 있어야 한다.




↑ vi편집기를 사용하는 중 쉘의 명령을 사용할 수 있다고 한다.



↑ aaa라는 파일을 임의로 만들고 vi편집기 중에 명령어를 사용해 보려고한다.

#":!명령어" 형식으로 명령어를 실행하면 쉘 화면으로 일시적으로 복귀하면서 입력한 명령어를 실행할 수 있다.


↑ ls 명령어가 실행된 모습이다. enter를 누르면 다시 vi편집기로 돌아갈 수 있다.




"r!명령어" r옵션을 추가해주면 실행한 명령어의 결과를 바로 vi내용에 추가할 수 있습니다.



↑ ls -al의 실행결과를 vi편집기 내용에 추가할 수 있다.



↑ level1에서 사용했던 find명령어를 사용해 level3의 SetUID가 걸린 파일을 찾아 보았다.

# usr/bin/editor 등장 옵셥을 보니 편집기가 실행되는 동안 level3의 권한을 가질 수 있는 것 같다.



↑ hint에서 요구하는바  '텍스트 파일 편집중 쉘의 명령어를 사용할 수 있다' 라고 했다. 그렇다면, id 명령을 통해 권한을 확인해보면



↑ 역시 level2의 쉘에서 실행한 id와 editor쉘에서 실행한 id명령이 차이가난다.

#userID는 level3이지만 Group ID가 level2의 권한을 가지고 있으므로 level2가 실행할 수 있는 환경이다.



↑ 우리가 얻고자 하는 명령어를 사용해보면.



↑ 우리가 원하는 답을 얻을 수 있다.



↑ 쉘사용 명령어를 사용하면



↑ 쉘 스크립트를 얻을 수 있고,  my-pass명령을 통해 비밀번호를 얻을 수 있다.