FTZ level2 풀이
id: level2
pw: hacker or cracker
level1과 마찬가지로 ls -l을 이용해서 디렉토리 정보를 가져온다.
hint 파일이 존재한다! hint 파일을 읽어보자! (cat hint)
리눅스에서 텍스트 파일 편집은 vi (vi editor)이다. vi editor를 사용해서 쉘 명령을 실행시킬 방법을 찾아보자!
우리가 원하는건 level3의 pw이기 때문에 소유주가 level3인 파일을 find를 이용해 검색해보자!
find / -user level3 2> /dev/null을 입력해준다.
(검색의 편리함을 위해 오류가 나는 파일은 휴지통으로 버린다.)
검색 조건에 해당하는 파일 2가지가 출력되었다!
우리는 실행파일인 editor를 사용할 것이다.
.swp : 스왑파일, vi나 vim이 비정상적으로 종료되었을 때를 대비해 복구를 가능하게 하기 위해 임시로 저장되는 파일
->즉, 지금은 필요없는 파일!
editor가 존재하는 /usr/din으로 이동하자 (cd /usr/bin)
이동 후 ls -al 명령어를 이용해 editor 파일 존재여부와 권한을 확인해보았다.
-rwsr-x---에서 owner의 실행자리에 x나 -가 아닌 s가 있는 것을 확인할 수 있다.
=>setuid가 적용되어있다!
setuid: 파일 실행시 파일의 소유자 권한이 적용
즉, 사용자가 권한이 없어도 소유자 권한으로 실행이 가능하다는 뜻!
권한 표현 숫자모드: 맨 앞자리가 4nnn
권한 표현 문자모드: owner의 실행에 s 가 추가된다.
이제 editor를 실행시켜보자! (./editor)
vi editor가 실행되었다!
editor 파일에는 setuid가 걸려있어서 셸을 실행하면 level3의 권한으로 셸이 실행된다!
vi의 ex모드(명령 모드에서 ':' 입력 시에 화면 아래에 입력창이 뜨는 모드)에서 !를 사용하면
리눅스 명령어가 실행된다고 한다!
(ex) :!ls -al, :!cd , :!bash 등
시험삼아 ls -al 명령어를 입력해보자!
editor 상에서 ls -al 명령어가 잘 실행된 것을 볼 수 있다!
이제 my-pass를 이용해 비밀번호를 얻어보자!
my-pass 입력 외에도 셸을 띄울 수도 있다.
그렇지만 우리가 원하는 건 level3 의 pw 이므로 굳이 셸을 사용하지 않겠음
level3의 비밀번호를 얻었다!
level3 pw: "can you fly?"