본문 바로가기
WarGames/Bandit

Bandit : Level 31 ~ Level 33

by madevth 2021. 11. 14.
반응형

[Level 31] Git Tag

Bandit Level 31

전 단계와 동일하게 /tmp에 bandit30 폴더를 하나 만들어준 후 클론을 받아온다.

(무아하하라니ㅋㅋ)

전 단계에서 사용했던 Commit 기록과 Branch는 모두 하나밖에 존재하지 않았다.

$ man git을 통해 사용할만한 명령어가 있나 찾아보았다.

몇 가지를 써보다가 $ git tag를 하니 secret이라는 태그가 하나 등장했다.

태그는 처음 들어보는데, Commit에 알기 쉬운 이름을 붙이는 용도로 쓰인다고 한다.

종류도 두 가지로, 이름만 붙일 수 있는 Lightweight tag와 서명이나 설명까지 포함 가능한 Annotated tag가 존재한다. Commit 이름이 복잡한 문자열로 생성되니 태그를 붙여 쉽게 Checkout 하기 위해 사용되는 것 같다.

$ git show secret을 통해 비밀번호를 얻었다.

[Level 32] Git Push

Bandit Level 32

마찬가지로 파일을 클론 해온 후 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

Bandit Level 32
 

드디어 마지막 문제다!

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

댓글