OverTheWire Wargames는 해킹과 보안 기술을 익히고 연습할 수 있도록 설계된 온라인 게임 플랫폼이다.
다양한 난이도의 챌린지를 해결하면서 리눅스 명령어, 웹 보안, 리버스 엔지니어링, 암호학 등 다양한 컴퓨터 보안 개념을 배울 수 있다.
https://overthewire.org/wargames/
OverTheWire: Wargames
We're hackers, and we are good-looking. We are the 1%. <!-- Please read and accept the Rules! --> Wargames The wargames offered by the OverTheWire community can help you to learn and practice security concepts in the form of fun-filled games. To find out m
overthewire.org

오늘 해볼것은 <Bandit>
Bandit은 OverTheWire 워게임 중 가장 기초적인 단계의 워게임이다.
각 레벨을 클리어할 때마다 다음 레벨로 넘어갈 수 있는 비밀번호를 찾게 되며,
이 비밀번호는 보통 특정 파일 안에 숨겨져 있으며 레벨이 올라갈수록 난이도는 증가한다.

Bandit0


Bandit1


cat 명령어에서 -는 stdin 으로 인식하기 때문에 cat - 를 입력하게되면, 입력한 값이 그대로 출력된다. (stdin:Standard input)
그러므로, 현재 디렉토리라는 뜻의 ./ 를 추가해줘야한다.
Bandit2

cat 명령어는 공백을 기준으로 서로다른 파일이라고 인식한다.
따라서 cat spaces in this filename이라고 입력하면 spaces, in, this, filename 의 이름을 가진 4개의 파일의 내용을 출력하려고 한다. 공백까지 포함해서 파일이름으로 인식하려면, 공백앞에 \ 기호(백슬래쉬)를 붙여줘서 문자라는것을 알려준다.
파일 이름에서 공백 앞에 \ 기호를 붙이는 것은 '이스케이프(escape) 문자'라고 하며, "이 다음에 오는 문자는 특별한 의미가 아니라 일반 문자로 취급하라" 는 것을 운영체제에 알려주는 역할
Bandit3

.으로 시작하는 파일은 숨김 파일(hidden file) 이다.
숨김 파일은 주로 시스템 설정이나 사용자 환경 설정과 관련된 정보를 저장하는 데 사용됩니다.
시스템 파일, 설정 파일은 운영체제나 애플리케이션이 원활하게 작동하기 위해 필요한 설정 정보를 담고 있다. 예를 들어, 웹 브라우저의 캐시나 특정 프로그램의 구성 파일 등이 .cache나 .config 같은 이름으로 존재한다.
수많은 시스템파일과 설정 파일들이 모두 보이게되면 사용자에게 혼란을 줄 수 있기때문에 숨김 처리를 하여 중요한 파일만 보이도록 한다.
Bandit4



Bandit5



가이드에서 먼저 1033바이트이고, 실행 불가능한 파일이라는 힌트가 있었기 때문에
find ./ -size 1033c ! -executable 명령어를 실행
Bandit6



파일의 소유자가 bandit7 이고, 파일의 그룹이 bandit6 이고, 파일의 크기가 33 바이트인 파일을 최상위 디렉토리부터 검색→ 모든 오류메세지(예:Permission denied)는 즉시 폐기(/dev/null)
Bandit7



grep 명령어는 특정 패턴을 포함하는 텍스트 줄을 찾는 강력한 도구이다. 'Global Regular Expression Print'의 약자로, 파일이나 다른 명령어의 출력에서 원하는 정보를 필터링할 때 주로 사용한다.
Bandit8



sort data.txt | uniq -u 명령어는 data.txt 파일에서 중복되지 않은 유일한 줄만 찾아 출력하는 명령어
sort data.txt
→ data.txt 파일의 내용을 읽어서 알파벳 순서나 숫자 순서대로 정렬
| (파이프)
→ 앞선 sort 명령어의 출력(output)을 uniq 명령어의 입력(input)으로 전달
uniq -u
→ 인접한 줄들을 비교하여 중복된 줄을 모두 제거하고, 한 번만 나타난 유일한 줄만 출력
Bandit9



strings 는 실행 파일이나 바이너리 파일 내에서 출력 가능한 문자열(string)을 추출하는 명령어이다.
strings 명령어는 이러한 바이너리 파일에서 ASCII 또는 유니코드 텍스트로 된 부분을 찾아내어 보여준다.
이는 파일이 어떤 역할을 하는지, 어떤 라이브러리를 사용하는지, 에러 메시지나 숨겨진 정보는 없는지 등을 파악하는 데 유용하다.
Bandit10


base64 --decode data.txt
base64 명령어는 바이너리 데이터를 ASCII 문자열로 변환하거나, 그 반대로 다시 변환하는 데 사용한다.
base64 명령어에 --decode 옵션을 넣어서 인코딩된 data.txt 파일을 디코딩해서 출력한다.
'Bandit' 카테고리의 다른 글
| [9월 18일] Bandit Walkthrough Level 17~28 (0) | 2025.09.18 |
|---|---|
| [9월 18일] Bandit Walkthrough Level 11~16 (0) | 2025.09.18 |