반응형

해커스쿨 ftz 문제풀이 / level4

level4의 문제로 level5의 패스워드를 찾는 문제입니다. 

level4의 홈디렉토리에 있는 hint 파일을 보면 아래와 같이 /etc/xinetd.d/에 백도어가 심어져 있다고 합니다. 

/etc/xinetd.d/ 디렉토리에 backdoor라는 파일이 있고, 이 파일의 내용을 보면 아래와 같습니다.

해당 설정에 대한 내용은 아래와 같습니다. 

중요한 부분은 user와 server입니다. 

finger 서비스에 의해 level5의 권한으로 /home/level4/tmp/backdoor 파일이 실행된다는 의미입니다. 

# service finger => 서비스의 이름입니다. 
# disable = no => 데몬을 비활성화하지 않는 것으로 데몬을 활성화하겠다는 것입니다. 
# flags = REUSE => 서비스 포트가 사용 중인 경우 포트의 재사용을 허가한다는 의미입니다. 
# socket_type = stream => TCP/IP 프로토콜입니다. 
# wait = no => 이미 서비스가 연결된 상태에서 다른 요청이 들어오면 기다리지 않고, 바로 응답합니다. 
# user = level5 => level5의 권한으로 실행됩니다. 
# server = /home/level4/tmp/backdoor => xinetd에 의해 실행될 데몬 파일입니다. 
# log_on_failure += USERID => 정상적인 기동에 실패한 경우 USERID를 로그에 기록합니다. 

/home/level4/tmp에 finger 서비스에 의해 실행되는 backdoor 프로그램을 만듭니다. 

backdoor 프로그램은 level5의 권한으로 실행되기 때문에, level5의 패스워드를 확인하기 위해 system call로 my-pass를 실행하도록 하면, level5의 패스워드를 출력할 것입니다. 

 

finger 서비스를 실행하면 아래와 같이 level5의 패스워드가 출력되는 것을 볼 수 있습니다.

반응형

+ Recent posts