본문 바로가기

Bandit

Bandit Level 22 -> Level 23

해당 게시글은 bandit wargame에 대한 스포일러(방향성/힌트/정답)를 제공할 수 있습니다. 

 

 

 

bandit level 22의 목표는

cron에 의해 자동으로, 정기적인 간격에 따라 실행되는 프로그램이 있으므로

/etc/cron.d 디렉토리에서 설정을 확인하고 실행되는 명령어를 확인하여 비밀번호를 획득하는 것입니다. 

 

/etc/cron.d 디렉토리로 이동해서 cronjob_bandit23의 내용을 출력하면,

이전 레벨과 마찬가지로 매분 /usr/bin/cronjob_bandit23.sh를 실행하고 표준 출력과 오류 메세지는 리다이렉션하여 소멸시킵니다. 

 

cron이 실행하는 쉘 스크립트(/usr/bin/cronjob_bandit23.sh)의 내용은 다음과 같습니다. 

#!/bin/bash		# shebang

myname=$(whoami)
# 해당 작업의 EUID는 bandit23이므로, whoami 호출을 통해 할당되는 $whoami 변수의 값은 bandit23
mytarget=$(echo I am user $myname | md5sum | cut -d ' ' -f 1)
# 'I am user bandit23'을 32자리 해시값과 -(하이픈)으로 변환, cut으로 32자리 해시값만 추출

echo "Copying passwordfile /etc/bandit_pass/$myname to /tmp/$mytarget"
cat /etc/bandit_pass/$myname > /tmp/$mytarget
# 다음 레벨의 비밀번호 파일을 출력 리다이렉션을 통해 /tmp/(32자리 해시값) 파일에 쓰기 작업 수행

 

MD5 해시 알고리즘은 동일한 입력값에 대해 항상 동일한 출력값을 반환하므로, 

MD5 해시 알고리즘이 적용된다는 사실을 아는 사용자라면 누구나 쉘 스크립트가 생성할 파일명을 미리 계산하여 비밀번호를 획득할 수 있습니다. 

echo I am user bandit23 | md5sum | cut -d ' ' -f 1 를 실행하여

평문 문자열을 파이프라인을 통해 전달하여, MD5(Message-Digest Algorythm 5) 해시값을 계산하고, 결과물 중에서 식별자(-)를 제외하고 첫번째 필드만을 추출하여 파일 식별자(32자리 해시값)을 생성합니다. 

 

해당 경로는 소유자, 그룹, 그 외 사용자가 모두 읽을 수 있는 상태로 생성되므로,

cat 명령어를 통해 다음 레벨의 비밀번호를 획득합니다. 

'Bandit' 카테고리의 다른 글

Bandit Level 24 -> Level 25  (0) 2026.01.13
Bandit Level 23 -> Level 24  (1) 2026.01.13
Bandit Level 21 -> Level 22  (0) 2026.01.13
Bandit Level 20 -> Level 21 (ptrace?)  (0) 2026.01.13
Bandit Level 19 -> Level 20 (EUID vs RUID?)  (0) 2026.01.13