Bandit level23
OverTheWire 문제풀이 - Bandit
* Bandit 는 리눅스 관련 문제입니다.
* 리눅스 명령어를 연습하기에 아주 좋습니다.
* 개인적인 문제풀이로 해답을 보시기 전에 직접 풀어보시기를 권해드립니다.
Bandit level23
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…
Commands you may need to solve this level
cron, crontab, crontab(5) (use “man 5 crontab” to access this)
레벨 목표
프로그램은 cron (시간 기반 작업 스케줄러)에서 정기적으로 자동으로 실행됩니다. /etc/cron.d/에서 구성을 찾고 실행중인 명령을 확인하십시오.
참고 :이 수준에서는 자신 만의 첫 번째 셸 스크립트를 만들어야합니다. 이것은 매우 큰 단계이며, 당신이이 수준을 이길 때 자신을 자랑스럽게 생각해야합니다!
NOTE 2 : 쉘 스크립트는 한번 실행되면 제거되므로, 복사본을 유지하고 싶을 수도 있습니다.
이 레벨을 해결하는 데 필요할 수있는 명령
cron, crontab, crontab(5) (이것을 사용하려면 "man 5 crontab"을 사용하십시오.)
[문제 풀이]
이번 문제는 level21, 22에서 더 어렵게 응용한 문제이다. 이 문제를 풀려면 직접 쉘 스크립트를 작성해야 한다고 한다. 먼저 /etc/cron.d 디렉터리를 먼저 살펴보자.
cronjob bandit24 파일을 살펴보니 cronjob_bandit24.sh라는 쉘 프로그램을 실행하는 것을 알 수 있었다.
쉘 프로그램 내용을 살펴보면 myname 변수에 접속한 계정 아이디를 담고 있다. bandit24 권한으로 실행해야 하니 myname에는 bandit24가 들어간다. 따라서 쉘 프로그램이 실행되면 /var/spool/bandit24 디렉터리로 이동 후 for 문을 통해 파일 이름이.(현재 디렉터리), ..(이전 디렉터리) 인 것이 아닐 때 즉, 해당 디렉터리에 있는 모든 파일을 실행시키고 삭제하는 것을 알 수 있다. 그리고 이 쉘 프로그램은 1분마다 실행되게끔 설정되어 있다.
그렇다면 /var/spool/bandit24 디렉터리에 bandit24 패스워드를 볼 수 있는 쉘 프로그램을 작성해 놓고 1분이 지난 후라면 이 cron 프로그램이 만든 쉘 프로그램을 자동으로 실행해 줄 것이다. 하지만 쉘 프로그램이 실행되고 rm -f 명령어로 인해 바로 파일이 삭제가 되므로 /tmp 디렉터리에 입력된 정보를 저장하도록 한다. 처음에 쉘 프로그램을 작성할 때 실행 권한이 주어지지 않으므로 꼭 chmod 명령어로 실행 권한을 줘야 한다.
#쉘 프로그램 내용
#!/bin/bash
cat /etc/bandit_pass/bandit24 > /tmp/moon/log
1분 후에 crontab에 의해 쉘 프로그램이 실행되고 지정해놓은 경로에 다음 레벨에 대한 패스워드가 들어가 있는 것을 확인할 수 있다.
next level password : UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ
'War Game > bandit' 카테고리의 다른 글
Bandit level25 (0) | 2017.04.14 |
---|---|
Bandit level24 (0) | 2017.04.14 |
Bandit level22 (0) | 2017.04.10 |
Bandit level21 (0) | 2017.04.10 |
Bandit level20 (0) | 2017.04.07 |