AnbyMata의 해킹 노트

[Bandit] Level 2 → Level 3 본문

OverTheWire/Bandit

[Bandit] Level 2 → Level 3

AnbyMata 2026. 1. 10. 22:00

OverTheWire - Bandit : Level 2 → Level 3. Write-up!

출처: https://overthewire.org/wargames/bandit/bandit3.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 called --spaces in this filename-- located in the home directory Commands you may need to solve

overthewire.org

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

( 비밀번호: Level 1 → Level 2 에서 얻은 비밀번호 )

 

[1]  문제 요약

Home 디렉토리의 "--spaces in this filename--" 이라는 이름의 파일 안에 다음 레벨의 비밀번호가 저장되어 있습니다.

 

 


[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)  'cat --spaces in this filename--' 명령어로 파일 내용 확인 시도

cat --spaces in this filename--

 = "--spaces" 라는 옵션은 없는 옵션이라고 합니다.

 

 

2)  "--spaces"가 옵션으로 인식된 이유

 - 전 레벨에서 배웠듯 리눅스에서 "-"로 시작하면 옵션으로 해석됩니다.

 - 마찬가지로 "--"로 시작해도 옵션으로 해석됩니다.

 - 일반적으로 단일 문자 옵션은 "-"로 시작합니다.

 - 단어 형태의 옵션은 "--" 로 시작합니다.

[보충 설명]
리눅스에서 "-"와 "--" 모두 옵션을 의미합니다.
"-"는 단일 문자, "--"는 단어 형태의 옵션에 사용된다는 것을 ls 명령어 예시로 들어보자면,
'ls -a' = 숨김 파일까지 모두 출력
'ls -h" = 파일 크기를 사람이 읽기 쉬운 단위로 출력
'ls --all' = 'ls -a' 처럼 숨김 파일까지 모두 출력
'ls --human-readable' = 'ls -h' 처럼 사람이 읽기 쉬운 단위로 출력

여기서, 'ls -al'의 경우 "al"이 하나의 단어가 아니라 '-a' 옵션과 '-l' 옵션을 결합해 동시에 사용한다는 뜻이기에 단일 옵션 표기인 "-"를 사용합니다.
'ls -al' = 'ls -a' + 'ls -l' = 숨김 파일을 포함한 모든 파일을 상세 정보 형식으로 출력

 

 

3)  cat 명령어에 파일을 상대 경로로 지정하여 시도

 - 옵션이라 안 된다면, Level 1에서 처럼 경로를 활용해보겠습니다.

 - 상대 경로 = "./--spaces in this filename--"

cat ./--spaces in this filename--

 = "./--spaces", "in", "this", "filename--" 이라는 총 4개의 파일 및 디렉토리 이름으로 각각 인식된 모습입니다.

 - 이 4개의 파일 및 디렉토리는 홈 디렉토리에 실제로 존재하지 않습니다.

 

 

4)  총 4개의 파일 및 디렉토리로 분리되어 인식된 이유

 - 리눅스에서의 공백 = 명령어의 인자 (argument)를 나누는 기준

 - 즉, 공백을 기준으로 서로 다른 인자로 인식되어, 하나가 아닌 4개로 분리되어 인식된 것입니다.

[보충 설명]
공백이 명령어의 인자를 나누는데, 파일/경로뿐만 아니라 명령어 자신옵션들도 인자(argument)입니다.
'ls -al /home' 이라는 명령어는 공백에 의해.
"ls" = 명령어 이름
"-al" = 옵션 인자 = 옵션 a와 옵션 l
"/home" = 일반 인자 = 경로
로 인식됩니다.

즉, 'cat ./--spaces in this filename--' 의 경우
하나의 명령어 이름4개의 일반 인자로 인식됐습니다.
하지만, 우리가 원하는 것은 "./--spaces in this filename--" 이라는 하나의 인자로 인식되는 것입니다.

 

 

5)  따라서 공백인자 구분자가 아닌 하나의 인자로 처리해야 함

 - 따옴표로 공백을 포함한 문자열을 묶으면 하나의 인자로 인식됩니다.

 - 작은 따옴표 ( '  ' )와 큰 따옴표 ( "  " ) 모두 사용 가능합니다.

cat "--spaces in this filename--"

 = 성공적으로 "--spaces in this filename--"이 하나의 인자로 인식되었습니다.

 - 하지만, 앞의 "--" 때문에 옵션으로 인식되어 완벽하진 않습니다.

 

 

 - 공백을 인자를 구분하는 기준이 아닌 단순 텍스트로 인식시키는 방법도 존재합니다.

 - 백슬래시 ( \ )를 사용하면 공백이 인자 구분자가 아닌 공백 문자 그대로 해석됩니다.

cat --spaces\ in\ this\ filename--

 = 마찬가지로 공백일반 문자가 되면서 "--spaces in this filename--"이란 하나의 인자로 인식되었습니다.

 - 역시나 옵션으로 인식되어 완벽하진 않습니다.

 

 

6)  옵션으로 인식되는 문제 해결하기

 - 옵션으로 인식되는 문제만 이제 해결하면 됩니다. 

 


[4]  문제 풀이 및 분석

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

ls

 = "--spaces in this filename--" 이라는 파일이 존재함을 확인했습니다.

 

 

2)  현재 위치한 홈 디렉토리절대 경로 확인

 - pwd 명령어를 사용합니다.

pwd

 = 홈 디렉토리 절대 경로가 "/home/bandit2" 임을 알 수 있습니다.

 

 

 

[4-1] 따옴표로 파일명 묶기

3)  cat 명령어에 따옴표절대 경로를 활용하여 파일 내용 출력하기

 - 따옴표 = 하나의 인자로 묶어주는 역할

 - 절대 경로 = "--"이 옵션으로 인식되는 문제 해결

cat "/home/bandit2/--spaces in this filename--"

 = "--spaces in this filename--" 파일 안에 있던 비밀번호 획득!

 

 

번외)  절대 경로대신 상대 경로 활용하기

cat "./--spaces in this filename--"

 - 상대 경로도 가능하지만, 절대 경로가 좀 더 명확한 방법입니다.

 

 

 

[4-2] 백슬래시 ( \ )로 공백을 일반 문자로 만들기

3)  cat 명령어에 백슬래시 ( \ )와 절대 경로를 활용하여 파일 내용 출력하기

 - 백슬래시 ( \ ) = 공백을 인자 구분자가 아닌 일반 문자화 시킴

 - 절대 경로 = "--"이 옵션으로 인식되는 문제 해결

cat /home/bandit2/--spaces\ in\ this\ filename--

 = "--spaces in this filename--" 파일 안에 있던 비밀번호 획득!

 

 

번외)  절대 경로대신 상대 경로 활용하기

cat ./--spaces\ in\ this\ filename--

 - 동일하게 상대 경로로도 가능합니다.

 

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

 

 


[Bandit] Level 2 → Level 3. Clear.

 

[Bandit] Level 3 → Level 4. Continue...

https://anbymata.tistory.com/38

 

[Bandit] Level 3 → Level 4

OverTheWire - Bandit : Level 3 → Level 4. Write-up!출처: https://overthewire.org/wargames/bandit/bandit4.html Level Goal The password for the next level is stored in a hidden file in the inhere directory. Commands you may need to solve this level ls ,

anbymata.tistory.com

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

[Bandit] Level 4 → Level 5  (0) 2026.01.15
[Bandit] Level 3 → Level 4  (0) 2026.01.12
[Bandit] Level 1 → Level 2  (0) 2026.01.09
[Bandit] Level 0 → Level 1  (0) 2026.01.08
[Bandit] Level 0 - Bandit 로그인 및 플레이하는 방법  (0) 2025.10.28