구동환경: Window 10
사용프로그램: Xshell 6
login: level1
Password: level1 입력하면 다음과 같은 화면이 출력된다.
터미널 창에 pwd라는 명령어로 현재 위치를 한 번 확인해 본다. 현재 위치는 /home/level1이다.
터미널 창에 ls -al 명령어를 입력한다. ls -al 명령어는 -a명령어와 -l명령어가 합쳐진 것이다.
(-l 명령어는 파일과 디렉토리를 구분해주는 명령어다. -a 명령어는 숨겨진 파일을 보여주는 명령어다.
빨간펜으로 밑줄 친 d는 디렉토리이며 -는 파일이다. 또 한 숨겨진 파일들에는 파일명 앞에 '.' 이 붙는다)
아래는 ls -al입력의 결과 창이다.
중간 파일에 힌트 파일이 보인다. cat명령어를 통해 hint 파일을 읽어본다. cat 명령어에 대한 결과 창이다.
level2 권한에 setuid가 걸린 파일을 찾으라고 한다. setuid는 set은 '변경하다' 이며, uid는 userid의 줄임말이다.
해석해보면 userid를 변경한다는 뜻이다. userid를 변경한다는 뜻은 무엇일까?
예를 들어 내가 일반 사용자인데 비밀번호를 바꾸고 싶은 경우가 있다. 비밀번호를 바꿔도 Passwd는 shadow파일에 저장되는데 shadow파일은 오직 root만 쓸 수 있다. 그럼 어떻게 비밀번호가 변경된 것인가? setuid를 사용해서 변경가능한것이다. 즉 passwd 파일에 루트권한이 걸려있어 일반사용자들이 passwd파일을 사용하는 동안 "root로의 일시적 아이디 변경"이 일어난 것이다. setuid는 파일에 걸리며, setuid가 걸리면 내 id가 변경되며, 파일 실행이 끝나면 원래 권한으로 돌아온다 라고 이해하고 있음 편하다. (레이스 컨디션, 버퍼오버플로우 등이 위와 같은 방식으로 권한 획득을 시도한다.)
그렇다면 setuid가 걸린 파일을 찾는 방법은 무엇일까?
우선 find 명령어를 통해 파일을 찾는다.
find / -user level2 -perm -4000을 터미널에 입력한다.
find(찾겠다) /(여기 디렉토리부터) -user leve2(유저 level2와 일치하는)-perm(권한을 찾겠다) -(적어도) 4(setuid) 000(rwx)라는 뜻이다.
다음과 같은 결과 값이 출련된다.
권한이 부족하여 거절 당한 것과 그렇지 않은 것들이 보인다. 그 중 ExecuteMe(나를실행해줘)라는 파일이 보인다.
/bin에 있으므로 bin디렉토리로 이동하여 cat명령어로 ExecuteMe파일을 읽어본다.(ls -al명령어로 파일인지 디렉토리인지 확인하여서 디렉토리가 아니라는 것을 인지하고 나서 cat명령어로 읽는다.)
cat ExecuteMe의 결과 창이다. 따라서 제대로 된 파일을 찾은 것 같다.
터미널 창에 ./ExecuteMe 라는 명령어를 입력하여 파일을 실행해보자. 다음과 같이 출력된다.
bash를 입력하면 다음과 같이 level2권한으로 넘어간 것이 보인다.
level2의 권한으로 my-pass 명령어를 입력하면 비밀번호가 출력된다.
'Wargame & CTF > Hackerschool FTZ' 카테고리의 다른 글
LEVEL2 (0) | 2020.09.03 |
---|