해킹&보안

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

yamaeking 2025. 3. 22. 13:45

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

(Login ID :  bandit29 /  Password : 4pT1t5DENaYuqnqvadYs1oE4QLCdjmJ7

 

1. 문제 내용

https://overthewire.org/wargames/bandit/bandit30.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://bandit29-git@localhost/home/bandit29-git/repo via the port 2220. The password for the user bandit29-git is the s

overthewire.org

 

 

 > 반딧29 깃 저장소 털어서 비밀번호 탈취해라! (반딧29 깃 저장소 비밀번호는 반딧29 비밀번호랑 똑가틈ㅋ)

 

 

2. 문제 풀이

 > 이것도 이전 레벨과 같이, tmp 밑에 디렉토리를 만들어 그 디렉토리에 git clone 을 하도록 하자.

    ssh 로 bandit29 로그인 한 뒤에 아래 스텝으로 ㄱㄱ

mkdir /tmp/b29Git

cd /tmp/b29Git

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

git clone 때 비밀번호 입력하라고 하면 bandit29 비번(위에 있음) 입력하면 된다.

 

위와 같이 git clone 완료 되었다.

 

cd repo 로 이동하여, cat README.md 를 해보니 위와 같이 나온다. 

 

> git log --oneline     으로 로그 히스토리를 보니 e65a928 이 있다.

> git checkout e65a928  으로  이동하여 README.md 를 읽어보자.

 

여기서도 password 가 저런 식으로 나온다. 음 그렇다면 다음의 명령어를 실행해 보자.

git log -p

 

 > git log 에 -p 옵션을 주면 커밋에서 변경된 코드까지 아래와 같이 쭈르르 나온다.

 

중간에 짤리긴 했는데, 아무튼 최초 commit 의 변경 내용이다.

 

하나 하나 더 설명하기는 너무 긴 것 같고 대략적으로 설명하자면 

 


 1. diff --git a/README.md  b/README.md       

   -> a/README.md (기존파일)  b/README.md (변경된 후의 파일) 즉 파일이 변경 됐다.

 

 2. new file mode  

  -> 100 은 일반 파일이라는 소리이고, 644는 권한. 즉 (rw-r--r--) 이라는 소리.

 

 3. --- /dev/null    +++ b/README.md

 ->/dev/null 은 없는 파일임. 즉 없는 파일이 ---이 되고 b/README.md 파일이 +++ 됐다라는 그냥 b/README.md 파일이 생성 됐다 라는 뜻

 

 4. @@ -0,0 +1,8 @@

 -> b/README.md 파일이 원래는 -0,0 즉 아무 것도 없었는데 1번째 줄부터 8번째 줄까지 새로 추가됐다라는 소리이고,

 

 5. 추가된 내용들이 밑에 + 로 나와있다.


 

자 아무튼 git log --oneline 을 하거나 git log -p 를 하거나 커밋은 두 개 밖에 안 보이고, 둘 다 비밀번호는 <no password~ 어쩌고> 로 되어 있다. 그러면 혹시 지워진 커밋이나 다른 커밋들은 없는지 봐야 한다.

 

git log --all --oneline

 

위와 같이 다른 커밋들도 주르륵 나온다.

그러면 git show commitId 를 통해 하나하나 위에서부터 변경 내용들을 탐색해보자.

git show 6ac7796

> 아까 한 것처럼 README>md 파일이 변경 되었는데, username이 bandit29 에서 bandit30에서 바뀐 것일 뿐 별 건 없다.

> 그럼 다음 걸 털어보자

git show 081ac38    // add data needed for development

 

!!!!! 찾은 것 같다.

여기서는 이전 password 가 <no~~~> 어쩌고 였는데 지금 버전에서는 qp~~어쩌고로 비밀번호 같은 것으로 바뀌어져 있다. 비밀번호 GET!

3. 요약

☞ git log --all 옵션을 주면 삭제 된 커밋들도 다 확인 할 수 있다.

☞ git show 커밋아이디 옵션을 주면 해당 커밋에서의 변경(삭제/추가) 내용을 볼 수 있다.