[OverTheWire System - Bandit] Level 23 >> Level 24

Level Goal

A program is running automatically at regular intervals from cron, the time-based job scheduler. Look in /etc/cron.d/ for the configuration and see what command is being executed.

 

NOTE: This level requires you to create your own first shell-script. This is a very big step and you should be proud of yourself when you beat this level!

 

NOTE 2: Keep in mind that your shell script is removed once executed, so you may want to keep a copy around…

 

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

참고: 이 레벨에서는 자신의 첫 번째 셸 스크립트를 만들어야 합니다. 이것은 매우 큰 단계이며 이 레벨을 달성했을 때 자신을 자랑스러워해야 합니다!

참고 2: 쉘 스크립트는 일단 실행되면 제거되므로 사본을 보관하고 싶을 수도 있습니다.

Hint

1. cron

2. shell script

Write Up

더보기

cron 설정 파일을 확인해보니, bandit24 사용자 권한으로 부팅할 때마다 /usr/bin/cronjob_bandit24.sh 파일을 실행하고 있었다. 또한 일정 시간에 실행한다는 곳이 모두 *으로 되어 있으면 1분 마다 실행된다는 뜻이니, 해당 /usr/bin/cronjob_bandit24.sh 파일은 1분 마다 실행되고 있다.

 

내용을 확인했는데, 쉘 스크립트에 대한 분석은 문제 풀이 아래에 자세히 정리하겠다.

일단 간단하게 정리하자면 whoami 명령어로 실행한 사용자를 myname 변수에 저장한다.
그 후 /var/spool/$myname으로 이동하게 된다. 이동한 디렉토리의 모든 파일을 60초간 실행시키고 kill 시그널 9을 사용하여 종료한 다음 파일을 삭제한다.

 

나는 /var/spool/bandit24 디렉토리에 /etc/bandit_pass/bandit24 파일을 읽어서 저장하는 쉘 스크립트를 만들어서 bandit24의 Pw를 얻을 것이다.

 

/var/spool 디렉토리에 무엇이 있는지 확인해보니, bandit24 디렉토리가 있는 것을 확인하였다.
하지만 권한을 보니, 다른 사용자한테는 Read 권한이 없었다. 즉, 해당 디렉토리를 ls 명령어로 통해 조회할 수 없다는 것이다.

 

하지만 다행히 Write 파일은 있어서 쉘 스크립트 파일을 생성할 수 있을 것이다.
여기서 키 포인트는 1분 마다 cron에 의해서 파일이 삭제가 되니, 최대한 빠르게 작업을 해야한다는 것이다.

 

그래서 나는 최대한 빠르게 작업하기 위해 /tmp/lrtk 디렉토리에서 bandit24의 pw 파싱 쉘 스크립트를 생성 후 cp 명령어를 통해 빠르게 작업하는 방법을 선택하였다.

 

그 결과 아주 간단하게 bandit24의 pw를 얻을 수 있었다.

 

bandit24 :: UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ