해커스쿨 FTZ를 텔넷포트인 23번 포트로 접속해줍니다.
로그인 하고 일단 ls명령어로 홈폴더의 내용물을 살펴봅니다.
누가봐도 힌트인 hint파일이 보이네요 ㅋㅋ
cat명령어로 내용물을 봐봅시다.
level2권한의 setuid를 찾으라고 하는군요.
여기서 setuid란 프로그램 실행시 유저가 사용하는 권한이 파일의 소유주의 권한이 되는것을 의미합니다.
즉 프로그램이 실행될때 유저가 level2의 권한을 얻게되는 프로그램이 존재합니다.
find 명령어를 통해 원하는 프로그램을 찾아봅시다.
find 명령어는 파일을 찾을 때 사용하는 명령어로 여러가지 옵션이 존재합니다.
위에서 제가 지정한 옵션은 최상위폴더부터 level2가 소유자이고 최소한 setuid가 걸려있는 파일을 출력하라는
옵션을 부여한것입니다.
하나하나 자세하게 설명하면
find / : 최상위폴더(/)부터 찾으라는 의미입니다.
-user level2 : 소유주(user)가 level2라는 것을 의미합니다.
-perm -4000 : 권한(퍼미션:per)이 -(최소) 4000으로 설정한다.
L리눅스의 권한 표기는 보통 3자리수로 설정합니다. 하지만 가끔 4자리수로 구성되어있을 때가 있는데 그때 맨 앞이 특수권한을 의미합니다. 4000또한 4자리수이기때문에 이 4가 특수권한을 의미합니다.(4:setuid, 2:setgid를 의미)
결과를 보면
저희가 접근할 수 없는 권한으로 설정되있는 폴더들 까지 건드리는 바람에 한페이지 가득 오류를 띄어버리네요 ㅠㅠ
옵션을 하나 더 추가해줍니다.
2>/dev/null 을 추가해주면 딱 하나의 바이너리를 출력해주네요 ㅎㅎ
이 바이너리가 저희가 찾아야하는 프로그램인것 같네요
여기서 2>/dev/null은
"2(표준에러)를 >보내라 /dev/null로"라는 의미입니다.
/dev/null 폴더는 저희가 필요없는 것들을 보내주면 없애주는 소각장같은 폴더입니다.
앞에 주어진 숫자는 (0:표준입력, 1:표준출력, 2:표준에러를 의미하는 컴퓨터계의 약속같은 겁니다.)
>는 리다이렉션 기호입니다.(검색해보시면 더 많은 정보를 얻으실수 있을겁니다.)
일단 원하는 바이너리를 얻었으니 거의 다 끝낸거나 마찬가지겠네요 ㅎㅎ
확실히 하기 위해 ls -al 명령을 통해 권한을 봐줍니다.
소유주는 level2고 그룹이 level1이라 실행 가능하겠네요 ㅎㅎ
./ExcuteMe로 바이너리를 실행해줍니다.
크~ 명령어를 하나 레벨2권한으로 실행해준답니다.
(my-pass는 FTZ만의 해당계정의 패스워드를 출력하는 명령어고 chmod는 리눅스에서 권한재설정 명령어입니다.)
고민할 필요없이 쉘을 실행시켜 레벨2의 쉘을 따줍니다.
따준뒤 my-pass하면 level2의 비밀번호를 얻을 수 있습니다!
level2의 비밀번호는 hacker or cracker 이군요~