1. 문제
- 프로그램이 정기적으로 실행되는 cron(시간 기반 작업 스케줄러)에 의해 자동으로 실행되고 있습니다.
- /etc/cron.d/ 디렉터리에서 해당 설정을 확인하고 어떤 명령이 실행되고 있는지 살펴보세요.
- 참고 1: 이 단계에서는 여러분이 처음으로 셸 스크립트를 작성해야 합니다. 이는 매우 중요한 단계이며, 이 단계를 성공적으로 완료한다면 스스로 자랑스러워해도 좋습니다!
- 참고 2: 작성한 셸 스크립트는 실행 후 삭제되므로, 실행 전에 복사본을 만들어 두는 것이 좋습니다.
2. 풀이
- 오….. 뭔 코드가 나옴
- 한개씩 분석해보자.
cd /var/spool/$myname/foo
echo "Executing and deleting all scripts in /var/spool/$myname/foo:"
for i in * .*;
do
if [ "$i" != "." -a "$i" != ".." ];
then
echo "Handling $i"
owner="$(stat --format "%U" ./$i)"
if [ "${owner}" = "bandit23" ]; then
timeout -s 9 60 ./$i
fi
rm -f ./$i
fi
done
- cd /var/spool/$myname/foo
- 해당 경로로 cd 명령을 수행한다. → /var/spool/bandit23/foo
- echo "Executing and deleting all scripts in /var/spool/$myname/foo:"
- 이 디렉토리의 실행 및 삭제 작업을 수행한다는 메시지 출력
- for i in * .*;
- 숨김 파일을 포함한 모든 파일을 for 문으로 순회한다.
- if [ "$i" != "." -a "$i" != ".." ];
- 현재 디렉토리(.)와 상위 디렉토리(..)는 처리에서 제외함.
- 즉 현재 디렉토리와 상위 디렉토리 파일을 대상으로 수행됨
- echo "Handling $i" owner="$(stat --format "%U" ./$i)"
- stat 명령어를 사용해 파일 $i의 소유자 정보를 변수 owner에 저장함.
- if [ "${owner}" = "bandit23" ]; then timeout -s 9 60 ./$i fi rm -f ./$i
- 소유자가 bandit23이면 해당 스크립트를 실행하고 60초의 실행 시간이 초과하면 종료하고 삭제한다.
- 그럼 뭐 아무 스크립트나 작성해보자.
- 막막해서 GPT의 도움을 조금 받았다.
- 패스워드 읽어서 내가 접근가능한 디렉토리에 복사하는 스크립트다.
#!/bin/bash
cat /etc/bandit_pass/bandit24 > /tmp/bandit24_password
- 하고 실행 권한 주면 됨
- 안되길래 실패한것 같았는데
- 1분 안지나서 그런가보다 하고 조금 더 기다리니까
- ㄷㄷㄷㄷㄷ 미친 AI
'Wargame > bandit wargame' 카테고리의 다른 글
Bandit Level 25 → 26 (2) | 2025.01.07 |
---|---|
Bandit Level 24 → 25 (2) | 2025.01.06 |
Bandit Level 22 → 23 (0) | 2025.01.06 |
Bandit Level 21 → 22 (1) | 2025.01.06 |
21 → 27 까지 필요한 명령어 (1) | 2025.01.06 |