보안 공부하는 꼬깔이

System Hacking +22

FTZ level2 풀이





level2 의 홈디렉터리의 내용을 ls 명령어로 확인했더니, level1과 같이 hint 파일과 폴더 2개가 있다.


hint를 cat명령어로 확인해보자





hint 파일에는 텍스트 파일 편집 중 쉘의 명령을 실행시킬수 있다는 구문이 있었다.


텍스트 파일 편집은 리눅스의 vi 기능을 의미한다.  결과적으로 vi 편집기 사용 중 쉘의 명령을 실행하는 방법을 생각해봐야 할것같다.


우선 파일의 소유주가 level3인 파일을 find 명령어로 찾아보자.





find 명령의 결과로 /usr/bin/editor 파일이 도출됬다. /usr/bin 디렉토리로 이동해 editor 파일을 확인해보자




editor 파일에 setuid가 걸려있고 파일의 소유주는 level3 인것을 확인할수 있다.


우선 ediotr 파일을 실행시켜보자




editor 파일을 실행시키니까 vi 편집기가 실행됬다...!?


그렇다는 것은 vi editor 실행중 셸을 실행하면 setuid가 걸려있기 떄문에 level3의 권한으로 셸이 실행될것이다.


vi 편집기 사용중 리눅스 명령어 사용에 대한 방법구글링 한결과 vi 편집중 command 모드상태일떄 느낌표를 사용하면 리눅스 명령어가 실행된다는 것을 알게되었다. (ex : !ls , !pwd)




command 모드상태에서 !pwd 실행




실제로 pwd 명령어가 수행되어 editor 파일이 위치한 디렉토리를 출력해줬다.


이제 쉘을 실행시켜보자.




bash 쉘 실행!



쉘이 성공적으로 실행되었고. my-pass 명령어로 level3의 패스워드를 흭득했다!


level2 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 level1 풀이  (0) 2017.06.30

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