OverTheWire - Bandit
강의목차: Level 12 → Level 13(xxd, gzip, bzip2, tar)
Bandit 웹페이지
https://overthewire.org/wargames/bandit/
1. Bandit Level 12 → 13
Level Goal
The password for the next level is stored in the file data.txt, which is a hexdump of a file that has been repeatedly compressed. For this level it may be useful to create a directory under /tmp in which you can work using mkdir. For example: mkdir /tmp/myname123. Then copy the datafile using cp, and rename it using mv (read the manpages!)
Commands you may need to solve this level
grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd, mkdir, cp, mv, file
Helpful Reading Material
다음 레벨 패스워드는 data.txt 파일에 저장되어 있다. 이것은 반복적으로 압축된 16진수 덤프 파일이다. /tmp 디렉터리 아래에 mkdir 을 이용하여 작업을 하는 것이 도움이 될 수 있다. 예를 들어, 디렉터리 생성(mkdir /tmp/myname123)후 cp 로 데이터 파일을 복사하고 mv 로 이름을 바꿀 수 있다.
※ 덤프 파일 : 최좌측에는 각 헥스값에 대한 주소가 있고, 좌측에는 코드가 있고, 우측에는 좌측의 코드를 아스키 값으로 변경한 값이 나온다.
Level 12 접속
$ ssh -p 2220 bandit12@bandit.labs.overthewire.org
패스워드: JVNBBFSmZwKKOP0XbFXOoW8chDz5yVRv
$ ls -al
$ file ./data.txt
$ cat ./data.txt
위의 정보들을 통해 알 수 있는 두가지가 있다.
1. data.txt 파일의 크기는 약 2.5 KB 이다.
2. data.txt 파일은 ASCII text 파일이지만 16진수 덤프 값을 가지고 있다.
덤프 파일을 원래 파일로 복원시켜본다.
xxd 명령어
xxd 명령은 바이너리 데이터를 16진수로, 16진수 데이터를 바이너리 데이터로 변환해주는 명령어이다.
사용법
xxd [-옵션] [변환할 파일명]
옵션
-a : 하나의 null line 을 '*'으로 대처
-b : dump가 이진법(즉, 0과1)로 출력됨
-c : 행(line)당 출력되는 열(column)의 갯수 설정
-E : 오른쪽 열 문자열을 ASCII 에서 EBCDIC 로 변경
-g : 출력시 group 으로 묶이는 byte의 갯수를 설정
-h : 사용가능한 명령 요약하여 출력하고 종료
-i : C언어에서 사용할 수 있는 형식으로 출력
-l : 설정된 길이 byte 만큼만 출력
-p : 주소나 ASCII hexdump 내용만 출력
-r : 16진수 데이터를 바이너리(2진수) 데이터로 변환
-s : 설정된 위치에서부터 hexdump 함. 위치 또는 +위치는 파일의 시작부터의 위치를 나타내고 위치는 파일의 끝에서 부터의 위치를 나타냄
-u : hex를 소문자 대신 대문자로 출력
-v : xxd의 버전을 출력
현재 디렉터리에서는 쓰기 권한이 없기 때문에 ( drwxr-xr-x ) 새로운 디렉터리를 생성하여 저장한다.
데이터를 나만의 위치에다가 옮길 필요가 있다.
$ mkdir /tmp/mytmp5
→ mkdir 로 디렉터리 생성, /tmp/mytmp5 로 경로 설정 및 디렉터리 생성
$ cp ./data.txt /tmp/mytmp5
→ data.txt 파일을 /tmp/mytmp5 디렉터리로 복사한다.
$ cd /tmp/mytmp5
→ /tmp/mytmp5 로 이동
-r 옵션을 사용해 바이너리 데이터로 변환한다.
$ xxd -r ./data.txt
$ xxd -r ./data.txt > ./Level12
→ 꺾쇠(>)를 사용해서 Level12 로 리다이렉션 해준다.
$ file ./data.txt
gzip compressed data → gzip 이라는 프로그램으로 압축되어 있다.
gzip -d 옵션을 사용해서 압축을 해제한다.
$ gzip -d ./Level12
→ Level12 확장자명이 확실하지 않아 압축해제가 되지 않는다.
$ mv ./Level12 ./Level12.gz
→ Level12 확장자명을 .gz 로 변경한다.
$ ls -al
→ Level12 에서 Level12.gz 로 이름이 변경된것을 확인
$ gzip -d ./Level12.gz
→ -d 옵션으로 압축해제
$ ls -al
→ Level12.gz 파일의 압축이 해제되어 Level12 가 되었다.
$ file ./Level12
→ bzip2 으로 압축되어 있는 데이터라는것을 확인
$ bzip2 -d ./Level12
→ bzip2 -d 사용하여 Level12 압축해제
→ Can't guess ~ 라는 오류가 나왔지만 압축해제 된거 같다. 아마 .out 확장자로 압축해제하라는 의미인거같다.
$ ls -al
→ Level12.out 파일 확인
$ file ./Level12.out
→ gzip 으로 압축된 데이터라는것을 확인
$ gzip -d ./Level12.out
→ 확장자명 오류 발생
$ ls -al
→ Level12.out 확장자 확인
$ mv ./Level12.out ./Level12.out.gz
→ Level12.out 의 확장자를 Level12.out.gz 로 변경
$ gzip -d ./Level12.out.gz
→ -d 옵션 사용해서 Level12.out.gz 압축 해제
$ ls -al
→ Level12.out.gz 압축 해제되어서 Level12.out 이 됨
$ file ./Level12.out
→ Level12.out 파일이 tar archive 파일이라는 것을 확인
archive 와 compressed 는 다른개념이다.
compressed (압축) : 파일을 모아서 용량을 줄이는 개념
archive (아카이브) : 파일을 모으는 개념 ( 파일 묶기 ), 용량을 줄이지는 않는다.
$ tar -xvf ./Level12.out
→ -xvf 명령어로 Level12.out 파일을 압축 풀기
→ tar -xvf [압축 해제할 압축 아카이브 이름] : 압축 풀기
$ ls -al
→ data5.bin 파일 확인
$ file ./data5.bin
→ data5.bin 파일형태 확인: tar archive 파일
$ tar -xvf ./data5.bin
→ data5.bin 압축 해제
$ ls -al
→ data6.bin 파일 확인
$ file ./data6.bin
→ data6.bin 파일형태 확인: bzip2 압축 파일
$ bzip2 -d ./data6.bin
→ data6.bin 압축 해제
$ ls -al
→ data6.bin.out 파일 확인
$ file ./data6.bin.out
→ data6.bin.out 파일형태: tar archive 파일
$ tar -xvf ./data6.bin.out
→ -xvf 명령어로 data6.bin.out 파일을 압축 풀기
→ tar -xvf [압축 해제할 압축 아카이브 이름] : 압축 풀기
$ ls -al
→ data8.bin 파일 확인
$ file ./data8.bin
→ data8.bin 파일 형태확인 : gzip 압축 파일
$ gzip -d ./data8.bin
→ -d 옵션으로 data8.bin 파일 압축 해제
→ 파일 확장자명 오류로 압축해제 안됨
$ mv ./data8.bin ./data8.bin.gz
→ data8.bin 파일명을 data8.bin.gz 로 변경
$ ls -al
→ data8.bin.gz 확인
$ gzip -d ./data8.bin.gz
→ -d 옵션으로 data8.bin.gz 파일 압축 해제
$ ls -al
→ data8.bin.gz 파일이 압축해제되어 data8.bin 이 나옴
$ file ./data8.bin
→ data8.bin 파일 형태: ASCII text 파일
$ cat ./data8.bin
→ data8.bin 출력
→ 패스워드 확인
패스워드: wbWdlBxEir4CaE8LaPhauuOo6pwRmrDw
$ exit ( ssh 접속 상태에서 홈으로 나가기 )
Level 13 로그인 시도
$ ssh -p 2220 bandit13@bandit.labs.overthewire.org
Level 13 패스워드: wbWdlBxEir4CaE8LaPhauuOo6pwRmrDw
$ whoami
$ id
입력하여 현재 로그인한 계정 확인
취미로 해킹1 강의 : https://www.inflearn.com/course/linux-3
'보안 > Bandit 워게임' 카테고리의 다른 글
OverTheWire - Bandit : Level 14 → Level 15 (0) | 2023.04.11 |
---|---|
OverTheWire - Bandit : Level 13 → Level 14 (0) | 2023.04.10 |
OverTheWire - Bandit : Level 11 → Level 12 (0) | 2023.04.07 |
OverTheWire - Bandit : Level 10 → Level 11 (0) | 2023.04.06 |
OverTheWire - Bandit : Level 9 → Level 10 (0) | 2023.04.05 |