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.
전 단계의 문제와 비슷하네요.
/etc/cron.d/에서 보면 cron에 의해 주기적으로 실행되는 파일이 존재하는 것 같습니다.
함께 같이 풀어볼까요?
bandit22 계정으로 로그인하여 /etc/cron.d 경로에 있는 파일을 살펴보겠습니다.
bandit22@bandit:/etc/cron.d$ ls
cronjob_bandit22 cronjob_bandit24 otw-tmp-dir
cronjob_bandit23 e2scrub_all sysstat
cronjob_bandit23이 뭔가 이번 단계의 비밀번호가 관련되어 있을 것 같군요!
cat 명령어를 사용해서 읽어보겠습니다.
bandit22@bandit:/etc/cron.d$ cat cronjob_bandit23
@reboot bandit23 /usr/bin/cronjob_bandit23.sh &> /dev/null
* * * * * bandit23 /usr/bin/cronjob_bandit23.sh &> /dev/null
저번 단계에서와 같이 시스템 부팅될 때(@reboot) /usr/bin/cronjob_bandit23.sh 파일이 실행되거나, 매 분마다 실행되는 것 같네요!
해당 파일을 읽어봅시당!
bandit22@bandit:/etc/cron.d$ cat /usr/bin/cronjob_bandit23.sh
#!/bin/bash
myname=$(whoami)
mytarget=$(echo I am user $myname | md5sum | cut -d ' ' -f 1)
echo "Copying passwordfile /etc/bandit_pass/$myname to /tmp/$mytarget"
cat /etc/bandit_pass/$myname > /tmp/$mytarget
오.. 뭔가 복잡해 보이는데요!
하지만 하나도 어렵지 않답니다.
한 줄씩 해석해 보겠습니다.
📌 myname=$(whoami)
whoami는 현재 로그인한 계정의 이름을 보여줍니다!
이 파일은 bandit23로 실행되기에 myname이라는 변수에 bandit23를 저장하지요.
📌 mytarget=$(echo I am user $myname | md5sum | cut -d ' ' -f 1)
우선, I am user bandit23를 표준입력으로 넘겨줍니다.
그리고 md5sum 명령어로 해시값을 구하지요.
그 결과는 아래와 같습니다.
bandit22@bandit:~$ echo I am user bandit23 | md5sum
8ca319486bfbbc3663ea0fbe81326349 -
[해시값] + 공백 + -
라는 결과가 나오는데요.
한가지 짚고 넘어가자면요!!
md5sum 명령어는 md5sum [파일명]으로 사용합니다!
그래서 표준입력으로 전달받은 값은 -가 붙는 것이지요.
여기서 공백과 -를 제거하기 위하여 cut 명령어를 사용합니다.
📌 cut -d ' ' -f 1
✅ -d ' '
어떤 것을 기준으로 자를지 정함
여기서는 ' '(공백)으로 자름
✅ -f 1
자른 것 중에 첫번째 조각을 가져옴
아마 해시값을 가져오게 되겠네요!
📌 cat /etc/bandit_pass/$myname > /tmp/$mytarget
비밀번호 파일을 읽어서 /tmp/$mytarget에 저장하는데요!
mytarget은 아까 구한 해시값 이므로 비밀번호를 찾을 수 있을 것 같습니다.
비밀번호 얻기 성공 :)
bandit22@bandit:~$ cat /tmp/8ca319486bfbbc3663ea0fbe81326349
0Zf11ioIjMVN551jX3CmStKLYqjk54Ga