FTZ - Level 1

HelloMG
|2019. 7. 11. 15:25

이제 문제로 들어가 봅시다 !

level1의 아이디와 비밀번호는 당연히 뭔지 아시죠 ^^?

ID : level1

PW : level1

 

먼저 Hint를 한번 열어 봅시다!

그림 1     Hint

"level 2 권한에 setuid가 걸린 파일을 찾는다."

 

그럼 setuid가 뭘까?


SetUID는 소유자의 권한을 통하여 파일을 실행시키는 것으로써

유닉스 또는 리눅스에 소유자 권한이 s로 설정된 것이다.

예를 들어 소유자가 root이면 그 파일을 실행하는 사람이 누가 되었든지

파일이 실행되는 프로세스는 실행되는 동안 파일 소유자인 root 권한으로 실행된다.

그림 2     SetUID

출처 : [네이버 지식백과] 프로세스 권한과 SetUID


계속해서 SetUID가 걸린 파일을 찾는 것이니 find 명령어를 통해서 찾아보도록하자!

find [경로] [Option]

"어떤 옵션을 주고 찾을까?" 라는 생각을 하게 된다.

Hint의 단서를 통해 알 수 있는 것은 파일의 소유자 이름, SetUID 이므로

소유자 이름 및 권한으로 검색하면 효율적일 것 같다!

그림 3     Find 명령

명령어에 보면 " ~ 2> /dev/null" 는 왜 넣었을까?

"2" 는 표준에러를 뜻한다.(0 : 표준입력, 1: 표준출력)

">"는 파일로 보낸다는 것을 의미한다.

"/dev/null"는 null 장치이다(뭔가 설명하기가 애매하다..).

즉, 에러가 뜨는 것들을 /dev/null로 보내어 출력을 시키지 않는 것을 의미하며

여기서 사용하는 이유는 " 2> /dev/null"을 빼고 입력 시 알 수 있는데

권한 불가로 상당히 많은 에러가 출력이 되기 때문에 보기 편하게 하기 위하여 사용한 것이다.

그럼 문제 파일을 찾았으니 실행을 시켜보도록 하자!

그림 4     ExecuteMe

확인하여 보니 소유자가 level2 이고 "rws-r-x---" 소유자 권한이 걸려 있음을 확인했다.

그럼 실행을 시켜 보도록 하자!

그림 5     ExecuteMe 실행

my-pass와 chmod를 제외한 한가지 명령어를 실행시켜준다고 한다.

그리고 아이디를 보니 level2로 되어 있음을 볼 수 있고

SetUID 권한으로 인해 level2의 권한이 설정되어 있으니 /bin/bash 명령을 통해

level2 권한을 탈취할 수 있을 것이다!

그림 6     권한 탈취

이것으로 level2로 권한 상승이 되었다!

비밀번호는 my-pass를 통해 확인하면 됩니다^^! 뿅!

'CTF > FTZ' 카테고리의 다른 글

FTZ - Level 5  (0) 2019.07.14
FTZ - Level 4  (0) 2019.07.13
FTZ - Level 3  (0) 2019.07.12
FTZ - Level 2  (0) 2019.07.11
FTZ 서버 구축하기  (0) 2019.07.11