[Bru1s3rs] Bandit - Level 10 ~ 15
브루저는 현재 활동하고 있는 보안 및 해킹 팀이다.(본인이 창설함)
Level 10 -> Level 11
문제 설명
요약: data.txt에 base64로 encoding된 데이타가 있다고 한다. 그게 바로 패스워드니 읽어보자
문제 풀이
확인해보니 맨 뒤에 ==이 있는 것으로 보아하니 확실히 base64로 되어있는 것을 확인할 수 있다.
위의 사이트를 들어가면 base64로 인코딩 된 데이터를
디코딩 시킬수 있다.
decoding
패스워드가 나온다.
-완-
Level 11 -> Level 12
문제 설명
요약: data.txt에 소문자 및 대문자 알파벳가 있는데,
13번째 뒤로 rotate 되었다고 한다.
문제 풀이
이 문제는 암호학에서 "카이사르 암호"에 대한 것이다.
카이사르 암호는 간단히 설명하면 "치환"하는 암호이다.
tr -[옵션][문자열1] [문자열2]
문자열1 -> 문자열2로 translate(변환) 해주는 명령어이다.
tr 'a-zA-Z' 'n-za-mN-ZA-M'
13번 째 알파벳은 m 이므로, m을 기준으로 tr을 사용하면 될 것 같다.
뒤에 오는 문자열 들은 'a부터 z, A부터 Z'에서 'n부터 z, a부터 m, N부터 Z, A부터 M'으로 치환하겠다는 의미이다.
패스워드를 얻어 냈다.
-완-
Level 12 -> Level 13
문제 설명
요약: 반복적으로 압축된 hexdump 파일인 data.txt가 있다.
/tmp 디렉토리 안에 mkdir로 디렉토리 생성을 해서, data.txt 파일을 cp 로 copy 해서 풀면 된다.
그니까 이 문제는 "여러번 압축되어 있는 파일을 풀어라~" 이 의미이다.
문제 풀이
hexdump 된 파일이 보인다. 뭔가 복잡하긴 한데,
덤프파일이니 바이너리 파일 생성이 가능하다.
1. xxd 명령어
xxd -[옵션][파일]
바이너리 파일을 hexdump로 보여주는 명령어이다.
-r: hexdump 파일을 binary 파일로 바꾼다. (ex. xxd -r [file1][file2])
-b: 이진수로 보여준다.
-p: hex값만 보여준다.
2. xxd -r data.txt data
이 명령어를 이용해 덤프파일을 바이너리 파일 생성이 가능하다.
권한이 없다.
그래서 /tmp 디렉토리에서 작업하라고 했던 모양이다.
3. mkdir && cp
그래서 /tmp 디렉토리에 디렉토리 생성해주고,
cp로 파일을 복사하자
가져 온 모습이다.
4. xxd -r data.txt data (다시)
(중간에 test로 할까 하다가, 보기 좋게 data로 바꾼 모습이다.)
성공적으로 data 파일을 만들었다.
file 명령어로 확인해보자
5. file
gzip으로 압축되어 있었던 것 같다.
친절히 data2.bin 파일 이었다고 알려준다.
6. gzip
gzip 파일이니, data.gz으로 바꿔 주고
gzip -d data.gz을 해서 압축을 풀어준다.
다시 file 명령어로 확인해보니 bzip2로 압축되어 있다고 한다.
7. bzip2
bzip2 파일이니, data.bz2로 바꿔 주고
bzip2 -d data.bz2를 해서 압축을 풀어준다.
다시 file로 확인해보니, gzip으로 또 압축되어있다고 한다.
8. tar
계속 반복해서 압축을 풀다보면 tar 압축파일이 나온다.
tar xvf data.tar 로 풀면 된다.
반복해서 이제 풀어보자
9. 반복
계속 반복해서 하니 data8이 나오고, 여기에 패스워드가 들어있었다.
-완-
Level 13 -> Level 14
문제 설명
요약: /etc/bandit_pass/bandit14에 패스워드가 있지만, bandit14 사용자만 읽을 수 있다고 한다.
ssh 키가 있어서 bandit14에 접속할 수 있다.
문제 풀이
예전에 AWS할 때, ssh -i 옵션으로 key를 썼던 기억이 난다.
그거를 써보자
ssh -i
쭉 카피해서 내 local에 키 파일 생성 후
ssh -i 로 접속을 했더니 성공적으로 접속이 되었다.
-완-
Level 14 -> Level 15
문제 설명
요약: 30000번 포트에 bandit14의 패스워드를 보내면, Level15의 패스워드를 알려준다고 한다.
문제 풀이
이전 문제에서, /etc/bandit_pass 위치에, bandit14 패스워드가 존재한다고 했다.
그리고, 현재 localhost의 30000번 포트에 비밀번호를 제출해야 한다.
1. nmap -sT localhost
localhost에서 확인 해보면 30000번 포트에 ndmps 서비스가 열려있는 것을 확인할 수 있다.
2. nc localhost 30000 && 비번 보내기
/etc/bandit_pass로 위치를 옮긴 후 bandit14 를 읽고,
nc로 localhost의 30000번 포트에 접속을 해서, 비번을 보내주면
Level 15로 가는 패스워드를 알려준다.
-완-
새로 알게된 점
tr 명령어
변환? 혹은 치환? 하는 명령어에 대해 알게 되었다.
Reference