[반딧 워게임 : OverTheWire] Level 30-> 31 (리눅스/해킹/보안 공부)
자 오늘은 Level 30 -> 31을 해보도록 하겠다.
(Login ID : bandit30/ Password : qp30ex3VLz5MDG1n91YowTv4Q8l7CDZL
1. 문제 내용
https://overthewire.org/wargames/bandit/bandit31.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://bandit30-git@localhost/home/bandit30-git/repo via the port 2220. The password for the user bandit30-git is the s
overthewire.org
> 앞 문제들과 똑같이 깃 저장소 클론해서 다음 레벨의 비밀번호를 찾아보라 한다ㄱㄱ
2. 문제 풀이
> 아래 명령어들을 통해 tmp 밑에 임의의 디렉토리 하나 만들고, 거기에 git repo 를 복사해오도록 하자.
mkdir /tmp/b30Git
cd /tmp/b30Git
GIT_SSH_COMMAND="ssh -p 2220" git clone ssh://bandit30-git@localhost/home/bandit30-git/repo
복사한 뒤 repo 디렉토리로 이동하여 README 를 읽어보니 빈 파일임 무하하 라고 한다. log 들을 체크하여 커밋들 상태를 살펴보도록 하자.
git log --all --oneline //지워진 커밋 등도 포함하여 로그 확인
지워진 커밋도 없는 것 같고, acfc3c6 의 커밋 하나만 존재하는 것으로 보인다. 그러면 이 git 에서 참조하고 있는 것들이 있나 살펴보자.
git show-ref //참조하고 있는 것들을 보여줌
딱 봐도 뭐가 있을 것 같은 refs/tags/secret 이라는 태그값이 보인다.
태그라는 것은 특정 커밋이나 오브젝트를 가리키는 것인데 일단 84368f3a7ee06ac993ed579e34b8bd144afad351 이 녀석이 뭐 하는 녀석인지를 확인해보자.
git cat-file -t 84368f3a7ee06ac993ed579e34b8bd144afad351
git cat-file -t 을 타입을 확인하여 보니 blob (데이터를 Binary Large Object) 타입으로 확인이 되었다.
참고로 git 에서는 파일 데이터를 그대로 저장하지 않고 저렇게 blob objects 로 변환하여 저장한다. 깃에서는 총 4개의 오브젝트가 있으며 내용은 아래와 같다.
오브젝트 타입 | 설명 |
blob | 파일의 실제 내용 (텍스트, 이미지 등 모든 파일 데이터) |
tree | 디렉터리 구조 (파일과 폴더 목록, blob/tress를 가짐) |
commit | 커밋 정보 (변경 사항, 부모 커밋, 메시지, 트리 정보 포함) |
tag | 태그 (특정 커밋 또는 오브젝트를 가리키는 참조) |
blob 파일이니까 git show 를 통해 무슨 내용인지 확인해 보면,,짜잔! 비밀번호를 획득하였다!
3. 요약
☞ git show-ref 를 통해 git 에서 참조하고 있는 것들을 살펴볼 수 있다!