| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- 워게임
- THM
- linux
- 해커
- 해킹
- IR
- XSS
- 사이버 보안
- cert
- 블루팀
- 해킹 스터디
- Web
- 보안 관제
- OverTheWire
- Cyber Security
- http
- TryHackMe
- Cross-Site Scripting
- 정보보호
- 리눅스 기초
- 정보보안
- write-up
- Bandit
- 보안 스터디
- SoC
- 리눅스
- 모의해킹
- Blue Team
- web hacking
- CTF
- Today
- Total
AnbyMata의 해킹 노트
[Bandit] Level 5 → Level 6 본문
OverTheWire - Bandit : Level 5 → Level 6. Write-up!
출처: https://overthewire.org/wargames/bandit/bandit6.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 a file somewhere under the inhere directory and has all of the following properties: human-readable 10
overthewire.org
시작을 위해 "ssh -p 2220 bandit5@bandit.labs.overthewire.org"로 ssh 로그인합니다!
( 비밀번호: Level 4 → Level 5 에서 얻은 비밀번호 )
[1] 문제 요약
inhere 디렉토리 아래 어딘가에 있는 파일에 다음 레벨의 비밀번호가 저장되어 있습니다.
비밀번호가 저장된 파일은 다음의 조건들을 만족합니다.
- 사람이 읽을 수 있음 (human-readable)
- 크기는 1033 bytes
- 실행 파일이 아님 (not executable)
[2] 사용되는 명령어들
- ls : 현재 디렉토리 또는 지정한 경로의 파일과 폴더 목록 출력
- cd : 현재 작업 중인 디렉토리를 변경 (= 현재 위치에서 다른 디렉토리로 이동)
- cat : 파일의 내용을 화면에 출력
- file : 파일의 종류 및 타입 확인
- du : 디렉토리나 파일의 디스크 사용량 표시
- find : 지정한 경로에서 조건에 맞는 파일이나 디렉토리 검색
[3] 문제 접근 과정
1) inhere 디렉토리 안의 파일/디렉토리 목록 확인

= "maybehere00"부터 "maybehere19"까지 총 20개의 디렉토리가 존재합니다.
2) 20개 디렉토리 중 일부 디렉토리의 파일 목록 확인
- "maybehere00", "maybehere01", "maybehere03"의 파일 목록을 확인해봅니다.

= 각 디렉토리 안에 총 6개의 파일이 들어있습니다.
- 이름이 "-"로 시작하는 파일과 공백이 있는 파일 2가지 유형이 있습니다.
- 세 디렉토리 안의 파일들이 이름이 다 동일한 것으로 보아 다른 디렉토리들도 동일한 이름의 파일들을 가지고 있을 것입니다.
3) 하나의 디렉토리로 이동한 후, file 명령어로 파일들의 타입 확인
- maybehere00 디렉토리의 파일들의 타입을 확인해봅니다.
- 이름이 "-"로 시작하는 파일과 공백이 있는 파일 2가지 유형이 있습니다.
- 그래서 file 명령어에 와일드카드 ( * )를 활용하는 것은 힘듭니다.
| [보충 설명] "-"로 시작하는 파일이 옵션으로 해석되는 문제를 해결하기 위해 file ./* 명령어를 사용하면, 공백이 있는 파일이 'file ./spaces file1'이 되면서 'file ./spaces' 라는 없는 파일을 지정하게 됩니다. 공백이 있는 파일이 2가지 인자로 해석되는 문제를 해결하기 위해 file "*" 명령어를 사용하면, "-"로 시작하는 파일이 'file "-file1"'이 되면서 옵션으로 해석하게 됩니다. 즉, 와일드카드를 사용하기 굉장히 힘듭니다. |
- 이름이 "-"로 시작하는 파일은 상대 경로, 이름에 공백이 있는 파일은 따옴표( " " )를 활용합니다.

= 파일 타입을 통해 각 파일의 human-readable 여부만 판단할 수 있습니다.
= 파일 크기, 실행 파일인지 여부는 파악할 수 없습니다.
4) ls 명령어에 '-l' 옵션을 사용하여 파일의 상세 정보 확인하기
- 'ls -l' 옵션은 파일의 상세 정보를 출력해줍니다.
- 'ls -l'로 maybehere00 디렉토리 안의 파일들의 상세 정보를 확인해보면,

= 파일크기, 실행 파일인지 여부를 파악할 수 있습니다.
= 하지만, 이번에는 파일타입을 몰라 human-readable한지는 판단할 수 없습니다.
| [보충 설명] 'ls -al' 명령어의 결과로 출력되는 값들을 왼쪽부터 차례대로 알려드리면, - "-rwxr-x---" = 파일 타입 + 권한 - "1" = 링크 수 - "root" = 소유자 - "bandit5" = 파일이 속한 그룹 - "1039" = 파일크기 (bytes 단위) - "Oct 14 09:26" = 최종 수정 시간 - "-file1" = 파일 이름 입니다. (그렇구나 정도로만..) "-file1"의 상세 정보 중 파일 타입 + 권한 부분을 자세히 살펴봅시다. "-rwxr-x---"는 4가지 부분으로 구성됩니다. (1 + 3 + 3 + 3 구조) 첫 글자 "-" = 파일 타입입니다. "-"는 일반 파일, "d"는 디렉토리, "l"은 심볼릭 링크라는 것을 의미합니다. 나머지 9글자는 3글자씩 구분지어 각각 소유자 권한, 그룹 권한, 기타 권한을 나타냅니다. "r"은 읽기, "w"는 쓰기, "x"는 실행 권한을 의미하며, 해당 권한이 없다면 "-"로 표시됩니다. "rwx" = 소유자 권한으로 세 가지 권한을 모두 가지고 있습니다. "r-x" = 그룹 권한으로 읽기와 실행 권한을 가집니다. "---" = 기타 권한으로 아무 권한도 없습니다. 즉, 실행 권한을 나타내는 "x"가 세 구간 중 하나라도 존재하면 실행 가능하다는 뜻이기에 실행 파일로 판단할 수 있습니다. 하지만 보통, CTF에서는 소유자 (owner) 권한 기준으로 판단하면 됩니다. 최종적으로 maybehere00 디렉토리의 "-file1" 파일은 실행 파일입니다. |
5) 'ls -l *' 이후, file 명령어로 조건 확인하는 아이디어
- ls 명령어와 file 명령어로 두 번에 걸쳐서 파일크기, 실행파일 여부, human-readable 여부까지 파악한다라는 생각입니다.
- 'ls -l *' 로 와일드 카드 ( * )를 사용해 20개 디렉토리 안의 모든 파일들의 상세 정보를 확인합니다.
- 그 중 파일 크기가 1033 bytes면서 실행 파일인 파일들만 file 명령어로 human-readable 여부까지 확인합니다.
- 하지만, 20개의 디렉토리 각각에 6개의 파일들이 들어있어 총 120개의 파일을 일일이 파악하는 것은 좋은 방법이 아닌 것 같습니다.
6) 조건이 구체적으로 주어졌으므로, 조건에 맞는 파일을 탐색하는 방법 사용
→ find 명령어를 사용하자!
| [보충 설명] find 명령어의 옵션들을 살펴보면, 1. 파일 타입 - "-type f" = 일반 파일 / "-type d" = 디렉토리 2. 파일 크기 - "-size 1000c" = 1000 bytes / "-size +1k" = 1KB 초과 3. 실행 권한 여부 - "-executable" = 실행 가능한 파일 / "! -executable" = 실행 불가능한 파일 4. 파일 이름 - "-name "example" = 파일 이름이 "example" 'find [조건1] [조건2] ...' 방식으로 만족해야 되는 조건들을 추가할 수 있습니다. (AND) |
7) 숨김 파일도 혹시 있을까?
→ 'ls -a' 옵션으로 maybehere00 디렉토리의 파일목록을 다시 확인해봅니다.
- 'ls -a' 옵션은 숨겨진 파일까지 모두 포한한 파일 목록을 출력해줍니다.
- 사실 뒤늦게 깨달은 사실입니다..

= 사실 ".file1", ".file2", ".file3" 라는 3개의 숨김 파일들도 존재했습니다.
- 즉, 각 디렉토리에는 6개가 아닌 9개의 파일이 존재하는 것입니다.
- 파일 개수가 더욱 늘어났기에 더더욱 find 명령어를 사용해야될 것 같습니다.
[4] 문제 풀이 및 분석
1) 홈 디렉토리에서 inhere 디렉토리를 확인한 후, inhere 디렉토리 안의 내용 확인

= inhere 디렉토리 안에 "maybehere00"부터 "maybehere19"까지 총 20개의 디렉토리가 존재합니다.
2) 각 디렉토리의 파일 목록 확인
- '-a' 옵션으로 숨김 파일까지 포함하여 파일 목록들을 확인합니다.
- "maybehere00", "maybehere01", "maybehere02" 디렉토리를 살펴보면 패턴이 보입니다.

= 3개의 디렉토리를 살펴보면, 아마 다른 디렉토리들에도 동일한 이름으로 9개의 파일이 들어있을 것입니다.
| [보충 설명] Level 3에서 나왔던 내용입니다. " . "은 현재 디렉토리, " .. "은 부모 디렉토리를 의미하는 특수 디렉토리입니다. 이 둘은 숨김 디렉토리가 아닌 파일 탐색을 위한 디렉토리들로 자동으로 포함됩니다. |
[4-1] find 명령어 + file 명령어를 사용하여 파일 찾아내기
3) find 명령어로 우리가 원하는 파일 탐색
- find 명령어의 옵션들을 조건에 맞게 설정하자면, (human-readable 여부는 제외)
+ "-type f" = 일반 파일 (디렉토리는 아니니까)
+ "-size 1033c" = 파일의 크기는 1033 bytes
+ "! -executable" = 실행 불가능한 파일

= 1033 byte의 크기를 가진 실행 불가능한 파일은 maybehere07 디렉토리에 들어있는 ".file2" 파일입니다.
4) file 명령어로 사람이 읽을 수 있는지 확인
- 최종적으로 maybehere07 안의 ".file2"가 human-readable한지까지 확인해봅니다.

= maybehere07의 ".file2" 파일은 human-readable 합니다.
= 즉, 우리가 찾던 파일이 맞습니다.
| [보충 설명] Level 4에서 나왔던 내용입니다. 사람이 읽도록 만들어진 파일은 Text 파일입니다. ASCII / UTF-8 등의 문자 인코딩을 한 파일들이 이에 해당됩니다. 따라서, "ASCII text" 타입은 human-readable 하다는 뜻입니다. |
5) 조건에 부합하는 maybehere07 디렉토리의 ".file2" 파일 내용 출력하기

= maybehere07 디렉토리의 ".file2" 파일 안에 있던 비밀번호 획득!
[4-2] find 명령어만으로 파일 찾아내기
3) find 명령어로 우리가 원하는 파일 탐색
- 아까의 명령어에 옵션을 추가하여 find 명령어만으로 파일을 찾아낼 것입니다.
- find 명령어의 옵션들을 조건에 맞게 설정하자면,
+ "-type f" = 일반 파일 (디렉토리는 아니니까)
+ "-size 1033c" = 파일의 크기는 1033 bytes
+ "! -executable" = 실행 불가능한 파일
+ "-readable" = 사람이 읽을 수 있는 파일 (human-readable)

= maybehere07 디렉토리의 ".file2" 파일이 우리가 찾던 파일입니다.
4) 조건에 부합하는 maybehere07 디렉토리의 ".file2" 파일 내용 출력하기

= maybehere07 디렉토리의 ".file2" 파일 안에 있던 비밀번호 획득!
[4-3] ls 명령어로 일일이 찾아보기
3) 'ls -al *' 명령어로 모든 파일들의 상세 정보 출력
- 'ls -al' 옵션은 숨김 파일까지 모두 포함하여 상세 정보를 출력해줍니다.
- 와일드카드 ( * )를 활용하여 maybehere00, maybehere01, ... 순으로 디렉토리들이 인자로 전달됩니다.

= maybehere00부터 maybehere19까지 각 디렉토리 안에 있는 모든 파일들의 상세 정보가 출력되었습니다.
- (화면을 내리면 파일들의 상세 정보가 나열되어 있습니다)
4) 조건에 맞는 파일 찾아내기 (human-readable 조건은 제외)
- 출력된 화면을 확인해가며 파일 크기가 1033 bytes이고, 실행 파일이 아닌 파일을 찾아냅니다.
- 'ls -al' 만으로는 사람이 읽을 수 있는지 없는지 여부는 확인할 수 없습니다.
- "-rw-r-----" 은 "x" 권한이 없기에 실행 파일이 아닙니다.
- (기억이 나지 않는다면 [3] 문제 접근 과정을 다시 살펴보세요)

= maybehere07 디렉토리의 ".file2" 파일이 크기가 1033 bytes이며 실행 파일이 아닙니다.
5) file 명령어로 사람이 읽을 수 있는지 확인
- 최종적으로 maybehere07 안의 ".file2"가 human-readable한지까지 확인해봅니다.

= maybehere07의 ".file2" 파일은 human-readable 합니다.
= 즉, 우리가 찾던 파일이 맞습니다.
| [보충 설명] "cat ./maybehere07/.file2" 명령어로 하던 작업을, cd 명령어로 maybehere07 디렉토리로 이동한 후, 'file .file2'로 file 명령어를 수행했습니다. 그냥 정답으로 가는 풀이법에는 여러 가지가 존재한다는 것을 기억해주셨으면 합니다. 풀이 방법이 정해져있지는 않으니 자유롭게 풀어보세요. |
6) 조건에 부합하는 maybehere07 디렉토리의 ".file2" 파일 내용 출력하기
- 이전 방법들과 다르게 maybehere07 디렉토리로 이동한 상태입니다.

= maybehere07 디렉토리의 ".file2" 파일 안에 있던 비밀번호 획득!
bandit 비밀번호는 반드시 따로 복사해서 저장해두기! (메모장 등으로)
[Bandit] Level 5 → Level 6. Clear.
[Bandit] Level 6 → Level 7. Continue...
https://anbymata.tistory.com/48
[Bandit] Level 6 → Level 7
OverTheWire - Bandit : Level 6 → Level 7. Write-up!출처: https://overthewire.org/wargames/bandit/bandit7.html Level Goal The password for the next level is stored somewhere on the server and has all of the following properties: owned by user bandit7 ow
anbymata.tistory.com
'OverTheWire > Bandit' 카테고리의 다른 글
| [Bandit] Level 7 → Level 8 (0) | 2026.02.09 |
|---|---|
| [Bandit] Level 6 → Level 7 (1) | 2026.02.06 |
| [Bandit] Level 4 → Level 5 (0) | 2026.01.15 |
| [Bandit] Level 3 → Level 4 (0) | 2026.01.12 |
| [Bandit] Level 2 → Level 3 (0) | 2026.01.10 |