아임노드

[OverTheWire Bandit] Bandit Level 21 -> Level 22 문제풀이 (+cron(the time-based job scheduler)) 본문

[SK shieldus Rookies 23기] 공부 노트/OverTheWire Bandit 문제풀이

[OverTheWire Bandit] Bandit Level 21 -> Level 22 문제풀이 (+cron(the time-based job scheduler))

Noody 2024. 12. 16.

OverTheWire Bandit

Level 21 -> Level 22

 

 

목표 : cron을 통해 실행되는 프로그램 이해

 

  • cron에 대한 이해
  • cron으로 작성된 파일 확인

 

풀이 방법

 

1. bandit21 서버 접속

ssh bandit21@bandit.labs.overthewire.org -p 2220

 

 

2. cron에 대한 이해

문제에서 아예 cron을 언급하고 있으니 먼저 cron이 무엇인지 알아보자.

Cron은 Unix/Linux 기반 운영 체제에서 사용하는 시간 기반 작업 스케줄러(the time-based job scheduler)이다.
정기적으로 반복되거나 특정 시간에 실행해야 하는 작업(스크립트, 명령어 등)을 자동화하는 데 사용됩니다. 시스템 관리 작업(예: 로그 정리, 백업, 업데이트 등)뿐만 아니라 사용자 정의 작업에도 널리 활용된다.

 

- cron의 스케즐

* * * * * bandit22 /usr/bin/cronjob_bandit22.sh
|  |  |  | +--- 요일: 매일 (0-7, 모든 요일)
|  |  | +----- 월: 매월 (1-12, 모든 달)
|  | +------- 일: 매일 (1-31, 모든 날짜)
|  +--------- 시간: 매시간 (0-23, 모든 시간)
+----------- 분: 매분 (0-59, 모든 분)

 

예를 들어, cron의 스케줄이 아래와 같다고 한다면 다음과 같이 해석할 수 있다.

0 0 * * * /path/to/backup.sh
-> 매일 자정에 백업 스크립트 실행

0 9 * * 1 /path/to/email_script.sh
-> 매주 월요일 오전 9시에 이메일 전송

*/5 * * * * /path/to/cleanup.sh
-> (*/5)는 0, 5, 10, 15, ..., 55의 패턴을 의미
-> 즉, 매 5분 간격으로 작업 실행

 

 

 

3. cron으로 작성된 파일 확인

이제 cron 파일을 확인해보록 한다.

문제에서 'Look in /etc/cron.d/' 라고 하였으니 해당 경로에서 파일을 확인하고 읽어본다.

파일 확인
파일 읽기

파일 내용은

/usr/bin/cronjob_bandit22.sh 이 스크립트가 매분마다 실행된다고 해석할 수 있다.

 

다시 파일 내용에 나와있는 경로의 쉘 스크립트 내용을 읽어보자.

cat /etc/bandit_pass/bandit22 > /tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv

여기서 리다이렉션(>) 은 명령어 출력 결과를 파일로 저장하거나 다른 명령어로 전달할 때 사용되므로,

여기서는 cat 명령어의 출력 결과를 파일(/tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv)로 저장한다.

 

확인해보면, /etc/bandit_pass/bandit22 경로를 읽기 권한이 없고

/tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv 경로에서는 다음 레벨의 패스워드가

출력되는 것을 확인할 수 있다.