AnbyMata의 해킹 노트

[Bandit] Level 4 → Level 5 본문

OverTheWire/Bandit

[Bandit] Level 4 → Level 5

AnbyMata 2026. 1. 15. 22:00

OverTheWire - Bandit : Level 4 → Level 5. Write-up!

출처: https://overthewire.org/wargames/bandit/bandit5.html

 

OverTheWire: Level Goal

We're hackers, and we are good-looking. We are the 1%. <!-- Please read and accept the Rules! --> Level Goal The password for the next level is stored in the only human-readable file in the inhere directory. Tip: if your terminal is messed up, try the “r

overthewire.org

시작을 위해 "ssh -p 2220 bandit4@bandit.labs.overthewire.org" ssh 로그인합니다!

( 비밀번호: Level 3 → Level 4 에서 얻은 비밀번호 )

 

[1]  문제 요약

inhere 디렉토리 안에 사람이 읽을 수 있는 (human-readable) 파일은 딱 하나 있습니다.

사람이 읽을 수 있는 유일한 파일다음 레벨의 비밀번호 저장되어 있습니다.

 

 


[2]  사용되는 명령어들

- ls : 현재 디렉토리 또는 지정한 경로의 파일과 폴더 목록 출력

- cd : 현재 작업 중인 디렉토리를 변경 (= 현재 위치에서 다른 디렉토리로 이동)

- cat : 파일의 내용을 화면에 출력

- file : 파일의 종류 및 타입 확인

- du : 디렉토리나 파일의 디스크 사용량 표시

- find : 지정한 경로에서 조건에 맞는 파일이나 디렉토리 검색

 

참고하면 좋은 블로그 글: https://anbymata.tistory.com/12

 

[Linux 기초] EP.9 - 파일 내용 확인하기 (cat, file, more)

지금까지 우리는 파일의 내용을 확인할 때 vi 명령어를 사용하여 vi 편집기 내부로 들어가서 확인해야 했습니다.그러나 이 방법은 단순히 내용 확인이 목적일때는 번거롭습니다. 그래서 오늘은 v

anbymata.tistory.com

 

 


 

[3]  문제 접근 과정

1)  홈 디렉토리에서 ls 명령어로 inhere 디렉토리의 위치 확인 

ls

 = 홈 디렉토리 안에 inhere 디렉토리가 존재합니다.

 

 

2)  cd 명령어로 inhere 디렉토리에 이동 후, 어떤 파일들이 있는지 ls 명령어로 확인

cd inhere + ls

 = inhere 디렉토리 안에 "-file00", "-file01", ..., "-file09"까지 총 10개의 파일이 존재합니다.

 

 

3)  파일 이름들이 "-"으로 시작함

 → 파일을 경로로 지정해야 되겠다!

 - 상대 경로를 활용하여 파일을 지정하면 됩니다.

 - ex) './-file00'

 

 

4)  파일의 종류 및 타입을 확인하는 명령어는?

 → file 명령어를 사용하자!

 

 

5)  'file [파일명]' 형식으로 각 파일의 타입 확인

 - ex) 'file ./-file00'

 - 사람이 읽을 수 있는 파일은 딱 하나라고 했으니 혼자만 파일 타입이 다르게 출력될 것입니다.

 

 

6)  한 번에 여러 파일들을 확인하는 방법은 없을까?

 - ' * ' (와일드카드)를 활용하면 됩니다.

 - ' * ' 은 현재 디렉토리의 모든 파일과 디렉토리를 의미합니다.

[보충 설명]
와일드 카드 ( * )를 사용하면 shell이 현재 위치한 디렉토리의 파일 목록으로 치환해줍니다.
치환된 결과를 명령어에 전달하기에 명령어가 ' * '를 직접 해석하지 않습니다.

즉, "alpha", "beta" 라는 2개의 파일을 가진 example 디렉토리가 있다고 할 때,
example 디렉토리에서 'ls *' 명령어를 실행하면,
'ls aplha', 'ls beta' 를 동시에 실행한 결과가 출력됩니다.
(명령어를 2번 실행하는 것이 아닌 하나의 명령어에 2개의 인자를 전달하는 것입니다)

추가적으로 shell이란,
사용자와 OS (운영체제)의 kernel(커널) 사이를 연결하는 명령어 해석기입니다.
지금은 우리가 리눅스에서 명령어를 입력하는 부분으로 생각하면 됩니다.

 

 

7)  'file *' 명령어로 한 번에 inhere 디렉토리 안의 파일들 타입 확인 시도

file *

 = 정답 색출에 실패한 모습입니다.

 

 

8)  'file *' 명령어가 실패한 이유

 - ' * '은 shell이 파일 목록으로 치환하는 방식입니다.

 - 그래서 'file *'은 'file -file00', 'file -file01', ..., 'file -file09'를 실행한 것과 동일하여 옵션으로 해석되었습니다.

 - 해결 방법은 옵션으로 해석되어 생기는 문제와 비슷해보입니다.

 

 

9)  binary 파일을 cat 명령어로 읽었을 때 내용이 깨진다는 점 활용하기

 - 파일 타입에는 크게 2가지가 있습니다.

 - 1. binary = 사람이 아닌 시스템이 읽도록 만들어진 파인

 - 2. text = 사람이 읽도록 만들어진 파일

 - 이 중, binary 파일을 cat 명령어로 출력해보면, 깨진다는 것을 [리눅스 기초] EP.9 에서 다루었습니다.

[보충 설명]
Binary 파일
- 사람이 직접 읽도록 만들어진 파일이 아닙니다. (시스템용)
- 실행파일, 이미지, 압축 파일 등이 있습니다
- cat 명령어로 출력하면 알 수 없는 문자들이 출력되며 터미널이 깨집니다.

Text 파일
- 사람이 읽도록 만들어진 파일입니다. (사람용)
- ACSII / UTF-8 등의 문자 인코딩을 사용합니다.
- 그래서 cat 명령어로 출력하면 읽을 수 있습니다.

 

 


[4]  문제 풀이 및 분석

1)  ls 명령어로 inhere 디렉토리 위치 파악 후, inhere 디렉토리로 이동

ls + cd inhere

 = 홈 디렉토리 안에 inhere 디렉토리가 있음을 확인 후, inhere 디렉토리로 이동했습니다.

 

 

2)  ls 명령어로 inhere 디렉토리에 있는 파일 목록 확인

ls

 = inhere 디렉토리 안에 "-file00", "-file01", ..., "-file09"까지 총 10개의 파일이 존재합니다.

 

 

 

[4-1] file 명령어로 파일 하나씩 확인하기

3)  file 명령어에 상대 경로를 활용해 파일 하나씩 확인

 - ex) 'file ./-file00'

file ./-file0?

 = "-file07" 만이 ASCII text 타입입니다.

 - 여러개의 파일이 존재하는 "data"와 "OpenPGP Public Key" 타입은 정답이 아닐 것입니다.

[보충 설명]
"data" 타입은 file 명령어라 파일 형식을 특정할 수 없을 때 표시하는 타입입니다.
대부분 바이너리 (binary) 파일로 사람이 읽을 수 없는 경우가 많습니다.
실행 파일, 암호화된 파일, 임의 데이터 등에 사용됩니다.

"OpenPGP Public Key" 타입은  PGP 공개키 파일입니다.
암호화 또는 전자서명에 사용되는 Key 데이터입니다.
암호용 바이너리 데이터이기에 사람이 직접 읽는 텍스트가 아닙니다.

 

 

4)  ASCII text 타입인 "-file07" 파일 내용 출력하기

cat ./-file07

 = "-file07" 파일 안에 있던 비밀번호 획득!

 

 

 

[4-2] * 을 활용해 inhere 디렉토리 안의 파일들 한 번에 확인하기

3)  file 명령어에 * 을 활용하여 파일들 한 번에 확인

 - * 이 파일 목록으로 치환되니, " ./* "로 하여 경로로 지정되게끔 해줍니다.

file ./*

 = "-file07" 만이 text 타입입니다.

 

 

4)  ASCII text 타입인 "-file07" 파일 내용 출력하기

cat ./-file07

 = "-file07" 파일 안에 있던 비밀번호 획득!

 

 

 

[4-3] cat 명령어를 활용하여 파일 타입 파악하기

3)  cat 명령어로 파일들 내용 확인 시도

 - "-file00" 파일 내용을 출력해보면,

cat ./-file00

 = 내용도 알아볼 수 없고, 터미널도 깨진 모습입니다.

→ 고로, "-file00"은 human-readable한 파일이 아닙니다.

 

 - "OpenPGP Public Key" 타입 파일인 "-file01" 내용도 출력 시도해보면,

cat ./-file01

 = 마찬가지로 내용을 알아볼 수 없고, 터미널도 깨졌습니다.

→ 즉, 2개 존재하던 OpenPGP Public Key 타입도 human-readable 하지 않습니다.

 

 - 유일하게 ASCII Text 타입이였던 "-file07" 파일 내용을 출력해보면,

cat ./-file07

 = "-file07" 파일 안에 있던 비밀번호 획득!

 

bandit 비밀번호는 반드시 따로 복사해서 저장해두기! (메모장 등으로)

 

 


[Bandit] Level 4 → Level 5. Clear.

 

[Bandit] Level 5 → Level 6. Continue...
https://anbymata.tistory.com/46

 

[Bandit] Level 5 → Level 6

OverTheWire - Bandit : Level 5 → Level 6. Write-up!출처: https://overthewire.org/wargames/bandit/bandit6.html Level Goal The password for the next level is stored in a file somewhere under the inhere directory and has all of the following properties: h

anbymata.tistory.com

'OverTheWire > Bandit' 카테고리의 다른 글

[Bandit] Level 6 → Level 7  (1) 2026.02.06
[Bandit] Level 5 → Level 6  (0) 2026.01.24
[Bandit] Level 3 → Level 4  (0) 2026.01.12
[Bandit] Level 2 → Level 3  (0) 2026.01.10
[Bandit] Level 1 → Level 2  (0) 2026.01.09