[Bandit] Level 29 → Level 30
Bandit Level 29 풀이 과정을 설명합니다.
문제
Level Goal
There is a git repository at
ssh://bandit29-git@bandit.labs.overthewire.org/home/bandit29-git/repovia the port2220. The password for the userbandit29-gitis the same as for the userbandit29.From your local machine (not the OverTheWire machine!), clone the repository and find the password for the next level. This needs git installed locally on your machine.
해결
/tmp아래에sikkkk폴더를 만들어git clone명령을 통해 문제의 파일을 다운할 수 있습니다.
repo폴더 아래에서README.md파일을 확인할 수 있습니다.그런데 해당 파일을 읽어보면 password가 보이지 않습니다.
작업 변경에 대한 로그를 확인하여도 특별한 변경사항이 보이지 않습니다.
git에서는branch작업을 할 수 있는데branch목록을 확인해보면 현재branch는 초록색 글자로 작성된master임을 알 수 있고,master이외에/origin/dev와/origin/sploits-dev가 존재하는 것을 확인할 수 있습니다.
이에
checkout명령을 통해dev branch로 변경할 수 있고,README.md파일을 읽어보면master와 달리 password를 읽을 수 있게 됩니다.
++ splits-dev branch 확인
추가적으로
splits-dev branch를 확인해보면 password가 보이지 않는 것으로 보아, 문제에서dev branch를 통해서만 password를 확인할 수 있도록 설정되어 있는 것 같습니다.
핵심
여러 사람이 동일한 소스코드를 기반으로 서로 다른 작업을 할 때에는 각각 서로 다른 버전의 코드가 만들어 질 수 밖에 없습니다. 이럴 때, 여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어 주는 기능이 바로 '브랜치(Branch)' 입니다. 각자 독립적인 작업 영역(저장소) 안에서 마음대로 소스코드를 변경할 수 있지요. 이렇게 분리된 작업 영역에서 변경된 내용은 나중에 원래의 버전과 비교해서 하나의 새로운 버전으로 만들어 낼 수 있습니다.
브랜치(branch)란?
브랜치란 독립적으로 어떤 작업을 진행하기 위한 개념입니다. 필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있습니다.
또한 이렇게 만들어진 브랜치는 다른 브랜치와 병합(Merge)함으로써, 작업한 내용을 다시 새로운 하나의 브랜치로 모을 수 있습니다. 아래 그림을 보면, 브랜치를 사용하여 동시에 여러 작업을 진행할 때의 작업 흐름을 한눈에 파악할 수 있습니다. 여러 명이서 동시에 작업을 할 때에 다른 사람의 작업에 영향을 주거나 받지 않도록, 먼저 메인 브랜치에서 자신의 작업 전용 브랜치를 만듭니다. 그리고 각자 작업을 진행한 후, 작업이 끝난 사람은 메인 브랜치에 자신의 브랜치의 변경 사항을 적용합니다. 이렇게 함으로써 다른 사람의 작업에 영향을 받지 않고 독립적으로 특정 작업을 수행하고 그 결과를 하나로 모아 나가게 됩니다. 이러한 방식으로 작업할 경우 '작업 단위', 즉 브랜치로 그 작업의 기록을 중간 중간에 남기게 되므로 문제가 발생했을 경우 원인이 되는 작업을 찾아내거나 그에 따른 대책을 세우기 쉬워집니다.
master 브랜치
저장소를 처음 만들면, Git은 바로 'master'라는 이름의 브랜치를 만들어 둡니다. 이 새로운 저장소에 새로운 파일을 추가 한다거나 추가한 파일의 내용을 변경하여 그 내용을 저장(커밋, Commit)하는 것은 모두 'master' 라는 이름의 브랜치를 통해 처리할 수 있는 일이 됩니다.
'master'가 아닌 또 다른 새로운 브랜치를 만들어서 '이제부터 이 브랜치를 사용할거야!'라고 선언(체크아웃, checkout)하지 않는 이상, 이 때의 모든 작업은 'master' 브랜치에서 이루어 집니다.
댓글
이 글이 마음에 드셨다면 반응이나 댓글을 남겨주세요!
댓글을 작성하려면 로그인하세요

뉴스레터 구독하기
새로운 포스트가 올라오면 이메일로 알려드려요!