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
'5. 방학 활동 > Write UP' 카테고리의 다른 글
[2021.07.25] 포너블팀 Dreamhack-System hacking (0) | 2021.07.25 |
---|---|
[2021.07.23] Dreamhack Wargame팀 풀이 (1) | 2021.07.23 |
[2021/02/20] bandit wargame Level19 ~ Level23 (0) | 2021.03.24 |
[2021/02/18] bandit wargame Level14 ~ Level18 (0) | 2021.03.24 |
[2021/02/16] bandit wargame Level9 ~ Level13 (1) | 2021.03.24 |