Wargame/bandit

[리눅스] Bandit level 29 -> level 30

핏디 2021. 7. 24. 15:37
SMALL

[문제]


[풀이]

/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' 브랜치에서 이루어 집니다.


[출처]

https://backlog.com/git-tutorial/kr/stepup/stepup1_1.html

LIST