AnbyMata의 해킹 노트

[Bandit] Level 7 → Level 8 본문

OverTheWire/Bandit

[Bandit] Level 7 → Level 8

AnbyMata 2026. 2. 9. 22:00

OverTheWire - Bandit : Level 7 → Level 8. Write-up!

출처: https://overthewire.org/wargames/bandit/bandit8.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 next to the word millionth Commands you may need to solve this level man, grep, sort

overthewire.org

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

( 비밀번호: Level 6 → Level 7 에서 얻은 비밀번호 )

 

[1]  문제 요약

다음 레벨의 비밀번호는 data.txt 파일에서 millionth 라는 단어 바로 옆에 저장되어 있습니다.

 

 


[2]  사용되는 명령어들

- man : 리눅스 명령어의 메뉴얼 (사용법, 옵션, 설명)

- grep : 파일 또는 입력 내용에서 특정 문자열(패턴)을 필터링

- sort : 입력된 내용을 줄 단위로 정렬

- uniq : 연속된 중복 행을 제거 or 중복 여부를 분석

- strings : binary 파일에서 읽을 수 있는 문자열만 추출 (human-readable 문자열만)

- base64 : 데이터를 Base64 형식으로 인코딩 또는 디코딩

- tr : 입력 문자의 치환, 삭제, 대소문자 변환 등을 수행

- tar : 여러 파일/디렉토리를 하나의 아카이브로 묶거나 해제

- gzip : 파일을 gzip 형식으로 압축 또는 해제

- bzip2 : 파일을 bzip2 형식으로 압축 또는 해제

- xxd : 파일을 16진수(hex) 덤프 형태로 출력하거나 복원

[보충 설명]
Base64 형식으로 인코딩/디코딩에 대해 설명하면,
컴퓨터에는 이미지나 실행 파일처럼 문자(텍스트)로 그대로 표현하기 어려운 데이터가 있습니다.
이 데이터들을 이메일, 텍스트 파일, URL 같이 문자만 안전한 환경에서 보내기 위해서는
Base64 형식으로 인코딩하여 문자처럼 보이도록 만들어야합니다.
반대로 디코딩은 인코딩되어 문자화된 데이터를 다시 원래대로 되돌리는 과정입니다. 

tr 명령어를 조금만 자세히 설명하면,
입력받은 문자들을 대소문자를 바꾸거나 특정 문자를 없애거나 공백을 줄이는 등의 처리를 한 뒤 결과출력합니다.

컴퓨터가 데이터를 저장할 때, 2진수나 10진수는 너무 길기 때문에 16진수 (hex)를 사용합니다.
"ABC"라는 텍스트 내용을 컴퓨터 내부에 "41 42 43"으로 저장하는 방식을 16진수 (hex)로 덤프했다고 합니다.

 

 


[3]  문제 접근 과정

1)  디렉토리와 파일 목록 파악

 - `ls -a`로 숨겨진 디렉토리/파일 목록까지 확인합니다.

ls -a

 = 홈 디렉토리 안에 data.txt 파일이 있음을 확인했습니다.

 

 

 

2)  cat 명령어로 data.txt 파일 열어보기

 - data.txt 파일의 내용을 한번 확인해봅니다.

cat data.txt

 = 사람이 읽을 수 있는 텍스트 파일임을 알 수 있습니다.

 

 

 

3)  파일 내용 분석해보기

내용이 너무 많다..

 = 파일의 내용이 너무 많아 일일이 보면서 "millionth" 단어를 찾는 것은 불가능해보입니다.

 = 파일의 내용이 [단어] [공백] [해시값으로 추정되는 문자열] 순으로 일관된 구조를 가지고 있습니다.

 → 파일의 내용이 형식에 맞게 깔끔하게 정리되어 있어 sort 명령어는 사용할 필요가 없어보입니다.

 

 

 

4)  data.txt 파일 분석

 - data.txt 파일의 상세 정보를 확인해봅니다.

 - 파일 형식이 .txt텍스트 파일이지만 한 번 확인해봅니다.

ls -l

 = 파일의 크기가 4184396 bytes로 약 4.18MB 입니다. 단순 텍스트만 있다는걸 감안하면 굉장히 큰 파일입니다.

 

 

 

5)  원하는 단어를 가진 줄을 찾을 방법들

 - 우리가 원하는 단어 "millionth"가 포함된 줄들만을 필터링할 2가지 방법이 떠올랐습니다.

  + 1. cat 명령어에 grep를 사용하여 "millionth"가 포함된 줄만 출력하기

  + 2. vi 편집기에 들어가서 문자열검색하여 "millionth"가 있는 위치로 이동하기

 

vi 편집기에 대해 잘 모른다면?: https://anbymata.tistory.com/11

 

[Linux 기초] EP.8 - vi 편집기로 파일 생성, 입력, 저장하기 (vi)

지금까지 우리는 리눅스에서 디렉토리에 대해 주로 알아보았습니다. 하지만 디렉토리(폴더)만으로는 아무 것도 할 수 없죠.예를 들어, 우리는 컴퓨터에서 메모장, 한글, Word 같은 프로그램을 사

anbymata.tistory.com

 

 

 


[4]  문제 풀이 및 분석

1)  find 명령어로 data.txt 파일이 위치한 경로 찾기

 - find 명령어에서 홈 디렉토리 ( . )를 탐색 경로로 지정했습니다.

 - "-name data.txt" 옵션을 통해 파일 이름이 data.txt인 파일을 찾습니다.

find . -name data.txt

 = data.txt 파일이 위치한 경로는 "./data.txt"입니다.

 = 즉, 홈 디렉토리 ( . ) 안에 바로 존재합니다.

 

 

 

[4-1] grep 명령어를 사용한 문자열 필터링

2)  cat 명령어에 grepdata.txt 파일에서 "millionth"이 포함된 줄만 출력하기

cat data.txt ❘ grep millionth

 = data.txt 파일 내에 있던 비밀번호 획득!

 =  내가 필터링한 문자가 빨간색으로 출력되면서 "millionth" 옆에 있던 비밀번호가 같이 출력되었습니다.

 

 

 

[4-2] vi 편집기를 활용하여 원하는 문자열 찾기

2)  data.txt 파일을 vi 편집기로 열기

vi data.txt

 

 

 

3)  vi 편집기 내에서 "millionth" 문자열 검색

 - vi 편집기에서 "/millionth" 를 입력하면, "millionth" 문자열 위치로 화면이 이동합니다.

 - ':q' 를 입력하면 vi 편집기에서 나올 수 있습니다.

/millionth

 = data.txt 파일 내에 있던 비밀번호 획득!

 

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

 

 


[Bandit] Level 7 → Level 8. Clear.

 

[Bandit] Level 8 → Level 9. Continue...

https://anbymata.tistory.com/51

 

[Bandit] Level 8 → Level 9

OverTheWire - Bandit : Level 8 → Level 9. Write-up!출처: https://overthewire.org/wargames/bandit/bandit9.html 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

anbymata.tistory.com

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

[Bandit] Level 9 → Level 10  (0) 2026.02.13
[Bandit] Level 8 → Level 9  (0) 2026.02.10
[Bandit] Level 6 → Level 7  (1) 2026.02.06
[Bandit] Level 5 → Level 6  (0) 2026.01.24
[Bandit] Level 4 → Level 5  (0) 2026.01.15