[Level 31] Git Tag
![](https://blog.kakaocdn.net/dn/b7cFEM/btrkSOFup9G/bSugLoF8plbG3p1m5xNSeK/img.png)
전 단계와 동일하게 /tmp에 bandit30 폴더를 하나 만들어준 후 클론을 받아온다.
![](https://blog.kakaocdn.net/dn/bbODQL/btrkSOlc5Kr/st0DQ9XefxrkecftWowlk0/img.png)
(무아하하라니ㅋㅋ)
![](https://blog.kakaocdn.net/dn/GKhDc/btrkK8SlNnA/9jyFShcejR8TPgmx6whgYK/img.png)
전 단계에서 사용했던 Commit 기록과 Branch는 모두 하나밖에 존재하지 않았다.
$ man git을 통해 사용할만한 명령어가 있나 찾아보았다.
![](https://blog.kakaocdn.net/dn/b35m2o/btrkOjTzRZ4/jsEeHvNxrXKjaXJsBsZWSk/img.png)
몇 가지를 써보다가 $ git tag를 하니 secret이라는 태그가 하나 등장했다.
![](https://blog.kakaocdn.net/dn/dtHHmu/btrkZM1p5Po/klKmsxpKhYLesj3GRH9Nc1/img.png)
태그는 처음 들어보는데, Commit에 알기 쉬운 이름을 붙이는 용도로 쓰인다고 한다.
종류도 두 가지로, 이름만 붙일 수 있는 Lightweight tag와 서명이나 설명까지 포함 가능한 Annotated tag가 존재한다. Commit 이름이 복잡한 문자열로 생성되니 태그를 붙여 쉽게 Checkout 하기 위해 사용되는 것 같다.
![](https://blog.kakaocdn.net/dn/bL3UJB/btrkSOlc5Jp/jQs2NY64H3AXj2SKlBWra1/img.png)
$ git show secret을 통해 비밀번호를 얻었다.
[Level 32] Git Push
![](https://blog.kakaocdn.net/dn/P2y7O/btrkQkSdgIi/uEGg9QbUwMUxAc7BlVlRVk/img.png)
마찬가지로 파일을 클론 해온 후 README 파일을 확인해 준다.
![](https://blog.kakaocdn.net/dn/bgsoKI/btrkOkkEnzO/hKkQf1yWgP0lqye4M3uVTK/img.png)
이번 단계는 push를 사용해 보는 단계이다.
우선 Detail에서 말한 대로 key.txt 파일을 만들어주자.
![](https://blog.kakaocdn.net/dn/cACgBd/btrkK6UvsnF/Bss0h5uZ9IKGWauk8YpK1K/img.png)
(May I come in의 양옆 작은따옴표는 빼주어야 통과되는 것 같다.)
그 후 add → commit → push 단계를 거쳐야 하는데, key.txt 파일이. gitignore 파일에 들어가 있다는 정보가 떴다.
![](https://blog.kakaocdn.net/dn/c31Fhd/btrkK8x1Ckw/dw8HGaZRK46YJSjndKCp51/img.png)
.gitignore 파일은 node_modules 같은 큰 파일이나 보안을 위한. env 파일 등 저장소에 올리지 않기 위해 미리 제외해야 할 파일들을 넣어놓는 곳이다. -f 옵션을 통해 강제로 add 해주고 commit도 해주자.
![](https://blog.kakaocdn.net/dn/ccFWRY/btrkJmXScbp/mfNMFGQPqruNgTdEAxmkoK/img.png)
마지막으로 $ git push를 해준 후 비밀번호를 입력하면 다음 레벨로의 패스워드를 얻을 수 있다.
[Level 33] Positional Parameter
![](https://blog.kakaocdn.net/dn/1FfRa/btrkIQSlmZA/xIZu4FPDK8FlzSzrmrL2Q1/img.png)
드디어 마지막 문제다!
Bandit32로 접속했더니 Shell이 하나 떴다.
![](https://blog.kakaocdn.net/dn/bdc5kV/btrkK8EM0cF/nwIwcm17LRBrIuzLOBMP0K/img.png)
아무거나 쳐보았더니 죄다 대문자로 쳐진다.
![](https://blog.kakaocdn.net/dn/ngTst/btrkWN0BOLD/Dx9U6XgMMSB3cEPl7eVtpK/img.png)
그러니까 레벨 33은 대문자로 출력되는 프로그램이 자동으로 실행되게 해 놓은 것이다.
찾아보니 Shell에는 Positional Parameter라는 특별한 변수들이 있었다.
$0, $1.. 는 명령어를 입력했을 때 공백을 기준으로 각각의 매개변수를 지칭한다.
예를 들어 secret이라는 파일을 볼 때 cat secret라고 작성하는데, $0가 cat, $1가 secret이 되는 것이다.
$#은 스크립트를 실행시킬 때 입력받은 매개변수의 개수를 의미한다.
![](https://blog.kakaocdn.net/dn/zxsmn/btrkSN0SCi6/a9cGSctwBFaxCrnLESyYuk/img.png)
$0은 shell이나 shell script의 이름도 의미한다고 하여 $0를 입력해 보았더니 $로 바뀌었다.
![](https://blog.kakaocdn.net/dn/stFrm/btrkOj67jkc/KfCeUGB1kquJOPJ2JKIVoK/img.png)
참고 삼아 다른 레벨에서 echo $0를 해보았다.
![](https://blog.kakaocdn.net/dn/sAsVY/btrkQljhRSM/P5ztxA22lWeTXVbMDMTsWK/img.png)
일부러 없는 명령어를 치니 -bash: '내가 친 명령어': not found 순으로 떴는데 위와 비교해 보면
sh : 1: '내가 친 명령어': not found 순으로 비슷한 모습을 보인다.
echo $0에서 -bash가 떴으니 UPPERCASE SHELL에서 $0는 sh를 의미할 것이고 그래서 $ 쉘로 바뀐 것 같다.
드디어 현재까지 나온 Badit의 모든 문제를 다 풀었다!
다른 WarGames에도 도전해보아야겠다.
'WarGames > Bandit' 카테고리의 다른 글
Bandit : Level 26 ~ Level 30 (0) | 2021.11.07 |
---|---|
Bandit : Level 21 ~ Level 25 (0) | 2021.11.03 |
Bandit : Level 16 ~ Level 20 (0) | 2021.11.01 |
Bandit : Level 11 ~ Level 15 (0) | 2021.10.30 |
Bandit : Level 6 ~ Level 10 (0) | 2021.10.27 |
댓글