문제 hint를 보면 /usr/bin/leve5를 실행하면 /tmp디렉터리에 level5.tmp라는 임시파일을 생성한다고 한다.


/usr/bin/level5를 실행하고 /tmp/leve5.tmp내용을 확인하려고 보니 사라졌다.

아마 생성하고 바로 삭제하는 것 같다.


일단 /tmp에 level5.tmp를 내 임의로 만들어 놓고 /usr/bin/level5를 실행한다.


/tmp/level5.tmp에 임시파일 내용이 덮어 씌워졌다.

아마 임시파일로 덮어 쓴 다음 권한이 level5가 아니라서 삭제가 안된 것 같다.



'Wargame > FTZ' 카테고리의 다른 글

[FTZ] level7@ftz  (0) 2017.11.09
[FTZ] level6@ftz  (0) 2017.11.09
[FTZ] level4@ftz  (0) 2017.11.09
[FTZ] level3@ftz  (0) 2017.11.08
[FTZ] level2@ftz  (0) 2017.11.08

힌트를 보면 /etc/xinetd.d에 백도어를 심었다고 한다.

일단 해당 디렉터리 리스트를 보면 backdoor라는 텍스트 파일이 있다.


이 파일을 cat명령으로 열어보면 xinetd 설정파일이 나온다.

service명은 finger다. finger 명령은 사용자 계정 정보와 최근 로그인 정보, 이메일, 예약 작업 정보 등을 볼 수 있는 명령어이다. 

이 명령을 실행하면 level5라는 user로 /home/level4/tmp/backdoor라는 파일을 실행하도록 설정하는 xinetd 설정파일이다.

finger 명령을 실행하면 level5의 권한으로 해당 파일을 실행한다는 의미다.


위와 같은 c언어로 my-pass명령을 실행하는 소스를 짜서 /home/level4/tmp/backdoor라는 이름으로 컴파일한다.


그리고 위와 같이 finger 명령을 실행한다.

사용 예:

finger [옵션]... [사용자명 ...] [user@host ...]

host 부분에 ftz를 썼다가 아무런 반응이 없어 localhost를 쓰니 문제가 풀린다.

'Wargame > FTZ' 카테고리의 다른 글

[FTZ] level6@ftz  (0) 2017.11.09
[FTZ] level5@ftz  (0) 2017.11.09
[FTZ] level3@ftz  (0) 2017.11.08
[FTZ] level2@ftz  (0) 2017.11.08
[FTZ] level1@ftz  (0) 2017.11.08

hint를 보면 동시에 여러 명령어를 사용하려면?

문자열 형태로 명령어를 전달하려면? 이라고 나와있다.

일단 level4의 setuid를 가지고 있는 파일을 찾는다.

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

/bin/autodig라는 파일이 나온다. hint에 있던 소스를 사용하는 파일인것 같다.

여러 명령어를 동시에 사용하는 방법은 ;를 사용하는 방법이 있다.

;는 명령1;명령2;명령3 이런 식으로 사용하는데 명령1이 없는 명령이더라도 명령2를 실행한다.

이를 이용하면 쉽게 풀 수 있다.

그리고 문자열 형태로 명령어를 전달하려면? 이라는 부분은 ""(더블쿼터)를 이용하면 된다.


첫번째 인자가 가운데 명령어로 들어가는 점을 파악했으니 ";id;"를 주면 명령1;id;명령3을 실행해서

id를 실행시켜준다. 같은 방법으로 ";my-pass;"를 인자로 주면 level4의 권한으로 my-pass를 실행해 password를 출력하면서 문제를 클리어할 수 있다.


'Wargame > FTZ' 카테고리의 다른 글

[FTZ] level6@ftz  (0) 2017.11.09
[FTZ] level5@ftz  (0) 2017.11.09
[FTZ] level4@ftz  (0) 2017.11.09
[FTZ] level2@ftz  (0) 2017.11.08
[FTZ] level1@ftz  (0) 2017.11.08

+ Recent posts