터미널 창을 켜고
ssh level1@ 레드햇 창의 아이피 주소
를 치면 비밀번호를 치라고 나온다 .
level1의 비밀번호
level1을 쳐주면
드디어 level1의 문제를 풀 수 있는 환경이 만들어진다.
ls -al 명령어를 통해 무슨 파일들이 있는지 한번 봅시다!
저기 hint 라는 파일이 있네요
cat hint
명령어를 통해 어떠한 힌트가 있는지 한번 봅시다.
"level2 권한에 setuid가 걸린 파일을 찾는다."
라는 힌트가 나왔습니다.
*setuid 는 멀티유저시스템인 리눅스/유닉스에만 있는 독특한 개념입니다!
setuid는 마치 회사의 사원증 같은 겁니다. 사원증이 있어야 회사에 들어갈 수 있죠.
만약 이 사원증을 누군가에게 넘겨준다면 그 사원증을 넘겨 받은 사람은 일시적으로(그 사원증을 갖고 있는 동안) 그 회사에
드나 들 수 있는 권한을 갖게됩니다.
그럼 이제 이 level1에 있는 level2 권한에 있는 setuid가 걸린 파일을 찾아봅시다!
setuid가 걸린 파일을 찾아 주는 명령어
find / -perm -4000 -user level2 2> /dev/null
find 찾아라
/ 디렉토리에서
-perm 권한은
-4000 SetUID(4000)
-user 소유자는
level2 level2
2> /dev/null 쓰레기 값 빼고!!
2> /dev/null 을 쓰지 않는 다면
위에 다 나오지 않은 많은 것들이 출력이 된다.
하지만
2> /dev/null 을 쓴다면
이렇게 SetUID만 걸린 파일이 나오게 된다.
/bin/ExecuteMe 파일 실행시
**[level1@ftz level1]$ 명령 구문에서 my-pass를 쳐보니 나의 비밀번호가 나오고('level1')
-->자신의 레벨에서의 암호를 알고 싶을 때 사용하는 것
chomod는
--> 파일의 퍼미션을 바꾸는 명렁어
chmod: 인수가 너무 적음
더 많은 정보를 보려면 `chmod --help' 하십시오.
라고 나온다.
chmod --help 라고 치면
사용법: chmod [옵션]... MODE[,MODE]... FILE...
또는: chmod [옵션]... 8진수-MODE FILE...
또는: chmod [옵션]... --reference=RFILE FILE...
Change the mode of each FILE to MODE.
-c, --changes like verbose but report only when a change is made
-f, --silent, --quiet suppress most error messages
-v, --verbose output a diagnostic for every file processed
--reference=RFILE use RFILE's mode instead of MODE values
-R, --recursive change files and directories recursively
--help 이 도움말을 표시하고 끝냅니다
--version 버전 정보를 출력하고 끝냅니다
Each MODE is one or more of the letters ugoa, one of the symbols +-= and
one or more of the letters rwxXstugo.
<bug-coreutils@gnu.org>(으)로 버그를 알려 주십시오.
라고 출력된다.
그럼 어떤 명령어를 써야 하는 걸까....
저 두 명령어를 사용하지 않고 level2로 가는 비밀번호를 아는 방법은 무엇일까 보면
level2의 권한으로 Shell을 실행시키는 것이다.
**Shell
명령어 처리기 혹은 UI(User Interface)이다.
cmd, terminal, bash,COMMAND 창을 shell이라 할 수 있다.
컴퓨터가 우리가 내리는 명령을 바로 이해 할 수 는 없기에 Shell이 이를 해석하여 OS를 움직이게 한다.
즉 사용자와 OS의 커널을 연결해주는 역할을 한다고 보면 좋을듯 싶다.
OS는 이를 다시 컴퓨터가 이해할 수 있는 명령으로 바꾸어 전달한다.
Execute me파일에서는 my-pass사용을 못하게 하니
level2의 shell을 띄어 그곳에서 my-pass를 사용해보자.
이렇게 level2의 비밀번호를 알게 되었다!
1)bash
2)/bin/bash
둘다 사용 가능!