[OverTheWire:Bandit] Level 23 ~ Level 24

2023. 7. 17. 11:51War Game/OverTheWire

문제

 

 

프로그램은 시간 기반 작업 스케줄러인 cron에서 일정한 간격으로 자동 실행된다고 한다. /etx/cron.d에서 구성을 보고 어떤 명령이 실행되고 있는지 확인하시오.

 

Keyword

 

cron, crontab, ls, cat, cd

 

풀이

 

cd /etc/cron.d
ls -al

 

/etc/cron.d 에서 어떤 명령이 실행되고 있는지 확인하기 위해 이동 후에 ls 명령어를 사용해서 파일 리스트를 확인하였다. 파일 중에 cronjob_bandit24 파일이 다음 단계의 암호를 얻을 수 있는 정보를 가진 파일로 생각하여 cat 명령어를 사용하여 내용을 출력해 본다.

 

cat cronjob_bandit24
cat /usr/bin/cronjob_bandit24.sh

 

내용을 출력해 보았더니 /usr/bin/cronjob_bandit22.sh라는 쉘 스크립트 파일이 매분 실행되고 있는 것을 확인하였다. 다음으로 쉘 스크립트 파일이 어떤 내용을 가지고 있는지 확인하기 위해 cat 명령어를 사용하여 내용을 출력해 보았다. 내용은 /var/spool/$myname(여기서는 "bandit24")/foo 디렉토리에서 모든 파일에 대하여 소유주가 bandit23이면 60초간 실행 후 모두 삭제한다는 뜻이 된다. 그렇다면 이 알고리즘을 이용하여 /foo 디렉토리 내에 bandit23을 소유주로 한 쉘 스크립트 파일을 복사 후 실행시켜 bandit24 계정의 암호를 획득하는 방법이 가장 유용할 것이다.

 

mkdir /tmp/test24
chmod 777 /tmp/test24
cd /tmp/test24
touch bandit24_password
vi showmepass.sh

 

우선 쉘 스크립트 파일 작성하기 위해 tmp 디렉토리 아래에 test24라는 디렉토리를 생성 후 권한을 부여한다. 그리고 bandit24 계정의 암호를 저장할 파일도 생성해 주고 showmepass.sh라는 쉘 스크립트 파일도 작성해 준다.

 

#!/bin/bash

cat /etc/bandit_pass/bandit24 > /tmp/test24/bandit24_password

 

showmepas.sh 쉘 스크립트 파일의 내용은 /etc/bandit_pass/bandit24 파일의 내용을 /tmp/test24/bandit24_password파일에 저장하라는 내용이다. 이제 이 쉘 스크립트 파일을 /var/spool/bandit24/foo 디렉토리내에 복사 후에 기다리면 쉘 스크립트 파일의 내용일 실행될 것이다.

 

cd /var/spool/bandit24/foo
cp /tmp/test24/showmepass.sh /var/spool/bandit24/foo

 

/var/spool/bandit24/foo 디렉토리로 이동 후 showmepass.sh 쉘 스크립트 파일을 복사하였다. 이제 쉘 스크립트 파일이 실행되기만을 기다리면 된다.

 

cd /tmp/test24
cat bandit24_password

 

/tmp/test24 디렉토리로 이동 후에 bandit24_password파일의 내용을 출력해 보았더니 아무런 내용도 출력이 되지 않았다.

 

ls -al
chmod 777 showmepass.sh

 

이게 무슨 일인가 하고 생각해 보니 showmepass.sh파일의 권한을 부여해주지 않았던 것이다. 그래서 다시 실행권한을 부여한 후 이전 작업을 반복한다.

 

cat bandit24_password

 

텀을 준 후 bandit24_password파일의 내용을 cat 명령어를 사용해서 출력해 보면 bandit24 계정의 암호를 얻을 수 있다.