보안 공부하는 꼬깔이

FTZ level1 풀이




level1 문제에 접속하자.


level1의 ID,PW는 level1/level1






ls -l 명령어로 level1 홈디렉터리의 내용을 확인했더니 1개의 파일과 2개의 폴더가 존재한다는 것을 알았다.


그중에 hint 파일은 파일명 그대로 힌트의 내용이 들어있는 파일인것 같다. cat 명령어로 hint 파일의 내용을 출력시켜보자





hint 파일의 내용을 살펴보니 level2 권한으로 setuid가 걸린 파일을 찾아보라는 문구가 적혀있었다.


#TIP. SETUID

-SetUID가 걸린 파일을 실행하면 해당 파일을 실행하는 도중에는 파일의 소유주 권한을 빌려오게 된다. 파일의 실행을 마친 뒤에는 다시 자신의 권한으로 돌아오게 됨.




리눅스에서 파일을 찾을때 사용하는 명령어로 find가 있다. 


find 명령어는 파일을 찾을때 파일명뿐만 아니라 파일의 권한,파일의 크기,파일의 소유주 등으로 찾는것이 가능하다.


힌트를 보고 어떤식으로 find 명령어를 사용할것인지 고민해보자.


1.옵션 : 특수권한인 setuid가 걸려있는 파일을 찾아야 하므로 -perm 옵션 사용(setuid가 걸린 파일의 권한은 4000번대로 표시됨)

2.옵션 : 파일 소유주가 level2인 파일을 찾아야 하므로 -user 옵션 사용




하지만 이렇게 그냥 find 명령어를 수행하게되면 find 명령어 수행중 권한이 없는 파일에대한 에러 메시지가 출력되어 원하는 결과를 확인하는것이 어렵게 된다.  


이럴때는 에러가 발생하면 그 결과를 휴지통으로 넣어주는 2> /dev/null을 사용하면 된다.


2는 표준에러(STDERR)를 의미하며, /dev/null 은 휴지통과 같은 역할을 한다. 결과적으로 "발생한 표준에러를 휴지통으로 보내라" 라는 뜻이 된다.





에러를 휴지통으로 깔끔하게 보내고 나니 한결 가독성이 좋아졌다.


그리고 명령어 실행 결과로 /bin/ExecuteMe 라는 파일이 도출되었다.


/bin 디렉터리로 이동해 ExecuteMe 파일을 확인해보자



권한이 -rws r-x--- 이렇게 되어있는데 s 는 setuid가 걸려있다는 것을 의미한다. 


결과적으로 setuid가 걸려있으며 파일의 소유주가 level2인 ExecuteMe 파일을 찾아낸 것이다 :D


ExecuteMe 파일을 실행해보자.




실행하면 level2의 권한으로 내가 원하는 명령어를 한가지 실행시켜주겠다는 문구가 있다.  하지만 쉽게 패스워드를 확인 할 수 있는 my-pass명령어와 권한을 변경할때 사용하는 명령어인 chmod는 사용이 불가능하도록 되어있다.


그렇다면 우리가 입력한 명령어를 해석해주는 역할을 하는 셸을 실행시키면 어떻게 될까? 



여러 종류의 리눅스 셸중 bash 셸을 level2의 권한으로 실행시켰다.





bash 셸이 실행되고 level2의 권한으로 리눅스 명령어를 사용할수 있게 됬다.


나의 패스워드를 확인하는 my-pass 명령어로 level2의 패스워드를 확인할수 있다.


1번문제 clear~ 



'System Hacking > FTZ' 카테고리의 다른 글

FTZ level6 풀이  (0) 2017.06.30
FTZ level5 풀이  (1) 2017.06.30
FTZ level4 풀이  (0) 2017.06.30
FTZ level3 풀이  (0) 2017.06.30
FTZ level2 풀이  (0) 2017.06.30