FTZ Level1 풀이
ftz level1에 로그인하여 접속해봅시다.
(ftz 로컬서버 구축 및 접속방법은 추후 포스팅할 예정입니다.!)
저는 Mac OS를 사용하고있기때문에 셸을이용해 ftz.hackerschool.org에 접속하여줍니다.
접속하게되면 패스워드를 적는화면이 나오는데 이때 주의할점이 패스워드를 입력해도 화면에 출력이 안됩니다.
그렇기에 감으로 슈루룩 쳐주시고 엔터를 쳐주시면 (level 1 의 패스워드는 level1 입니다.)
이런식으로 level1에 접속이 가능하게됩니다.
level1서버에 접속을 했으니 어떤파일들이 들어있는지 확인해봐야겠죠?
ls 명령어를 통해 level1 디렉토리에 hint라는 파일이 있는것을 확인하였습니다
(너무 친절한거 아니냐고..)
어쨋던간에 파일을 화면에 출력시켜주는 cat명령어를 통해 hint에 어떤것이 들어있는지 확인이나 해봅시다
$cat hint 명령어를 통해 hint파일을 확인할수 있었습니다.
level1 문제의 힌트는 다음과 같습니다.
'level2 권한에 setuid가 걸린 파일을 찾는다.'
setuid는 트레이너10때 다 배웠을거지만 한번더 복습해보도록 합시다.
SetUID?
: Set/ 변경하다 UID/ UserID => ID를 변경한다.
1. 파일에 걸려있는 것
2. 걸린 파일을 실행하면 자신의 아이디는 root 권한을 임시적으로 지님
3. 파일의 실행이 끝나면 원래의 아이디로 복구.
활용기법 : 레이스컨디션, IFS버그, 링크버그, 버퍼 오버플로우, 포맷 스트링 어택등
setuid. 는 풀어보면 set user id 즉 '자신의 id를 일시적으로 변경한다' 입니다.
setuid가 걸린 파일을 실행시키면 자신의 권한이 일시적으로 설정된 id 로바뀌게 되는것이죠
그러니까 이게 무슨 뜻이냐면 내아이디가 level1인데 setuid가 root로 설정된 파일을 내가 실행시키면 그파일이 실행되는동안은 내id는 root란 것이죠
그럼 우리는 이파일만 찾아서 실행을 시켜보면 된다~ 이겁니다. 그냥 눈치빠르게 실행시켜보세요
트레이너10에서 배운내용을 토대로 찾아보자구요
어려워 하실것 같아서 준비해봤습니다.
find / -perm -4000 -user level2 2> /dev/null
find : 무언가를 찾을때 쓰는 명령어
/ : 서버 전체를 뜻함.
-perm : 파일에 걸린 권한과 일치하는 파일을 찾아주는 명령어
-4000 : 여기서 '-' 는 적어도를 뜻함. 4000에서 4는 setuid를 의미. 000은 파일에 대한 권한을 나타내는데 중요하고 어려운것이기때문에 나중에 따로 포스팅할에정. 그래서 -4000의 뜻을 풀어보면 '적어도 setuid가 걸린파일' 이라는 뜻이 되시겟다
-user level2 : 파일에 걸린 권한을 의미. 즉, level2권한이 걸린 파일이 되겠음
2> / dev/null : /dev/null은Standard Error를 모두 휴지통에 버리라는 의미이다. 여기서는 2> /dev/null 을 썼지만 다른 방법도있다. 트레이너에서는 공부하지않았기에 검색해보는것을 추천.
즉, find / -perm -4000 -user level2 2> /dev/null 을 해석해드리면
'서버 전체에서 적어도 setuid가 level2권한으로 걸린 파일을 찾아줘 오류는 출력하지말구'
라고 해석이 되시게따
명령어를 전송하면 /bin 폴더에 ExcuteMe 라는 파일이 하나 딱나온다.
실행시켜보자
실행시키면 나한테. 레벨2권한으로 명령를 하나 실행시켜준다고 딜을제안한다 킹갓해커는 제안따윈 받지않아!
바로 제안을 받아들여서 명령어를 하나 입력해보자.
근데 my-pass(현재 레벨의 password 를 출력시키는 명령어)와 chmod(파일의 권한을 변경할수있는 명령어)는 제외한다고나와있다. 이럴거면 왜 실행시켜준다는지 1도 이해가안간다.
하지만 방법은 있다!
level 2 의 /bin/bash 폴더로 들어가면. my-pass 명령어가 먹힌다.
/bin/bash 명령어를 통해, bash폴더로 들어가주고
my-pass 를 입력하면 level2 의 password가 나온다.
level 1은 어려운 문제가 아니었기에 바로 다음문제로 넘어가보도록 합시다.