문제
풀이 및 정답
이번 문제도 level 23과 유사하게 cron 데몬이 자동으로 실행하는 스크립트를 살펴보는 것이다.
/etc/cron.d
경로에 있는 cronjob 중에서 24 레벨에 관한 파일을 열어보면,
/usr/bin/cronjob_bandit24.sh
스크립트가 동작하는데 모든 출력이 /dev/null
로 보내지고 있고,
/usr/bin/cronjob_bandit24.sh
도 열어본다.
쉘 스크립트를 살펴보면
#!/bin/bash
myname=\$(whoami)
= bandit24 할당
cd /var/spool/\$myname/foo
echo “Executing and deleting all scripts in /var/spool/\$myname/foo:”
= /var/spool/bandit24/foo/ 에 존재하는 모든 스크립트 실행 후 삭제 하겠다는 설명
for i in * .*;
= 현재 디렉토리 모든 파일에 대해 반복문 실행 > i 에 파일명 전달
do
if [”\$i” != “.” -a “\$i” != “..” ];
= 현재 디렉토리의 파일이 . 이나 .. 이 아니라면
then
echo “Handling \$i”
owner=”$(stat --fromat “%U” ./\$i)”
= 실행하려는 파일의 소유자 확인
if [ “\${owner}” = “bandit23” ]; then
= 파일의 소유자가 bandit23 이라면
timeout -s 9 60 ./\$i
= 60초 동안 실행하고 강제 종료
fi
./\$i
rm -f ./\$i
= 실행 후 파일 삭제
fi
done
= 결론은 /var/spool/bandit24/foo/
디렉토리에 있는 파일을 실행하고,
파일의 소유자가 bandit23 이라면 60초 동안 실행하고 강제 종료한다는 것이다.
그렇기에 우리는 스크립트를 짜고 패스워드를 돌려받을 디렉토리를 하나 생성하고 스크립트 작업 후, /var/spool/bandit24/foo/
디렉토리에 복사해 넣으면 될 것이다.
임시 디렉토리를 /tmp/scortnt
만들어줬고, cat_pass24 라는 이름으로 스크립트를 짤 것이고, pass24 파일에 패스워드를 받아올 것이다.
cat_pass24 스크립트는 다음과 같이 작성했다.
그리고 /var/spool/bandit24/foo/
디렉토리에 복사해 넣기 전에 작업중인 디렉토리와 스크립트의 권한, 패스워드를 받을 파일의 권한을 확인해봤다.
현재 디렉토리에 작성권한을 추가해주고
스크립트는 실행권한을,
패스워드를 받을 파일에는 작성 권한을 추가해줘야 한다.
준비가 끝난 것 같으니 /var/spool/bandit24/foo/
디렉토리에 복사해 넣는다.
그리고 꽤 기다리다 보면 pass24 파일의 크기가 커진 것을 확인할 수 있고,
cat 명령어로 패스워드를 확인해볼 수 있다.
passwd : gb8KRRCsshuZXI0tUuR6ypOFjiZbf3G8
다음!