Bandit Wargame 풀이 기록입니다.
1. 문제 목표 및 접속 정보
목표
Git 원격 저장소(
bandit27-git)를 클론해서 README 파일에 적힌 다음 레벨 비밀번호를 확인한다.접속 정보
- Host:
bandit.labs.overthewire.org - Port:
2220 - User:
bandit27 - Password:
upsNCc7vzaRDx6oZC6GiR6ERwe1MowGB
- Host:
ssh bandit27@bandit.labs.overthewire.org -p 2220
2. 풀이 과정
홈 디렉토리 확인
접속하고 나서 일단 습관적으로 ls부터 쳐봤다.
bandit27@bandit:~$ ls
아무것도 없다.
이 단계는 파일 찾는 문제가 아니라 Git 저장소를 받아야 한다는 걸 알 수 있었다.
Git clone 시도 → 권한 문제
설명에 나온 대로 Git clone을 시도했다.
bandit27@bandit:~$ git clone ssh://bandit27-git@bandit.labs.overthewire.org/home/bandit27-git/repo
결과는 바로 에러.
fatal: could not create work tree dir 'repo': Permission denied홈 디렉토리에 쓰기 권한이 없다는 뜻이다.
Bandit에서 자주 겪던 상황이라 바로 /tmp를 떠올렸다.
/tmp 디렉토리에서 재시도
bandit27@bandit:~$ mkdir /tmp/wook1
bandit27@bandit:~$ cd /tmp/wook1
다시 Git clone.
bandit27@bandit:/tmp/wook1$ git clone ssh://bandit27-git@bandit.labs.overthewire.org/home/bandit27-git/repo
이번엔 또 다른 에러가 나왔다.
!!! You are trying to log into this SSH server on port 22, which is not intended.
bandit27-git@bandit.labs.overthewire.org: Permission denied (publickey).여기서 아차 싶었다.
SSH 접속 포트가 2220인데, Git URL에는 포트를 안 붙였다.
포트 지정 후 재시도 → 또 막힘
포트를 명시해서 다시 시도했다.
bandit27@bandit:/tmp/wook1$ git clone ssh://bandit27-git@bandit.labs.overthewire.org:2220/home/bandit27-git/repo
그런데 이번에는 이런 메시지가 나온다.
You are trying to log into this SSH server with a password on port 2220 from localhost.
Connecting from localhost is blocked.이 메시지를 보고 나서야 상황이 정리됐다.
Bandit 서버 안에서 다시 자기 자신으로 SSH 접속하는 게 막혀 있는 구조였다.
해결: 로컬 PC에서 Git clone
결국 이 문제는 Bandit 서버 안에서 푸는 문제가 아니었다.
로컬 PC 터미널에서 아래 명령어를 실행했다.
git clone ssh://bandit27-git@bandit.labs.overthewire.org:2220/home/bandit27-git/repo
이번에는 바로 정상적으로 클론된다.
Receiving objects: 100% (3/3), done.README 확인
cd repo
ls
READMEcat README
The password to the next level is: Yz9IpL0sBcCeuG7m9uQFt8ZNpS4HZRcN3. Level [28] 비밀번호 (Flag) 획득
자신의 권한으로는 읽을 수 없는 파일을, SetUID가 설정된 래퍼(Wrapper) 프로그램을 이용하여 bandit27의 권한으로 읽어내어 플래그를 획득했습니다.
[Yz9IpL0sBcCeuG7m9uQFt8ZNpS4HZRcN]
4. 핵심 명령어 및 개념
git clone- 원격 저장소를 로컬로 복제하는 명령어
- 이번 레벨의 핵심
- SSH Git URL에서 포트 지정
- 포트를 적지 않으면 기본값은 22
- Bandit은 반드시 2220 포트를 써야 한다
/tmp디렉토리- Bandit 환경에서 일반 사용자가 자유롭게 쓸 수 있는 공간
- 실습이나 Git 작업은 여기서 하는 게 안전하다
- localhost 접속 차단
- Bandit 서버 내부에서 다시 SSH 접속하는 것을 막아둔 정책
- 이 경우 서버 안에서 계속 붙잡고 있으면 답이 안 나온다