FTZ level3

반응형


FTZ LEVEL 3


※ FTZ 구축하는 방법은 구글링하시면 쉽게 찾으실 수 있습니다.

※ 개인적인 문제풀이로 해답을 보시기 전에 직접 풀어보시기를 권해드립니다.

※ 악용으로 인하여 발생되는 사고에 대해서는 절대 책임지지 않습니다. 반드시 숙련용으로 제공된 환경에서만 사용해보시기 바랍니다.


ID : level3

PW : can you fly?



힌트에 autodig 라는 파일의 소스를 보여줍니다.

소스를 분석하기 전에 autodig 파일이 어디있는지 검색해봅니다.



$ find / -name autodig -print 2>/dev/null

bin 디렉터리에 autodig 파일이 있는것을 알 수 있네요.

그렇다면 다음 레벨의 비밀번호를 획득하려면이 파일에 level4의 setuid 권한이 걸려있진 않을까?.. 라는 유추를 해볼 수 있습니다.

확인해보면 되겠죠.

$ find / -user level4 -perm +4000 print 2>/dev/null

역시 autodig 파일에 setuid가 설정되어 있는걸 볼 수 있습니다.

이 파일을 분석하고 비밀번호를 획득해야 겠네요.


소스를 분석해보면 인자값이 2가 아닐 때 printf를 출력해주며 exit(0)으로 빠져나가게 됩니다.

인자값 1는 파일이름이므로 인자값 1개를 넘겨주어야 합니다.

소스에서 인자값을 char로 받으므로 문자열형식, 즉 "" 형태로 넘겨주어야 합니다.

그렇다면 형식은 autodig "" 가 되겠습니다.

* strcpy : 문자열 복사

* strcat : 문자열 이어 붙이기 


more hints 를 살펴보면 다중 명령어와 문자열안에서의 명령어 실행방법이 써 있는데 위의 형식을 토대로 힌트를 준 것 같습니다.

우리가 필요한 정보는 level4의 패스워드이고 level4 권한을 갖고있는동안 my-pass 명령어를 쓴다면 패스워드를 얻을 수 있겠죠.

다중명령어를 쓰는 방법은 ; && || 등 문자열이 있는데 &&은 선행 명령어가 성공해야만, ||은 선행 명령어가 실패해야만 실행이 되기

때문에 이 문제에서는 ; 이 제일 효율적이겠습니다.

그렇다면 결론은 autodig "host;my-pass"



$ autodig "8.8.8.8;my-pass"

dig 의 대한 도메인 값을 넘겨주고 중복명령어로 level4 권한으로 my-pass명령어를 실행합니다. 그러면 level4의 비밀번호를 얻을 수 있습니다!

사실 dig 명령어는 fake이므로 my-pass 명령어만 실행할 수 있으면 되기 때문에 ; 앞의 구문은 아무 상관이 없습니다..ㅎㅎ 아무렇게나 써도 뒤에 명령어는 실행이 되기 때문이죠.

$ autodig "this is fake!!!!;my-pass"


level4 PW : suck my brain


반응형

'War Game > ftz' 카테고리의 다른 글

FTZ level6  (0) 2017.02.21
FTZ level5  (0) 2017.02.16
FTZ level4  (0) 2017.02.15
FTZ level2  (0) 2017.02.10
FTZ level1  (0) 2017.02.10
TAGS.

Comments