| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- CTF
- write-up
- 해킹 스터디
- cert
- 보안 관제
- 정보보안
- THM
- Web
- TryHackMe
- linux
- 리눅스 기초
- OverTheWire
- http
- Cross-Site Scripting
- 워게임
- Blue Team
- 보안 스터디
- 사이버 보안
- 해킹
- Bandit
- Cyber Security
- 정보보호
- 블루팀
- XSS
- 리눅스
- 모의해킹
- SoC
- IR
- web hacking
- 해커
- Today
- Total
AnbyMata의 해킹 노트
[Bandit] Level 10 → Level 11 본문
OverTheWire - Bandit : Level 10 → Level 11. Write-up!
출처: https://overthewire.org/wargames/bandit/bandit11.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, which contains base64 encoded data Commands you may need to solve this level grep,
overthewire.org
시작을 위해 "ssh -p 2220 bandit10@bandit.labs.overthewire.org"로 ssh 로그인합니다!
( 비밀번호: Level 9 → Level 10 에서 얻은 비밀번호 )
[1] 문제 요약
다음 레벨의 비밀번호는 data.txt 파일 안에 있습니다.
data.txt 파일의 내용은 Base64로 인코딩되어 있습니다.
| [보충 설명] 컴퓨터에는 이미지, 실행 파일, binary 데이터처럼 문자로 직접 표현하기 어려운 데이터가 존재합니다. 이 데이터를 텍스트나 URL처럼 문자만 안전하게 전달 가능한 환경에서 전송하기 위해선 문자처럼 보이도록 만들어야 합니다. Base64 형식으로 인코딩하면 문자처럼 보이도록 만들 수 있습니다. 반대로 디코딩은 인코딩된 문자화된 데이터를 다시 이미지, binary 데이터 같은 원상태로 되돌리는 과정입니다. |
[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) data.txt 파일 타입 확인
- 해시값 느낌이지만, 파일 타입을 한 번 확인해봅니다.

= ASCII text 타입으로, 일반 텍스트 파일에 해당됩니다.
- Base64는 Binary 데이터를 ASCII 문자열로 변환하는 인코딩 방식입니다.
→ 따라서 Base64로 인코딩된 결과는 ASCII 문자로 구성된 텍스트 데이터입니다.
4) data.txt 파일 내용 분석
- cat 명령어로 확인해본 파일의 내용은 다음과 같습니다.

= 뒤에 패딩 문자 "="이 존재하기 때문에 Base64로 인코딩되었을 확률이 있습니다.
- Base64는 64개의 문자 집합만 사용하기 때문에 문자 구성이 제한적입니다.
→ `!`, `@`, `#`, `$`, `%` 등의 특수문자가 등장하지 않습니다.
→ 영문 + 숫자 + `+, /, =` 조합의 문자열이라면 Base64 인코딩 여부를 의심해볼만 합니다.
| [보충 설명] Base64는 64개의 문자 집합만 사용합니다. `A-Z` 의 대문자 영어 알파벳 26개, `a-z` 의 소문자 영어 알파벳 26개, `0-9` 의 숫자 10개, `+`와 `/` 의 2가지 기호를 문자 집합으로 사용하고, `=` 의 1개의 패딩 문자를 사용합니다. (패딩 문자는 실제 데이터가 아닌 여기부터 패딩이라는 표시라 문자 집합에 포함되지 않습니다) 1 byte = 8 bit 입니다. (컴퓨터의 기본 데이터 단위는 1 byte 입니다) 그리고 Base64는 6 bit 단위로 문자를 만듭니다. 8 bit 단위 데이터와 6 bit 단위 문자를 서로 변환해야 하기 때문에, 6과 8의 최소공배수인 24 bit 단위로 묶어서 사용합니다. 결국, Base64는 항상 4문자 단위 (6*4 = 24)로 출력해야 합니다. 하지만 입력 데이터의 길이가 3의 배수가 아니라면 부족한 bit가 발생하게 됩니다. 예시를 들면, 2 byte가 입력되면, 16 bit 라서 6 bit 단위로 나눠지지 않습니다. 이때, 발생하는 부족한 bit를 0으로 채워서 24 bit를 만들어 4문자 단위로 맞춰줍니다. 이 부족한 bit를 0으로 채우는 과정을 padding(패딩) 이라 합니다. 3 byte 기준에서, 2 byte가 부족하면, 1 byte짜리 패딩 문자 "=" 를 2개 끝에 추가해주고, 3 byte 기준에서, 1 byte가 부족하면, 1 byte짜리 패딩 문자 "=" 를 1개 끝에 추가해줍니다. 그래서 끝에 "=" 패딩문자가 존재하면, Base64 인코딩 가능성이 존재합니다. |
5) Base64 인코딩이 의심되면?
- Base64 인코딩 여부를 확인하고 싶을 땐, 다른 명령어로 추측해보는 것이 아닌 base64 명령어로 디코딩해보는 것이 가장 확실하고 빠른 길입니다.
- base64 명령어 옵션
+ `-d` = 디코딩 (인코딩 해제)
+ `-w` = 출력 줄바꿈 길이 설정 (기본적으로 Base64는 76글자마다 줄바꿈 함)
+ `-i` = 디코딩 시 Base64 문자 이외의 문자는 무시
[4] 문제 풀이 및 분석
1) find 명령어로 data.txt 파일이 위치한 경로 찾기
- find 명령어에서 홈 디렉토리 ( . )를 탐색 경로로 지정했습니다.
- "-name data.txt" 옵션을 통해 파일 이름이 data.txt인 파일을 찾습니다.

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

= 영어와 숫자로 이루어지고, 끝부분에 "=="로 끝나는 것을 보니 Base64 인코딩 가능성이 있습니다.
3) base64 명령어로 디코딩해보기
- Base64 인코딩 여부도 확인해볼겸 바로 `base64 -d` 옵션으로 디코딩을 시도합니다

= data.txt 파일 내용이 디코딩되면서 파일의 원본 데이터가 출력되었습니다.
= data.txt 파일 내에 있던 비밀번호 획득!
bandit 비밀번호는 반드시 따로 복사해서 저장해두기! (메모장 등으로)
[Bandit] Level 10 → Level 11. Clear.
[Bandit] Level 11 → Level 12. Continue...
https://anbymata.tistory.com/60
[Bandit] Level 11 → Level 12
OverTheWire - Bandit : Level 11 → Level 12. Write-up!출처: https://overthewire.org/wargames/bandit/bandit12.html Level Goal The password for the next level is stored in the file data.txt, where all lowercase (a-z) and uppercase (A-Z) letters have been
anbymata.tistory.com
'OverTheWire > Bandit' 카테고리의 다른 글
| [Bandit] Level 11 → Level 12 (0) | 2026.03.14 |
|---|---|
| [Bandit] Level 9 → Level 10 (0) | 2026.02.13 |
| [Bandit] Level 8 → Level 9 (0) | 2026.02.10 |
| [Bandit] Level 7 → Level 8 (0) | 2026.02.09 |
| [Bandit] Level 6 → Level 7 (1) | 2026.02.06 |