2016년 7월 7일 목요일

해커스쿨 FTZ Level1 문제풀이

이번 시간에는 해커스쿨 FTZ의 Level1 문제를 풀어보도록 하겠습니다. 우선 FTZ에 접속하여 ID:level1, Password:level1로 로그인하도록 하겠습니다.
로그인이 된 것을 확인하였으면 본격적으로 문제를 풀어보겠습니다. Level1 계정의 홈디렉토리에는 hint라는 파일이 있습니다. 한번 열어보면 힌트가 있음을 확인할 수 있습니다.
level2 권한에 setuid가 걸린 파일을 찾으라고 되어 있습니다. 여기서 SetUID가 무엇인지 잠깐 살펴보도록 하겠습니다. SetUID는 특정 작업을 할 때 소유자가 아닌 다른 사용자에게 소유가의 권한을 잠깐 부여하는 것으로 위의 경우 해당 파일을 실행할 때 자기의 권한은 일시적으로 level2가 된다는 것을 알 수 있습니다. 그럼 그 파일을 찾는 방법을 알아보도록 하겠습니다.
위에 사진 처럼 find라는 명령어를 통해 /bin/ExecuteMe라는 파일을 찾을 수 있었습니다. 그런데 위 명령어가 잘 이해가 안되는 분들을 위해 조금 설명을 해보자면 /는 루트 디렉토리, 즉 최상위 디렉토리를 기준으로 찾는 것이고 -perm +4000은 SetUID가 걸려 있는 권한이 있는 파일을 찾겠다는 뜻이고, -user level2는 소유가가 level2인 파일을 찾겠다는 것입니다. 2> /dev/null은 표준에러가 나는 경우는 /dev/null 즉, 출력하지 않도록 리다이렉션을 한다는 의미입니다. 자세한 것은 직접 검색을 해보시는 것을 추천드립니다. 한번 방금 찾은 파일을 실행시켜 보겠습니다.
ExecuteMe 파일을 실행시키면 level2 프롬프트가 뜨는 것을 볼 수 있습니다. 다만 계정을 비밀번호를 볼수 있는 my-pass 명령어가 막혀있음을 볼 수 있습니다. 하지만 이 상태에서 셸을 실행시킬 수 있다면 어떨까요? my-pass는 물론이요, level2 권한으로 계속 있을 수 있겠죠? 현재 우리가 보통 알고 있는 셸은 /bin/bash에 있습니다. 한번 실행시켜 보겠습니다.
level2 셸이 성공적으로 띄울수 있게 되었습니다. id 명령을 통해 확실히 level2 권한이 생긴 것을 확인할 수 있습니다. 이 상태에서 my-pass를 하면 level2의 비밀번호를 확인할 수 있습니다.
 
비밀번호를 확인할 수 있습니다. level2의 비밀번호는 hacker or cracker가 되겠습니다.

0 개의 댓글:

댓글 쓰기