Level1을 클리어 하고 얻은 password를 가지고 level2를 접속했더니 level1과 마찬가지로 hint가 보이는군요.
친절하게 hint를 제공해주셨기에 당연하게 열어보겠습니다.


"텍스트 파일 편집 중 쉘의 명령을 실행시킬 수 있다는데...."라는 힌트가 제공되는군요.


여기서 말하는 텍스트 파일 편집은 vi를 생각하시면 됩니다.
vi(vim)이란 리눅스에서 제일 기본이 되는 텍스트 편집기입니다. 윈도우의 메모장(notepad)와 같은 역할을 하신다고 보시면 됩니다.

GUI기반인 메모장과 달리 CLI기반인 vi는 크게 3가지의 모드가 있습니다.
1. 입력모드 : i, e, o, I, A, O를 누른후 텍스트를 입력할수 있는 상태
2. 명령모드 : esc키를 누른 상태
3. 콜론(ex)모드 : 명령모드 상태에서  :(콜론)을 입력한 상태

그리고 이러한 기본적인 모드들을 메모장의 기능과 비교해보면 다음과 같습니다.
1. 입력모드 : 타이핑을 하여 파일의 내용을 입력하는 모드
2. 명령모드 : 편집 메뉴에서 제공하는 복사, 붙이기, 삭제 등의 편집기능을 활용하는 모드
3. 콜론(ex)모드 : 다른 편집기의 파일 메뉴에서 수행하는 열기, 저장, 다른 이름으로 저장 등의 명령 수행
각 모드의 자세한 사용법은 vi 위키 참고(http://ko.wikipedia.org/wiki/Vi)


여기서 문제를 푸는데 핵심인 모드는 콜론(ex)모드입니다.
클론모드의 핵심중 하나는 :sh를 입력할 경우 쉘 창을 띄워 리눅스 명령어를 입력 할 수 있다는 것인데요.
이때 쉘의 권한은 vi를 실행할때 사용자 권한과 같이 갑니다.


그럼 한번 해보도록 하죠.
$ vi를 입력해 vi창을 띄운후 콜론모드에서 sh를 입력해 쉘을 띄우겠습니다.


아래를 보시면 쉘이 띄워짐을 알수 있습니다.


whoami 명령어를 통해 현재 사용자가 누구인지 한번 보도록 하겠습니다.


확인 결과 현재 사용자는 whoami로 나왔습니다. level2사용자로 로그인해 실행하였기 때문에 당연한 결과입니다. 
하지만 vi에 setUID가 설정되어 있었다면 setUID가 설정된 계정의 권한으로 실행이 되었겠죠.


따라서 level1의 기억을 되살려 lelve3에 setUID가 걸린것을 찾아보도록 합시다.
$ find / -perm -4000 -user level3 2> /dev/null 명령어를 입력해주면 됩니다.


/usr/bin/editor가 출력되었네요.

/usr/bin/editor을 실행해 보면 vi와 같은 창이 뜹니다.
당황하지 않고 콜론모드에서 sh를 입력해 쉘을 띄워준후 whoami로 사용자를 확인합니다.


빙고! whoami 결과 level3으로 뜨네요
level3의 권한을 획득하였습니다. 그럼 이제 my-pass로 level3의 비밀번호를 획득하면 됩니다.

level3의 암호를 얻었습니다.

암호는 can you fly?입니다.

+ Recent posts