본문 바로가기

5. 방학 활동/Write UP

[2021/02/23] bandit wargame Level24 ~ Level31

Level 24 Level 25

문제 해설)

포트 30002 데몬이 실행 중이고, 이것은 bandit24의 패스워드와 4자리 정수가 주어졌을 때에

bandit25의 패스워드를 제공할 것이다. 핀 코드를 검색하는 방법은 없고,

brute-forcing을 통해 10000가지의 경우의 수를 알아보아야한다.

 

문제 풀이)

브루트 포스란, 문제를 해결하기 위해 가능한 모든 경우의 수를 실행시키는 방법이다.

우선 shell.sh라는 셀 스크립트를 작성한다.

코드는 이렇게 짠다.

for문을 이용해 [try : 정수]의 형태로 0부터 9999까지의 정수들이 출력되고,

[패스워드] [핀 코드(정수)] 형태의 문자열이 result.txt 파일에 복사되는 코드이다.

 

shell.sh를 실행시키면 다음과 같다. [try : 정수] 의 형태이다.

result.txt에 내용이 잘 담겼는 지 확인해본다. [패스워드] [정수]의 형태이다.

이 result.txt를 nc명령어를 이용해 localhost 30002에 전송한다.

일치한다는 멘트와 함께 bandit25의 패스워드가 제공된다!

 

 

 

Level 25 Level 26

user bandit26을 위한 쉘은 /bin/bash가 아니라 다른 것이다.

그게 무엇인지, 어떻게 작동하는지 찾아야 한다.

ssh로 접속을 해보면 연결이 닫혔다고 하면서 끊어진다.

 

cat /etc/passwd 명령을 치면 bandit26만 쉘이 다른걸 확인할 수 있다.

확인을 해보면 more라는 명령어가 나오는데,

more라는 명령어는 파일 내용을 확인하는 명령어 중 하나로 파일을 읽어 화면에 화면 단위로 끊어서 출력하는 명령어이다.

즉, 임의로 화면을 작게 줄여 more가 실행되게 만들면 문서 편집기를 사용할 수 있게 되고, 문서 안에서 명령어를 실행할 수 있다.

 

창을 작게 줄인 후 ssh 명령어로 접속하고 v를 눌러 vi 편집기 상태로 전환한다.

 

이후 : 를 눌러 r을 사용해 다음 레벨의 패스워드를 찾는다.

 

r/etc/bandit_pass/bandit26

 

pw: 5czgV9L3Xx8JPOyRbXh6lQbmIOWvPT6Z

 

:set shell=/bin/bash

 

명령을 입력하여 shell을 bash 쉘로 지정해주고 엔터를 누른다.

 

vi에서 shell을 실행하면 bandit26의 쉘로 접속할 수 있게 된다.

 

 

 

Level 26 Level 27

파일들을 확인해 보면 bandit27의 권한을 가지고 있는 bandit27-do 실행 파일이 있다.

./bandit27-do 실행 파일로  /etc/bandit_pass/bandit27 의 패스워드를 읽으면 된다.

 

 

Level 27 Level 28

홈 디렉토리에서는 파일을 쓸 수 있는 권한이 없다. 그래서 /tmp에서 임시 디렉토리를 만들어서 git clone을 해준다.

그리고 bandit27의 패스워드를 입력해 주면 repo디렉토리가 생성된다.

repo디렉토리 안에 README파일이 있는데 이 파일을 읽어주면 다음 레벨의 패스워드를 획득할 수 있다.

 

 

Level 28 Level 29

문제 해설) 이전 레벨과 동일하게 git clone을 이용하여 repo를 받아온다.

ssh://bandit28-git@localhost/home/bandit28-git/repo에 git 저장소가 있다.

사용자 bandit28-git의 암호는 사용자 bandit28과 동일하다.

저장소를 복제하고 다음 레벨의 암호를 찾는 문제이다. 

 

문제 풀이) 

전 문제와 동일하게 git clone 명령어를 이용하여 명령어를 복제하였다. 

해당 폴더에는 다음과 같이 로그인 정보가 있는데, git에서 commit 시 변경한 로그를 검색할 수 있다.

git log -p 명령어를 입력하면 삭제 추가된 내용을 조회할 수 있다. 

 

 

 

Level 29 Level 30

tmp와 mybandit29파일을 만든다.

업데이트 예정

 

5b90576bedb2cc04c86a9e924ce42faf

 

 

Level 30 Level 31

파일이 비어있다는 내용이 나온다.

Git branch -a로 로컬의 git의 branch를 조회할 수 있다.

현재 master로 설정이 되어있으며 총 1개의 branch가 있다.

Repo의 숨김 디렉토리 .git의 packed-refs를 조회한다.

Git은 레퍼런스가 가리키는 SHA값을 찾을 때 먼저 refs에서 찾고 없으면 packed-refs에서 찾는다.

4의 branch 조회 결과에서 없던 secret을 발견할 수 있다.

git show secret명령어로 해당 파일 내용을 조회할 수 있다.

47e603bb428404d265f59c42920d81e5

 

 

 

Level 31 Level 32

업데이트 예정

 

 

Level 32 Level 33

sh 쉘의 경우 $0 입력하면 bash 쉘로 전환할수 있다.

c9c3199ddf4121b10cf581a98d51caee