본문 바로가기
Bandit

[Bandit] Level 12

by st-og 2023. 7. 19.

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

 

여러 번 압축하여 만든 파일의 hexdump인 data.txt파일에서 password를 알아내기


처음 로그인하여 data.txt를 확인해 보면

이러한 hexdump를 확인할 수 있다.

 


hexdump란?

"램 또는 파일이나 저장장치에 있는 컴퓨터 데이터의 십육진법적인 보임새이다."

간단하게 말하면 데이터를 16진수로 변환한 것을 말한다.

 

아래 링크에서 자세하게 알 수 있다

https://ko.wikipedia.org/wiki/Hex_dump

 

Hex dump - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 318바이트 Wikipedia 파비콘의 hex dump hex dump는 램 또는 파일이나 저장장치에 있는 컴퓨터 데이터의 십육진법적인 보임새이다. 데이터의 hex dump를 보는 것은 주

ko.wikipedia.org

 


압축이 되어 있는 파일의 원본을 알아내야 하는데 현재 hexdump로는 알아내기 힘들어 보인다.

그래서 hexdump의 16진수 데이터를 기존의 데이터로 다시 바꿔줘야 한다

 

리눅스에서 hexdump를 생성하고 되돌릴 때 사용하는 명령어로는 xxd가 있다.

xxd :  2진수 데이터 <--> 16진수 데이터,    ex) xxd [옵션] [변경할 파일] [생성될 파일명]

 

16진수를 2진수 데이터로 바꾸기 위해서는 xxd -r 옵션을 사용하면 된다.

xxd -r data.txt data

 

하지만 현재 디렉터리에서는 권한이 없어서 파일이 생성되지 않는다.

 

그러므로 파일 생성 권한이 있는 /tmp 디렉터리 안에 새로운 디렉터리를 생성하고 그 안에 복사한 후 해당 명령어를 다시 실행했다.

mkdir : (make directory) 디렉토리 생성할 때 쓰이는 명령어  * mkdir [생성할 디렉토리명]
cp : (copy) 디렉터리나 파일을 복사할 때 사용하는 명령어    * cp [복사할 파일명] [복사될 파일명]

 

다른 디렉터리에서는 잘 되는 것을 확인할 수 있으며 해당 파일이 gzip으로 압축되어 있다는 것을 확인할 수 있다.

 

gzip 파일을 압축해제를 하려면 gzip 명령어의 -d 옵션을 사용하면 된다.

gzip -d [압축 해제할 파일명]

하지만 현재 gzip 확장자명이 아니기에 해당 명령어를 사용할 수 없다

그렇기에 우리는 data 파일의 확장자명을 바꾸고 해당 명령어를 다시 사용해줘야 한다

gzip의 확장자는 .gz이다.

mv : (move) 파일 및 디렉터리 이동 명령어   * mv [이동할 파일] [이동할 경로 및 파일명]
더보기

여기서는 이동할 경로를 현재 디렉터리로 정하였기에 경로 설정을 따로 해주지 않았다.

파일의 이름을 변경할 때에도 mv를 사용해 변경한다. * mv [변경 전 파일명] [변경 후 파일명]

 

확장자를 변경 후 압축 해제를 하면 이번엔 bzip2로 압축이 되었다는 것을 알 수 있다.

 

위의 방법으로 확장자 명을 bzip2에 맞게 변경 후 다시 압축 해제를 해준다

bzip2의 확장자는 .bz2이다

bzip2 파일의 압축해제 방법은bzip2 명령어의 -d 옵션을 사용하면 된다.

gzip2 -d [압축 해제할 파일명]

 

 

이번엔 또 gzip이므로 위와 똑같은 방법으로 압축을 해제해준다

그럼 POSIX tar archive (GNU)라는 문구를 볼 수 있는데 해당 문구가 뭘 뜻하는 건지 정확히 알기 위해 chatGPT에게 물어봤다.

파일 명령어를 사용하여 파일의 형식을 확인할 때 "posix tar archive (gnu)"라는 결과가 나타난 것은 해당 파일이 GNU 특정 형식으로 압축된 tar 아카이브임을 의미합니다. 이를 풀어서 설명하겠습니다.

tar "tar"는 Tape Archive의 약자로, 파일 및 디렉터리들을 하나의 파일로 묶는 데 사용되는 유닉스와 리눅스 시스템에서 흔히 사용되는 명령어 및 파일 형식입니다. tar는 파일들을 압축하지 않고 단순히 하나로 묶는 역할을 합니다. 보통 파일과 디렉터리를 보관하거나 백업하기 위해 많이 사용됩니다.

POSIX "POSIX"는 Portable Operating System Interface for Unix(유닉스를 위한 이식 가능한 운영체제 인터페이스)의 약자로, 유닉스와 호환되는 운영체제에서 사용할 수 있는 표준 인터페이스를 정의한 국제 표준입니다. POSIX 표준은 파일 시스템, 프로세스 제어, 셸 명령 등 다양한 부분에서 유닉스 호환 운영체제들이 공통으로 따라야 하는 규칙을 제공합니다.

GNU "GNU"는 "GNU's Not Unix"의 재귀적인 약자로, 리처드 스톨먼(Richard Stallman)이 개발한 자유 소프트웨어 운동의 일환으로 만들어진 운영체제입니다. GNU 프로젝트는 유닉스와 호환되는 기능을 가진 운영체제를 만들기 위해 노력했습니다.

따라서 "posix tar archive (gnu)"는 GNU 프로젝트에서 개발한 tar 아카이브 형식을 의미합니다. 이 형식은 POSIX 표준을 따르며, 리눅스 시스템에서 주로 사용되는 표준 tar 아카이브 형식 중 하나입니다. 이 형식의 tar 아카이브는 파일과 디렉토리를 묶어서 보관하는 데 사용됩니다.

즉, 쉽게 말하면 해당 파일은 tar파일이다 라는 뜻이다.

 

해당 파일이 tar파일인 것을 알았으니 위와 동일한 방법으로 해결을 해보자.

*tar 확장자 : .tar

 

tar 압축 해제 방법

tar [옵션] [파일 명]

tar 옵션

c 압축
x 압축 해제
v 압축 또는 해제시 파일 리스트 출력
f 압축 또는 해제 파일 지정
t 압축된 리스트 보기
z gzip을 사용해 압축 (tar보다 압축률이 좋음)

 

mv를 사용해 data의 확장자를 tar로 바꿔준 후 

mv data data.tar

 

tar를 사용해 압축 해제를 한다.

tar -xvf data.tar

 

그럼 data5.bin이라는 파일을 확인할 수 있고 해당 파일 역시 tar로 압축되어 있는 것을 확인할 수 있다.

위와 동일한 방법으로 data5.bin 파일을 압축해제 해보자

또 bzip2 파일이 나온다. 한번 더 압축 해제를 해보자

 

이번엔 tar파일이다. 한번 더 압축 해제를 해보자

 

이번엔 gzip... 한번 더 압축 해제를 해보자

 

해당 파일을 압축해제 하니 파일이 아스키로 되어 있는 것을 확인할 수 있고 cat 명령어를 통해 확인하니

password를 확인할 수 있었다.

 

정답: wbWdlBxEir4CaE8LaPhauuOo6pwRmrDw

'Bandit' 카테고리의 다른 글

[Bandit] Level 11  (0) 2023.07.17
[Bandit] Level 10  (0) 2023.07.16
[Bandit] Level 9  (1) 2023.07.16
[Bandit] Level 8  (0) 2023.07.16
[Bandit] Level 7  (0) 2023.07.14