문제분석 & 풀이
hint 파일이 있어서 바로 읽어봤다.
텍스트 파일 편집중에 쉘 명령을 실행시킬 수 있다고 한다.
아마 텍스트 파일 편집 중에 "/bin/bash"을 실행해서 셸을 따내는 것이 목표인 것 같다.
먼저,level3의 setuid를 가진 파일을 먼저 찾아보자.
find 명령으로 검색해보니 /usr/bin 경로의 editor라는 파일이 검색됐다.
경로에 접속해 파일을 확인해보니 level3 권한인 것을 확인 할 수 있다.
실행해보니 vi 에디터가 실행되는 것을 확인 할 수 있다.
힌트의 내용을 다시 확인해보면 "텍스트 파일 편집중에 쉘 명령을 실행시킬 수 있다" 라고 했다.
지금 실행된 vi 에디터를 이용하여 level3의 setuid 권한으로 쉘 명령을 실행하라는 의미인데, 어떻게 실행 할 수 있을까?
명령을 실행하는 방법을 알기 위해서는 vi 에디터에 대해 기본적인 것을 알아야 한다.
vi 에디터는 기본적으로 3가지의 모드를 지원한다.
1. 입력모드
2. 라인모드
3. 명령모드
이 중에서 핵심적으로 알아볼 모드는 2번 라인모드이다.
vi 에디터를 사용해본 사람들이라면 알겠지만 ":w" , ":q" 와 같은 명령어들을 이용하여 vi 에디터로 편집한 파일을 저장하거나 편집을 빠져나온다.
이와 같이 ":[명령어]" 의 형식으로 명령을 실행하는 모드를 라인모드라고 한다.
라인모드의 기본적인 명령어들은 여러가지가 있지만 그 중에서도 특별한 명령어가 하나 있다.
바로 ! 인데 !를 사용하는 경우에는 쉘 명령어를 강제로 실행 할 수 있다.
그렇다면 !를 이용하여 my-pass를 실행한다면?
level3의 패스워드를 알아낼 수 있을 것이다!
직접 !를 이용하여 my-pass를 실행해보자.
위와 같이 !를 이용하여 my-pass를 실행했다.
결과는?