아임노드

[OverTheWire Bandit] Bandit Level 23 -> Level 24 문제풀이 (+cron.d 스크립트를 분석하여 파일 생성/복사/읽기) 본문

[SK shieldus Rookies 23기] 공부 노트/OverTheWire Bandit 문제풀이

[OverTheWire Bandit] Bandit Level 23 -> Level 24 문제풀이 (+cron.d 스크립트를 분석하여 파일 생성/복사/읽기)

Noody 2024. 12. 19.

OverTheWire Bandit

Level 23 -> Level 24

 

 

목표 : cron.d을 분석하고 스크립트를 이해한 상태로 패스워드 찾기

 

  • bash 셸 내용 접근 및 실행 (패스워드 파일 복사)
  • 실행 권한 부여
  • 잠시 기다렸다가 파일 내용 확인

 

풀이 방법

 

1. bandit23 서버 접속

ssh bandit23@bandit.labs.overthewire.org -p 2220

 

 

2. bash 셸 내용 확인까지 접근하기

접근에 관련해서는 이전 문제와 동일하므로

자세히 정리하지 않도록 하겠다.

 

 

파일 내용의 결과 목적을 간단히 요약하자면,

  • /var/spool/$myname/foo에 업로드된 스크립트 파일을 실행 후 삭제하는 자동화 작업을 수행
  • 파일의 소유자가 bandit23인 경우:
    • 파일을 60초 동안 실행(시간 초과 시 강제 종료)
    • 실행 후 파일을 삭제

 

여기까지 확인

 

 

3. bash 셸 내용대로 진행하기

가이드에 따라 셸에 해당 경로로 이동한다.

cd /var/spool/bandit24/foo

 

다음 명령어에 대해서 하나하나 살펴보겠다.

echo "cat /etc/bandit_pass/bandit24 > /tmp/pass24.txt" > pass.sh

 

 

ehco

  • echo 명령어는 뒤에 오는 문자열을 출력
  • 여기서는 cat /etc/bandit_pass/bandit24 > /tmp/pass24.txt라는 문자열을 출력

 

"cat /etc/bandit_pass/bandit24 > /tmp/pass24.txt"

  • cat /etc/bandit_pass/bandit24: 파일 /etc/bandit_pass/bandit24의 내용을 출력
  • >: 출력된 내용을 파일로 저장(덮어쓰기)
  • /tmp/pass24.txt: 출력 내용을 저장할 파일의 경로(임시 디렉토리인 /tmp에 생성됨)

 

마지막으로,

pass.sh라는 파일이 생성되고 그 안에 cat /etc/bandit_pass/bandit24 > /tmp/pass24.txt라는 내용이 저장된다.

 

즉, 패스워드 파일을 pass24.txt 파일에 복사하여 저장한다.

 

 

4. 실행 권한 부여

실행 권한이 없으므로 권한을 부여하도록 하겠다.

chmod 777 pass.sh   -> 실행권한 부여
ls pass.sh          -> 파일 존재 확인

 

 

5. 실행 주기에 따른 잠시 기다렸다가 파일 내용 확인

cron.d의 실행 주기(60초)가 있으므로 복사한 파일은 다음 실행주기에 처리된다.

따라서 파일을 복사한 후 다음 주기까지 기다렸다가 내용을 읽으면 다음 패스워드를 확인할 수 있다.

* 기다리는 시간은 30초내로 계속 cat 명령어로 확인해보자.

* 파일을 바로 읽으면 실행 주기에 따라 위와 같이 파일 내용을 확인할 수 없다.

 


 

자료를 찾아도 bandit 문제가 지속적으로 업데이트 되는 건지 패스워드도 몇 달 전 것과 다른 것을 보면

이전 문제풀이와 완전히 겹치진 않는 것 같다. 나름 이해를 하고 변형을 해야하는 부분이 있다.