[FTZ] level 1 → level 2 문제풀이 본문

Pwnable/해커스쿨 FTZ write-up

[FTZ] level 1 → level 2 문제풀이

disso1p1 2020. 1. 30. 12:04

 

 

 

level1 - id : level1 , pw : level1

 

 

ls

level1 id로 접속을 했더니(level1 디렉토리) 눈에 띄는 hint파일이 있다.

열어보자.

 

cat hint

trainer에서 배운 find 명령어를 사용해야겠다.

우리가 사용해야할 조건은 user가 level2이고, setuid가 걸린 파일이다.

 

이것을 생각하면서 find 명령어에 어떤 옵션이 있는지, 그리고 그 옵션의 사용법을 찾아보자.

 

man find

 

-user <유저이름>

-user 옵션을 이용하여 level2의 조건을 걸자.

-user level2

 

-perm -<권한모드>

-perm 옵션을 이용하여 setuid의 조건을 걸자.

setuid의 권한은 숫자모드 4000이다.

-perm -4000

 

이제 파일을 찾아보면,

 

find / -user level2 -perm -4000

.

.

.

 

find / -user level2 -perm -4000

find / -user level2 -perm -4000

에서 앞에 있는 는 root 디렉토리부터 찾는다는 뜻이다.

 

/bin/ExecuteMe 파일을 제외하고 모두 Permission denied가 뜬다.

이 파일을 의심해볼만 하다.

실행시켜보자.

 

/bin/ExecuteMe

level2의 권한으로 한가지 명령어를 실행시켜주는데 우리의 목적인 my-pass 명령어를 사용할 수 없다.

그럼 쉘을 띄우면 된다.

 

/bin/sh를 이용하여 쉘을 띄워보자.

 

/bin/sh , my-pass

쉘을 띄우고 my-pass를 입력하면 level2의 비밀번호가 나오게 된다.

 

 

Level2 Password is "hacker or cracker".

 

 

 


 

 

추가)

 

find / -user level2 -perm -4000 2>/dev/null

끝에 2>/dev/null 을 붙이면,

아까 Permission denied 라고 떴던 파일들은 출력되지 않는다.

2의 뜻은 오류난 파일들을 뜻하고, 1을 입력했다하면 정상적인 파일을 뜻한다.

/dev/null 은 그냥 null이라 아무것도 뜨지 않는다는 뜻이다.

그래서 해석하면 '오류난 파일들을(2) 아무것도 뜨지 않게 해라(/dev/null) !'  가 된다.

그러므로 1>/dev/null을 입력한다면 오류난 파일들만 뜨게될 것이다.

 

 

 

 

 

 

감사합니다

Comments