[FTZ 정복기] level1
FTZ 정복기 시작한다..
조건에 성립하는 파일을 찾으면 되는 문제다. 주어진 조건은 level2가 권한을 가지고 있으며(user 옵션) setuid가 걸려있는 파일이라는 것이다. 여기서 setuid는 리눅스의 특수 권한중 하나로, setuid가 걸려있는 프로그램을 실행시 특정 작업 수행을 위해 일시적으로 파일 소유자의 권한을 갖고온다. 즉 우리가 찾는 프로그램을 실행시키면 일시적으로 level2의 권한을 갖고오는 것이다.
SETUID에 대해 조금 더 자세히 알고싶다면!? => https://leeggoggal.tistory.com/10
조건을 줘가면서 파일을 찾을 수 있는 명령어가 리눅스에 find 라고 있다!
우선 -user 옵션을 통해서 소유주가 level2라는 것을 명시하자.
그리고 위 사진에서 볼 수 있듯이 setuid가 적용된 파일은 권한이 4000대이니 -perm -4000을 붙여주자!
find / -user level2 -perm -4000
위 명령에서 /는 현재 디렉토리를 의미한다. 이렇게 명령하면?
수많은 검색결과 중 유일하게 하나! /bin/ExecuteMe 파일이 있다!
허가가 거부된 파일 중에서 찾기가 힘들다면 다음과 같이 치면 된다.
find / -user level2 -perm -4000 2>/dev/null
뒤에 붙은 "2> /dev/null"가 의미하는 바는 다음과 같다.
숫자 2는 오류를 의미한다. 즉 여기서는 '허가 거부됨'을 의미한다.
/dev/null은 휴지통 같은 개념이다.
즉 "오류가 난 파일은 휴지통으로 보내라! 정상적인 파일만 출력하라!"가 된다. ㅋㅅㅋ
그럼 /bin 으로 가서 ExecuteMe를 실행시켜보자
조건이 성립하는구만
실행시킨 모습이다. my-pass(현재 계정의 PW를 알려주는 명령어)와 chmod(권한 변경 명령어)를 제외한 명령어를 level2의 권한으로 실행시켜준다고 한다.
시스템 해킹의 궁극적인 목표는 쉘을 따는것이다. 그렇기에 쉘을 실행시켜보자
/bin/sh 를 통해 쉘을 실행시켰다.
실행된 쉘에 whoami(현재 계정의 ID를 출력해주는 명령어)를 입력하니 진짜로 level2의 계정으로 되어있다. 그렇다면 여기서 my-pass 명령어를 실행시키면 level2 계정의 pw가 나온다.
Level2 Password is "hacker or cracker".
댓글
이 글 공유하기
다른 글
-
[FTZ 정복기] level2
[FTZ 정복기] level2
2020.08.07 -
pwnable.kr Wargame Toddler's Bottle👶
pwnable.kr Wargame Toddler's Bottle👶
2020.07.01