| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 정보보호
- OverTheWire
- 리눅스
- Blue Team
- CTF
- write-up
- 워게임
- 정보보안
- THM
- 모의해킹
- Cyber Security
- web hacking
- 보안 관제
- 사이버 보안
- 해킹
- 블루팀
- TryHackMe
- http
- 보안 스터디
- SoC
- IR
- cert
- XSS
- Bandit
- 해커
- linux
- Web
- 리눅스 기초
- Cross-Site Scripting
- 해킹 스터디
- Today
- Total
AnbyMata의 해킹 노트
[Bandit] Level 8 → Level 9 본문
OverTheWire - Bandit : Level 8 → Level 9. Write-up!
출처: https://overthewire.org/wargames/bandit/bandit9.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 file data.txt and is the only line of text that occurs only once Commands you may need to solve th
overthewire.org
시작을 위해 "ssh -p 2220 bandit8@bandit.labs.overthewire.org"로 ssh 로그인합니다!
( 비밀번호: Level 7 → Level 8 에서 얻은 비밀번호 )
[1] 문제 요약
data.txt 파일에서 딱 한 번만 등장하는 유일한 줄이 다음 레벨의 비밀번호입니다.
[2] 사용되는 명령어들
- man : 리눅스 명령어의 메뉴얼 (사용법, 옵션, 설명)
- grep : 파일 또는 입력 내용에서 특정 문자열(패턴)을 필터링
- sort : 입력된 내용을 줄 단위로 정렬
- uniq : 연속된 중복 행을 제거 or 중복 여부를 분석
- strings : binary 파일에서 읽을 수 있는 문자열만 추출 (human-readable 문자열만)
- base64 : 데이터를 Base64 형식으로 인코딩 또는 디코딩
- tr : 입력 문자의 치환, 삭제, 대소문자 변환 등을 수행
- tar : 여러 파일/디렉토리를 하나의 아카이브로 묶거나 해제
- gzip : 파일을 gzip 형식으로 압축 또는 해제
- bzip2 : 파일을 bzip2 형식으로 압축 또는 해제
- xxd : 파일을 16진수(hex) 덤프 형태로 출력하거나 복원
[3] 문제 접근 과정
1) 디렉토리와 파일 목록 파악
- `ls -a`로 숨겨진 디렉토리/파일 목록까지 확인합니다.

= 홈 디렉토리 안에 data.txt 파일이 있음을 확인했습니다.
2) cat 명령어로 data.txt 파일 열어보기

= 읽을 수는 있지만 해시값처럼 보이는 문장들이 순서없이 나열되어 있습니다.
→ 문자열의 중복 여부를 제대로 판단하기가 힘듭니다.
3) 파일 내용 분석해보기
- 스크롤을 내려보면서 파일 내용을 확인해봅니다.

= 순서없이 나열된 문자열들이 너무 많아서 현재 상태로는 비밀번호를 찾아내기 힘듭니다.
= 중복된 행을 제거하는 uniq 명령어를 사용해야 될 것 같습니다.
4) data.txt 파일 타입 확인
- 우리가 읽을 수 있는 문장같긴 하지만, 혹시 모르니 파일 타입을 확인해봅니다.

= ASCII text 타입인 것을 보니, 일반 텍스트 파일이 맞습니다.
5) uniq 명령어를 사용하여 중복된 행들 삭제해보기
- uniq 명령어를 단독으로 사용해서 비밀번호를 찾아보겠습니다

= `cat data.txt`와 동일한 결과가 출력되었습니다.
= 즉, 중복된 행들이 하나도 제거되지 않았습니다.
6) 중복된 행들이 전혀 제거되지 않은 이유
- uniq 명령어를 잘 보면, "연속"된 중복 행을 제거한다고 되어있습니다.
- 여기서 "연속"이란 조건은 중복된 행들이 서로 붙어있어야 된다는 뜻입니다.
- "atmosphere", "play", "atmosphere" 순으로 문장이 있다면,
→ "atmosphere" 문장이 중복이지만, 서로 떨어져있기 때문에 중복으로 인식되지 않습니다.
- "atmosphere", "atmosphere", "play" 순으로 문장이 있다면,
→ "atmosphere" 문장이 서로 붙어있으면서 중복이기 때문에 중복으로 인식되어 하나가 제거됩니다.
- 즉, data.txt 파일에서 문자열들이 정렬되지 않은채로 있어서 중복된 문장들이 서로 붙어있지 않기 때문에 중복으로 인식되지 않아 제거가 안된 상태입니다.
7) sort 명령어로 문자열들 정렬시키기
- sort 명령어를 사용하면, 문자열들을 사전 순서로 오름차순 정렬을 하여 출력시킵니다.

= 행들이 오름차순으로 깔끔하게 정렬되었습니다.
= 중복된 행들이 서로 인접하도록 정렬되었습니다.
→ 이제 uniq 명령어를 사용하여 중복된 행들을 제거하여 다음 레벨의 비밀번호를 찾아낼 수 있을 것 같습니다.
[4] 문제 풀이 및 분석
1) find 명령어로 data.txt 파일이 위치한 경로 찾기
- find 명령어에서 홈 디렉토리 ( . )를 탐색 경로로 지정했습니다.
- "-name data.txt" 옵션을 통해 파일 이름이 data.txt인 파일을 찾습니다.

= data.txt 파일이 위치한 경로는 "./data.txt"입니다.
= 즉, 홈 디렉토리 ( . ) 안에 바로 존재합니다.
2) cat 명령어로 data.txt 파일의 내용 확인
- data.txt 파일의 내용을 한 번 확인해봅니다.

[4-1] sort와 uniq 명령어로 유일한 행만 출력하기
3) sort 명령어로 정렬시키고, uniq 명령어로 중복된 행들 제거하기
- uniq 명령어를 사용하기 위해서는 정렬된 입력이 필요합니다.
→ sort 명령어로 정렬을 시킨 후, uniq 명령어를 실행시켜 줍니다.
- `uniq -u` 옵션 = 중복된 행을 모두 제거하여 한 번만 등장한 행만 출력

= data.txt 파일 내에 있던 비밀번호 획득!
[4-2] sort와 uniq를 이용한 행 중복 횟수 확인
3) sort 명령어로 정렬시키고, uniq 명령어로 행 중복 횟수 확인
- uniq 명령어를 사용하기 위해서는 정렬된 입력이 필요합니다.
→ sort 명령어로 정렬을 시킨 후, uniq 명령어를 실행시켜 줍니다.
- `uniq -c` 옵션 = 각 행이 연속해서 몇 번 등장했는지를 함께 출력

= 10번씩 등장한 다른 행들과 다르게 1번만 등장한 행이 딱 하나 존재합니다.
→ 등장 횟수가 "1"인 그 행이 비밀번호입니다.
bandit 비밀번호는 반드시 따로 복사해서 저장해두기! (메모장 등으로)
[Bandit] Level 8 → Level 9. Clear.
[Bandit] Level 9 → Level 10. Continue...
https://anbymata.tistory.com/52
[Bandit] Level 9 → Level 10
OverTheWire - Bandit : Level 9 → Level 10. Write-up!출처: https://overthewire.org/wargames/bandit/bandit10.html Level Goal The password for the next level is stored in the file data.txt in one of the few human-readable strings, preceded by several ‘=
anbymata.tistory.com
'OverTheWire > Bandit' 카테고리의 다른 글
| [Bandit] Level 10 → Level 11 (0) | 2026.02.17 |
|---|---|
| [Bandit] Level 9 → Level 10 (0) | 2026.02.13 |
| [Bandit] Level 7 → Level 8 (0) | 2026.02.09 |
| [Bandit] Level 6 → Level 7 (1) | 2026.02.06 |
| [Bandit] Level 5 → Level 6 (0) | 2026.01.24 |