Bandit

리눅스 압축 풀기 gzip, tar, bzip2 | Bandit Level 12 -> Level 13

developerYoung 2023. 8. 31. 22:09
반응형

문제

level12. 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!)

 

오늘은 문제를 풀기위해서 필요한 내용이 굉장히 단순해요!

하지만 좀 푸는 과정이 귀찮은건 어쩔수 없어요... 단순 압축, 압축풀기 두 과정에 대한 내용이 전부입니다!

문제에서 한가지 키워드가 나오는데 repeatedly compressesd 라고 반복적으로 압축되어있는 파일임을 알 수 있어요. 그러니깐 압축을 푸는게 이번 문제의 핵심이라고 생각하면 됩니다!

 

또한 이 문제에서 For example의 아래 예시를 준 이유가 무엇이라고 생각하시나요?

 

리눅스 xxd 명령어로 hex dump 출력 

hex dump 파일이 어떤건지 간단히 알아보고 넘어가죠!

hex dump란?

hex dump는 파일의 데이터를 16진법 형식으로 표현한 것으로, 램 또는 파일이나 저장장치에 있는 한 부분이다.

리눅스에선 xxd를 통해 16진수 형식 hex dump 파일을 출력할 수 있다.

 

xxd 사용법

xxd 명령어를 통해 파일을 hex dump 할 수도, 또는 다시 해석하여 출력할 수도 있다.

 

xxd [옵션] [파일명]

xxd 옵션

  • default : hex dump 만들기
  • -r : hex dump 

리눅스 압축, 풀기 명령어 gzip, tar, bzip2

여기서 사용되는 압축 관련 명령어는 gzip, tar, bzip2 세가지입니다.

세가지의 압축하기, 압축풀기 2가지를 모두 배워볼게요.

 

gzip 으로 압축풀기

압축하기
gzip [파일명]

압축풀기
gzip -d [파일명]

 

tar 로 압축풀기

압축하기
tar [파일명]

압축풀기
tar -xvf [파일명]

 

bzip2 로 압축풀기

압축하기
bzip2 [파일명]

압축풀기
bzip2 -d [파일명]

 

간단하죠?? 따로 추가적인 옵션은 굳이 안다루고 넘어가도록 할게요!

이 내용만 가지고 한번 문제를 풀러가볼까요??

 

풀이

자! 이제 충분히 개념을 봤으니 한번 문제를 풀어볼까요?

 

우리는 다음 순서대로 문제를 해결할겁니다.

  1. hex dump 파일 변환하기
  2. 변환한 파일 해석하여 압축풀기
  3. 패스워드 찾기

자 먼저 hexdump 파일을 변환하여 data 라는 파일로 만드려했는데, permission denied가 나온다.

 

그래서 이유를 알기위해 아래처럼 ls -al 명령어를 통해 bandit12 폴더에 권한을 확인해보니 w 권한이 없었기에 파일을 만들수가 없었다...ㅠㅠ!

이 이유로 문제에서 for example 부분에 우리가 write 권한이 있는 디렉터리를 알려준 것이다!

 

그러면 /tmp/myname123 폴더에 xxd로 변환한 파일을 저장해보도록 하자!

xxd -r data.txt > /tmp/myname123
cd /tmp/myname123
ls

이렇게 여기까지 왔으면 성공이다!

 

한번 변환한 파일이 어떤 상태인지 체크하기 위해서 file data 명령어를 입력해보자! 아마도 gzip compressed data로 압축 파일임을 확인할 수 있다.

그러면 이제 우리는 압축을 푸는 작업을 해야한다. gzip 압축푸는 법은 gzip -d 파일명으로 배웠으니 적용해보자! (파일명이 gz에 되어야한다!)

 

1. 첫번째 압축풀기

압축을 풀기위해 mv로 gz 파일로 만들고, gzip -d 명령어로 압축을 풀었더니 data 파일이 나왔다. 그리고 data 파일은 다시 bzip2로 압축이 되어있는 파일이었다.

이후 과정은 계속해서 gzip bzip2 tar를 이용해 압축파일을 해제하는 과정이다.

결과적인 것만 확인해보도록 하자!

아래는 직접 모든 압축을 푸는 과정이다. 굉장히 귀찮은 문제이지만 이 문제로 이제 압축 관련된 문제는 생각보다 이해하기 쉽게 접근할 것 같다 ㅎㅎㅎ

반응형
bandit12@bandit:/tmp/myname123$
bandit12@bandit:/tmp/myname123$ mv data data.gz
bandit12@bandit:/tmp/myname123$ ls
data.gz
bandit12@bandit:/tmp/myname123$ gzip -d data.gz
bandit12@bandit:/tmp/myname123$ ls
data
bandit12@bandit:/tmp/myname123$ file data
data: bzip2 compressed data, block size = 900k
bandit12@bandit:/tmp/myname123$ mv data data.bz2
bandit12@bandit:/tmp/myname123$ bzip2 -d data.bz2
bandit12@bandit:/tmp/myname123$ ls
data
bandit12@bandit:/tmp/myname123$ file data
data: gzip compressed data, was "data4.bin", last modified: Sun Apr 23 18:04:23 2023, max compression, from Unix, original size modulo 2^32 20480
bandit12@bandit:/tmp/myname123$ mv data data.gz
bandit12@bandit:/tmp/myname123$ gzip -d data.gz
bandit12@bandit:/tmp/myname123$ ls
data
bandit12@bandit:/tmp/myname123$ file data
data: POSIX tar archive (GNU)
bandit12@bandit:/tmp/myname123$ mv data data.tar
bandit12@bandit:/tmp/myname123$ tar -xvf data.tar
data5.bin
bandit12@bandit:/tmp/myname123$ file data5.bin
data5.bin: POSIX tar archive (GNU)
bandit12@bandit:/tmp/myname123$ mv data5.bin data5.bin.tar
bandit12@bandit:/tmp/myname123$ tar -xvf data5.bin.tar
data6.bin
bandit12@bandit:/tmp/myname123$ mv data6.bin data6.bin.tar
bandit12@bandit:/tmp/myname123$ tar -xvf data6.bin.tar
data8.bin
bandit12@bandit:/tmp/myname123$ file data8.bin
data8.bin: gzip compressed data, was "data9.bin", last modified: Sun Apr 23 18:04:23 2023, max compression, from Unix, original size modulo 2^32 49
bandit12@bandit:/tmp/myname123$ mv data8.bin data8.bin.gz
bandit12@bandit:/tmp/myname123$ gzip -d data8.bin.gz
bandit12@bandit:/tmp/myname123$ ls
data5.bin.tar  data6.bin.tar  data8.bin  data.tar
bandit12@bandit:/tmp/myname123$ file data8.bin
data8.bin: ASCII text
bandit12@bandit:/tmp/myname123$ cat data8.bin
The password is wbWdlBxEir4CaE8LaPhauuOo6pwRmrDw

 

 


 

더보기를 눌러 비밀번호를 확인하세요!

더보기

비밀번호는 다음과 같다

Level12. wbWdlBxEir4CaE8LaPhauuOo6pwRmrDw

 

반응형