LEVEL 1
level1 / level1을 입력해서 접속하면 아무것도 뜨지 않고 프롬프트만 나온다.
무엇이 있는지 모르니 일단 ls -al 명령어로 현 위치에 있는 파일과 디렉토리들을 모두 확인하면 위와 같이 목록이 출력된다.
hint라는 파일이 눈에 띈다. cat 명령어로 열어보자.
hint 파일에는 다음과 같은 내용이 적혀있다.
setuid가 무엇인지 몰라 구글링해 보니,
이것이 걸린 파일을 실행하면 자신의 아이디가 일시적으로 root 권한을 갖게 된다고 한다.
앞선 주차 연습들에서 파일을 찾기 위해서는 find 명령을 사용하면 된다는 것을 배웠다.
조금 더 구글링해 보니 특정 권한이 걸린 파일을 찾기 위해서는 -perm 옵션을 사용하면 된다고 한다.
setuid 권한이 걸린 파일은 4000번대로 표시된다는 것도 알 수 있었다.
위 조건을 만족함과 동시에, 파일의 소유주(user)가 level2인 파일이어야 할 것이다.
위 옵션을 모두 포함하여 검색해 보니 권한 거절 에러 메시지가 너무 많이 떠서 검색된 내용을 찾기가 어렵다.
에러 메시지를 제거하기 위해서는 이 명령을 사용하면 된다 : 2> /dev/null
2는 표준에러(STDERR)를 의미하고, >(꺾쇠)는 좌항을 우항으로 보내라는 의미이며,
/dev/null이라는 경로는 휴지통과 같다고 한다.
즉, '발생한 표준에러를 휴지통으로 보내라' 라는 뜻이다.
위와 같은 명령어를 위의 find 명령어의 말미에 덧붙여서 다시금 검색을 돌리면,
이렇게 필요한 검색결과만 나오게 된다.
조건을 만족하는 파일은 /bin 디렉토리에 있는 ExecuteMe라는 파일인 것 같다.
cd 명령어로 해당 디렉토리로 이동하여 파일 리스트를 출력해 봄과 동시에, 해당 파일에 대한 정보만 확인해 보기 위해 파이프라인 기호를 사용해 grep 명령어로 ExecuteMe 파일에 관한 정보만 출력하도록 해 보았다.
소유주가 level2이고, 권한에 특별한 점이 있다. 보통 권한 표시는 rwx로 표기되는데 이 파일은 rws라고 되어 있다.
이것은 setuid가 걸려있다는 뜻으로, 실행하면 root 권한을 주겠다는 뜻이다.
실행시켜 보자. 실행은 항상 파일경로 입력이다. (파일명 앞의 디렉토리는 ./로 생략 가능)
내용은 이렇게 나온다. my-pass를 직접 사용하는 것은 불가능하다고 한다.
프롬프트를 잘 보면 아까까지 level1로 로그인되어 있던 것이 level2로 로그인된 상태로 바뀐 것을 확인할 수 있다.
여기서 /bin/bash(혹은 그냥 bash)를 사용하면 쉘을 실행시킬 수 있고,
그 상태에서 치는 명령어들은 기본 쉘로 동작하게 된다.
bash 실행 후 whoami로 로그인 상태 정보를 확인해 보면 level2라고 뜨는 것을 확인할 수 있다.
이 상태에서 my-pass를 치면 패스워드를 얻을 수 있다.
LEVEL 2
level2로 넘어와서 hint 파일을 열어본 화면이다. 텍스트 파일 편집 중 쉘의 명령을 실행시킬 수 있다는 문장이 뜬다.
아직은 감이 잘 잡히지 않는다. 우선은 level1에서 했던 것처럼 setuid 권한이 걸린 파일을 찾아보자.
/user/bin 이라는 디렉토리의 editor라는 파일이 나왔다. 해당 디렉토리로 이동해서 (cd) 파일을 실행해 보자.(./editor)
이런 화면이 나왔다. 뭔지 감이 안 잡혀서 검색해 보니 Vi 에디터라는 것 같다.
유닉스 시스템에서 사용하는 텍스트 편집기라는 듯하다.
그러고 보니 힌트에서 '텍스트 파일 편집 중에 쉘의 명령을 실행할 수 있다'고 했으니...
에디터에서 Shift 키와 :(콜론) 키를 동시에 누르면 입력모드로 변환된다.
콜론 뒤에 커서가 생겼다면 ! 키를 먼저 누르고 (Vi 에디터에서 외부의 쉘을 실행시켜주는 명령어이다)
아까 했던 것처럼 /bin/bash 명령어를 쳐보자.
그러면 에디터가 종료되고, 로그인 정보가 바뀐 것을 볼 수 있다.
프롬프트에서도 보이겠지만, 유저 아이디가 level3으로 변경되어 있다.
물론 whoami 명령어로 확인해도 level3이라고 뜬다. 권한을 얻은 것이다.
그 상태에서 my-pass 명령어를 입력하면 level3의 비밀번호를 얻을 수 있다.
'LINUX' 카테고리의 다른 글
8주차 - [F.T.Z] Level4 ~ Level5 (0) | 2022.06.25 |
---|---|
7주차 - [F.T.Z] Level 3 (0) | 2022.06.19 |
5주차 - [Bandit: Over the wire] Level 6 ~ Level 10 (0) | 2022.05.16 |
4주차 - [Bandit: Over the wire] Level 0 ~ Level 5 (0) | 2022.05.12 |
3주차 - Trainer6~Trainer8 (0) | 2022.05.05 |