Bandit Wargame 풀이 기록입니다.
1. 문제 목표 및 접속 정보
목표
Git 저장소의 기본 브랜치가 아닌,
다른 브랜치에 남아 있는 다음 레벨 비밀번호를 찾아낸다.
접속 정보
- Host:
bandit.labs.overthewire.org - Port:
2220 - User:
bandit29 - Password:
4pT1t5DENaYuqnqvadYs1oE4QLCdjmJ7
- Host:
ssh bandit29@bandit.labs.overthewire.org -p 2220
2. 풀이 과정
Git 저장소 클론
로컬 환경에서 Git 저장소를 클론했다.
git clone ssh://bandit29-git@bandit.labs.overthewire.org:2220/home/bandit29-git/repo
클론 후 저장소로 이동했다.
cd repo
ls
README.mdREADME 확인
cat README.md
# Bandit Notes
Some notes for bandit30 of bandit.
## credentials
- username: bandit30
- password: <no passwords in production!>기본 브랜치(master)에는 비밀번호가 없다.
Git 커밋 이력 확인
git log
commit b879c94bd4641ebb8b5470258b3a41debb25f7c2
fix username
commit 358fb1e671f460043ff5bd372e8d87e228dc148d
initial commit of README.md커밋 내용을 git show로 확인했지만,
비밀번호와 관련된 정보는 나오지 않았다.
다른 접근 필요성 인식
여기까지 확인한 결과,
- 파일 내용 ❌
- 커밋 히스토리 ❌
이 문제는 Git의 다른 기능을 사용해야 하는 문제라고 판단했다.
Git을 팀 단위로 사용할 때 자주 쓰는 기능인
브랜치(branch) 가 떠올랐다.
원격 브랜치 확인
git branch -r
origin/HEAD -> origin/master
origin/dev
origin/master
origin/sploits-dev기본 브랜치 외에 dev, sploits-dev 브랜치가 존재했다.
dev 브랜치로 이동
먼저 dev 브랜치로 이동했다.
git checkout dev
branch 'dev' set up to track 'origin/dev'.
Switched to a new branch 'dev'파일 구조를 확인했다.
ls
code README.mddev 브랜치 README 확인
cat README.md
# Bandit Notes
Some notes for bandit30 of bandit.
## credentials
- username: bandit30
- password: qp30ex3VLz5MDG1n91YowTv4Q8l7CDZLdev 브랜치의 README 파일에서
다음 레벨 비밀번호를 확인할 수 있었다.
3. Level [30] 비밀번호 (Flag) 획득
기본 브랜치가 아닌 개발용 브랜치(dev) 에 남아 있던
README 파일을 확인하여 플래그를 획득했다.
[qp30ex3VLz5MDG1n91YowTv4Q8l7CDZL]
4. 핵심 명령어 및 개념
git branch -r- 원격 저장소의 브랜치 목록을 확인
- 이번 레벨의 핵심 명령어
git checkout <branch>- 다른 브랜치로 이동
- 브랜치마다 파일 내용이 다를 수 있다
- Git 브랜치와 보안
- 메인 브랜치에서 지웠다고 끝이 아니다
- 개발 브랜치에 민감한 정보가 남아 있을 수 있다
한 줄 정리
Git에서는 브랜치도 보안 관리 대상이다.
사용하지 않는 개발 브랜치 하나가 정보 유출의 원인이 될 수 있다.