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

bandit level 6에서 비밀번호를 얻기 위해
주어진 정보(파일을 소유한 유저, 파일을 소유한 그룹, 파일의 크기)를 통해 비밀번호가 포함된 파일을 특정해야 합니다.

ls 명령어를 입력해서 현재 디렉토리에 있는 항목을 출력합니다.
아무것도 출력되지 않습니다.
ls -a 명령어로 .으로 시작하는 항목을 출력하면
현재 디렉토리, 부모 디렉토리, Bash shell을 구동하는데 쓰이는 핵심 스크립트들 뿐입니다.

find / -user bandit7 -group bandit6 -size 33c 2>/dev/null -exec cat {} +
# 루트 디렉토리(/)부터
# 소유한 사용자가 bandit7, 소유한 그룹은 bandit6이고, 파일 크기가 33 byte인 파일을 찾아서
# 오류가 나면 에러 메세지는 출력하지 말고
# 조건을 만족하며 접근 가능한 파일의 내용을 출력해라
find가 파일을 찾기 시작하는 위치(디렉토리) 인자가 주어지지 않으면,
find는 현재 위치한 디렉토리부터 재귀적으로 파일을 찾습니다.
따라서 find 명령어에서 탐색을 시작할 위치(/)를 지정해주면 목표한 비밀번호 파일을 얻을 수 있습니다.

학습을 위해서 cd .. 명령어를 입력해서 접근할 수 있는 가장 상위 디렉토리로 이동해봅니다.
cd ..를 입력했는데도 위치가 변하지 않으면,
현재 접근할 수 있는 가장 상위 디렉토리에 위치한 것입니다.

find 명령어의 user/group/size 옵션을 활용하여 파일을 특정하여,
2</dev/null로 에러메세지를 제거하고 -exec 옵션과 cat 명령어를 이용하여
한 줄로 압축된 명령어를 입력하면 비밀번호가 출력됩니다.

로그인했을 때 위치한 디렉토리에서
바로 find 명령어를 파일을 찾기 시작할 위치를 지정하지 않고 입력하면,
find 명령어가 비밀번호 파일을 찾아내지 못합니다.
비밀번호가 저장된 파일은 로그인했을 당시의 CWD(현재 작업 디렉토리)의 하위 디렉토리에 위치하지 않기 때문입니다.

로그인하여 바로 pwd 명령어를 입력하면
현재 작업 디렉토리는 /home/bandit6 입니다.

루트 디렉토리에서 찾은 비밀번호 파일의 위치는 ./var/lib/dpkg/info입니다.
그러므로 상술한 바와 같이 루트 디렉토리에서 find 명령어를 입력하거나,
탐색 시작 위치(/)를 지정하여 비밀번호를 출력하시면 됩니다.
'Bandit' 카테고리의 다른 글
| Bandit Level 8 -> Level 9 (sort? uniq?) (0) | 2026.01.11 |
|---|---|
| Bandit Level 7 -> Level 8 (awk/sed) (0) | 2026.01.11 |
| Bandit Level 5 -> Level 6 (tmi : tr, echo / human-readable?) (0) | 2026.01.11 |
| Bandit Level 4 -> Level 5 (wildcard?) (0) | 2026.01.11 |
| Bandit Level 3 -> Level 4 (command : cd) (0) | 2026.01.10 |