[Level 31] Git Tag
전 단계와 동일하게 /tmp에 bandit30 폴더를 하나 만들어준 후 클론을 받아온다.
(무아하하라니ㅋㅋ)
전 단계에서 사용했던 Commit 기록과 Branch는 모두 하나밖에 존재하지 않았다.
$ man git을 통해 사용할만한 명령어가 있나 찾아보았다.
몇 가지를 써보다가 $ git tag를 하니 secret이라는 태그가 하나 등장했다.
태그는 처음 들어보는데, Commit에 알기 쉬운 이름을 붙이는 용도로 쓰인다고 한다.
종류도 두 가지로, 이름만 붙일 수 있는 Lightweight tag와 서명이나 설명까지 포함 가능한 Annotated tag가 존재한다. Commit 이름이 복잡한 문자열로 생성되니 태그를 붙여 쉽게 Checkout 하기 위해 사용되는 것 같다.
$ git show secret을 통해 비밀번호를 얻었다.
[Level 32] Git Push
마찬가지로 파일을 클론 해온 후 README 파일을 확인해 준다.
이번 단계는 push를 사용해 보는 단계이다.
우선 Detail에서 말한 대로 key.txt 파일을 만들어주자.
(May I come in의 양옆 작은따옴표는 빼주어야 통과되는 것 같다.)
그 후 add → commit → push 단계를 거쳐야 하는데, key.txt 파일이. gitignore 파일에 들어가 있다는 정보가 떴다.
.gitignore 파일은 node_modules 같은 큰 파일이나 보안을 위한. env 파일 등 저장소에 올리지 않기 위해 미리 제외해야 할 파일들을 넣어놓는 곳이다. -f 옵션을 통해 강제로 add 해주고 commit도 해주자.
마지막으로 $ git push를 해준 후 비밀번호를 입력하면 다음 레벨로의 패스워드를 얻을 수 있다.
[Level 33] Positional Parameter
드디어 마지막 문제다!
Bandit32로 접속했더니 Shell이 하나 떴다.
아무거나 쳐보았더니 죄다 대문자로 쳐진다.
그러니까 레벨 33은 대문자로 출력되는 프로그램이 자동으로 실행되게 해 놓은 것이다.
찾아보니 Shell에는 Positional Parameter라는 특별한 변수들이 있었다.
$0, $1.. 는 명령어를 입력했을 때 공백을 기준으로 각각의 매개변수를 지칭한다.
예를 들어 secret이라는 파일을 볼 때 cat secret라고 작성하는데, $0가 cat, $1가 secret이 되는 것이다.
$#은 스크립트를 실행시킬 때 입력받은 매개변수의 개수를 의미한다.
$0은 shell이나 shell script의 이름도 의미한다고 하여 $0를 입력해 보았더니 $로 바뀌었다.
참고 삼아 다른 레벨에서 echo $0를 해보았다.
일부러 없는 명령어를 치니 -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 |
댓글