해킹&보안

[반딧 워게임 : OverTheWire] Level 28 -> 29 (리눅스/해킹/보안 공부)

yamaeking 2025. 3. 22. 11:11
cd /tmp/b28Git

자 오늘은 Level 28 -> 29을 해보도록 하겠다. 

(Login ID :  bandit28/  Password : Yz9IpL0sBcCeuG7m9uQFt8ZNpS4HZRcN

 

1. 문제 내용

https://overthewire.org/wargames/bandit/bandit29.html

 

OverTheWire: Level Goal

We're hackers, and we are good-looking. We are the 1%. <!-- Please read and accept the Rules! --> Level Goal There is a git repository at ssh://bandit28-git@localhost/home/bandit28-git/repo via the port 2220. The password for the user bandit28-git is the s

overthewire.org

 

 

 > git 저장소 있는데 여기서 clone 해와서 비밀번호 찾아라ㄱㄱ  (깃저장소 비번은 반딧28 비번임.)

 

2. 문제 풀이

 > 레벨27->28 문제와 비슷한 거 같다. 우선 tmp 밑에 잡스러운 디렉토리 만들어서 clone 하여보자.

mkdir /tmp/b28Git
cd /tmp/b28Git

 

저렇게 하고 git clone ~~ 을 하게 되면 아래와 같이 에러가 뜬다.

 

 > 기본적으로 git clone 은 포트 22(기본 SSH 포트)로 연결 시도한다. 근데 반딧의 경우 포트번호 2220을 사용하니 설정을 바꾸어 접속하여야 한다.

GIT_SSH_COMMAND="ssh -p 2220" git clone ssh://bandit28-git@localhost/home/bandit28-git/repo

 

GIT_SSH_COMMAND 를 통해 ssh 포트를 2220으로 바꾸고 다시 실행해보자.

 

그러면 성공적으로 복사가 완료 되고, repo 디렉토리가 보인다. cd repo 로 이동하면 README.md 파일이 있는데, 이를 cat 으로 읽어 보면 저렇게 나온다. 뭔가 초기에 비밀번호가 있었고 그 뒤에 password를 xxxx 뭐시꺵이로 바꾼 것 같은데, git 히스토리를 살펴보자.

 

git log --oneline

 

위와 같이 나오는데, 이걸 설명하자면 아래와 같다.

 

커밋 ID 브랜치 정보 (있을 경우) 커밋 메시지
817e303 (HEAD -> master, origin/master, origin/HEAD) fix info leak (정보 유출 수정)
3621de8 없음 add missing data (누락 데이터 추가)
0622b73 없음 initial commit of README.md (README.md 초기 커밋)

 

 > 가장 위가 가장 최신 commit 이라 보면 되고, 가장 아래(0622b73)이 가장 오래된 commit 이라고 보면 되겠다. 최초 커밋에서는 비밀번호가 제대로 쓰여져 있었던 것 같고, 이것을 817e303 커밋할 때 xxx 로 바꿨나 보다.

 

그럼 git checkout 0622b73   명령어를 입력해 보자. (해당 커밋으로 이동)

 

쌸라쌸라 하고 위처럼 나오는데, 해당 commit 때의 README.md 파일을 볼 수 있다.

cat README.md 를 해보니.. 음 아직은 password가 TBD(To Be Determined) 로 되어 있는 것으로 보아 그 다음 커밋ID 인 3621de8 를 봐야 할 거 같다. 여기서 메시지가 add missing data 였으니, 아마 누락된 비밀번호를 적어놓은 게 아닐까 싶다.

 

git checkout 3621de8

 

3621de8 로 이동한 뒤 cat README.md 를 해보니 비밀번호가 나왔다. 비밀번호 GET!

 

3. 요약

 

☞  git clone 을 할 때는 기본적으로 ssh 포트번호인 22를 이용하여 접근한다. 근데 GIT_SSH_COMMAND 를 통해 강제로 포트번호 수정 가능.

 

☞  git log --oneline 을 통해 깃 변경 사항 확인 가능

 

   git checkout 커밋ID 를 통해 해당 커밋으로 이동 가능.