해킹 동아리 I.Sly()/방학 스터디 활동

[bandit] level 23 -> level 24

gom1n 2021. 2. 20. 00:54

해설)

프로그램은 cron으로 작동된다. /etc/cron.d/로 이동해 실행되는 명령을 보아라.

NOTE: 이 레벨은 너에게 첫 쉘 스크립트를 창작하는 것을 요구한다. 이것은 매우 큰 일이며 너 자신을 자랑스러워해라!

NOTE2: 너의 쉘 스크립트는 한 번 실행되면 사라진다는 것을 명심하며, 복사하는 것을 명심해라.

 

 

역시나 저번과 같다. 이번 단계의 목표인 cronjob_bandit24를 읽어보자.

해당 명령어를 읽어보자.

코드들이 나온다.

해석)

myname = $(whoami)  => myname에 "bandit24" 저장

 

cd /var/spool/$myname => /var/spool/bandit24로 이동.

echo "Executing and deleting all scripts in /var/spool/$myname:" => 해당 문자열 출력

for i in * .*; => 모든 파일에 대해 반복함.

do

    if [ "$i" !="." -a "$i" != ".." ];  =>  해당 파일이 . (현재 디렉토리)이 아니고 ..(상위 디렉토리)이 아니라면,

    then

            echo "Handling $i"  => Handling [파일이름] 출력

            owner="$(stat --format "%U" ./Si)" => 파일의 소유자 이름을 owner에 저장.

            if [ "%{owner}" = "bandit23" ]; then  => 파일의 소유자가 "bandit23" 이라면,

                timeout -s 9 60 ./%i  =>  60초 후에 해당 파일을 종료한다.

            fi

            rm -f ./$i => 해당 파일 강제 삭제.

    fi

done

 

요약하자면, /var/spool/bandit24에 존재하는 모든 파일을 실행하고 삭제하는 쉘 스크립트이다.

처음에 파일의 복사본을 만들라고 했던 이유가 이것 때문이였다.

 

저번처럼, tmp디렉터리 아래에 임의의 gomin디렉터리를 만든다.

gomin으로 이동 후, 아래와 같이 쉘 스크립트를 작성한다.

/etc/bandit_pass/bandit24의 내용을 gomin디렉터리 아래의 bandit_pass라는 파일에다가 복사하는 내용이다.


스크립트의 작성법은 다음과 같다.

 

  1. vi 파일이름 을 이용해서 편집모드로 들어간다.
  2. 첫 번째 줄에 #! /bin/bash 를 작성하고, 이후에 코드를 작성한다.
  3. 코드 작성이 끝나면 exit 0을 입력하고 esc를 눌러 편집모드를 비활성화 시킨 후에 :wq를 입력해서 저장 후 종료한다.
  4. 쉘 스크립트 파일은 실행시키기 위해 항상 chmod +x 명령어로 실행 권한을 부여해주어야 한다. 예) $ chmod +x ./test.sh

실행 권한을 임의의 숫자 777로 부여해준다.

cronjob_bandit24.sh에다가 /var/spool/bandit24/의 내용을 복사해준다.

두 번 ls -al을 해주니 bandit_pass파일이 실행된 것을 확인할 수 있다.

bandit_pass파일을 읽어준다.

UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ