level 1
로그인 한 뒤 화면입니다.
아무것도 없습니다.
파일 목록을 확인하기 위해 ls -l 명령을 쳤습니다.
hint는 일반 파일이고, public_html과 tmp는 디렉토리입니다.
hint 파일에 어떤 내용이 있는지 cat 명령을 통해 알아보았습니다.
level2 권한에 setuid가 걸린 파일을 찾는다.
문장을 해석해봅시다.
찾는다 => find 명령을 사용한다.
level2 권한을 가지고 있다. => user 옵션 값에 level2가 들어간다.
setuid(비트로 표현하면 4로, 파일 실행 시 누구나 파일 소유자 권한으로 실행된다.)가 걸려있다. => perm 옵션 값이 setuid이다.
위를 토대로 명령을 완성해보겠습니다.
find / -perm -4000 -user level2
perm 옵션에 -4000의 값을 준 것은 오로지 setuid가 주어졌는지만 판단하기 위함입니다.
실행 결과입니다.
너무도 많은 Permission denied가 뜨네요.
아마 읽기 권한이 전부 없나봅니다. 찾으려면 눈 빠지겠네요.
이럴 땐 오류 리다이렉트를 사용하면 될 것 같습니다.
Permission denied도 오류 중 하나로 보통은 화면에 오류 문구가 출력되게 되어있습니다.
그러니깐, 오류의 출력방향은 화면이라는 거죠.
하지만 오류 리다이렉트를 통해 그 방향을 파일로 바꿔주는 것입니다.
저는 휴지통으로 보내겠습니다. 쓰기 권한이 없기 때문이죠 ㅋㅋ 휴지통은 /dev/null에 있습니다.
오류는 모두 휴지통에 들어가고, /bin/ExecuteMe가 setuid로 설정된 파일이라네요.
한 번 찾아가 실행해보겠습니다.
my-pass와 chmod는 제외라네요.
아무래도 다른 방식으로 푸는 것을 방지하려고 한 것 같습니다.
my-pass도 명령어인가 봅니다.
풀고 알아보니 문제 제작자인 멍멍님이 만든 명령어라네요.
그렇다면, 다른 쉘을 실행시켜봅시다.
성공적으로 실행됩니다.
이제 my-pass 명령을 통해 level2의 비밀번호를 알아냅시다.
문득 든 생각인데.. bash쉘 실행해서 level2 권한으로 다음 문제 푸는것도 가능할 수 있겠네요 ㅋㅋ