문제

Bandit Level 23->24


풀이 및 정답

이번 문제도 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

다음!