FTZ 서버는 root/hackerschool로 들어갈 수 있다. Xshell, ssh, putty 등등을 이용하여 해당 서버에 접속할 수 있도록 환경구축 한 후 시작.
level1은 시작인만큼 아이디와 패스워드가 주어진다.
ID: level1
PW: level1
로그인하면 유저 기본 폴더로 들어가지는데, ls를 통해 확인해보면 다음과 같은 파일들이 있는 것을 확인할 수 있다.
여기서 hint 파일은 매 레벨의 진행 방향을 알려주는 제일 중요한 파일이다. level1에서 힌트 파일을 열어보면 다음과 같은 설명글이 나온다.
setuid는 간단하게, 내가 a로 로그인하고 있어도 b의 setuid가 설정된 프로그램을 실행한다면 그동안에는 b의 권한으로 실행할 수 있게 하는 개념이다. 특정 유저의 setuid가 설정된 프로그램은 find명령어를 통해 찾을 수 있는데, 옵션을 정리해서 다음과 같이 실행하면 된다.
-user와 -perm은 어떤 유저의 권한인지, 그리고 어떤 권한인지를 물어보는 옵션이고 2> /dev/null은 앞의 명령어를 통해 나온 에러 출력 값을 /dev/null 안에 저장하겠다는 의미이다.
결과적으로, 출력 값은 정상적으로 level2의 setuid를 가진 값만 남게 된다.
보이는 것 처럼 ExecuteMe라는 파일을 실행해보면 다음과 같은 화면이 나온다. 딱 한번만 level2의 권한으로 명령어를 실행할 수 있게 해준다는데, my-pass와 chmod는 허락되지 않았다. 그렇다면 계속해서 level2의 권한을 사용할 수 있는 방법은 없을까?
다음과 같이 sh, /bash, /bin/sh 등을 이용하면 해당 쉘로 진입할 수 있다. 우리는 level2의 권한을 가진 상태에서 쉘을 진입한 것이기 때문에 level2의 권한으로 명령어를 계속해서 사용할 수 있게 된다.
여기서 level2의 비밀번호를 알기 위해 my-pass 명령어를 사용하면 다음과 같이 비밀번호를 얻을 수 있다.
쉘을 벗어나는 것은 exit을 통해서 할 수 있고, 그럼 level1의 권한으로 돌아가기 때문에 level2로 로그인하면 된다.
'Write-Up > FTZ' 카테고리의 다른 글
FTZ: Level6 (0) | 2019.09.26 |
---|---|
FTZ: Level 5 (0) | 2019.09.19 |
FTZ: level4 (0) | 2019.09.19 |
FTZ: level2 (0) | 2019.09.19 |
FTZ : level3 (0) | 2019.09.19 |