Bandit level 12→13

거대한리트리버·2023년 8월 12일
1
post-thumbnail

환경 : Linux Ubuntu 22.04

문제

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가 여러 번 compressed된 파일에 비밀번호가 있는 것 같다.
여러 번의 decompress 과정을 통해 비밀번호를 찾을 수 있을 것이다.

data.txt 파일을 읽어보자.

hexdump 형태로 저장되어 있는 것을 확인할 수 있다.
이 형태로는 우리가 원하는 정보를 찾을 수 없기 때문에 다른 형태로 변환해야 한다.
(ASCII code 부분에 보이는 data2.bin이 약간의 힌트인 것 같다.)

permission을 확인해보면 user 제외 같은 그룹은 읽기, 다른 권한은 없기 때문에
이 파일을 변환시켜주면서 비밀번호를 알아내려면 복사된 파일이 필요하다.
문제에서 mkdir 명령어를 통해 파일을 따로 생성하라고 했으니
[/tmp/내가 원하는 디렉토리 이름] 형식으로 디렉토리부터 생성해준다.
/tmp 디렉토리는 임시로 파일을 저장하는 역할을 하며 권한과 상관 없이 사용 가능하다.

mkdir /tmp/n0rang2

이제 n0rang2 디렉토리에 G0mtang2.txt라는 이름으로 파일을 복사해준다.
pwd 명령어를 통해 현재 위치를 알 수 있다.

파일을 복사하기 위해서 cp(copy) 명령어를 사용하면 된다. 코드는 다음과 같다.

cp /home/bandit12/data.txt /tmp/n0rang2/G0mtang2.txt

(G0mtang2.txt 라는 파일 이름을 정해주었으나 생략 가능하며 이 때 이름은 data.txt가 된다.)

성공적으로 파일이 복사된 것을 확인할 수 있다.
이제 여러 번 compressed된 hexdump를 decompressed할 차례이다.

리눅스에서 hexdump와 관련된 명령어를 찾아보다가 xxd 명령어를 알게 되었다.

xxd 명령어

make a hexdump or do the reverse.

다른 형태로 변환시켜주는 옵션 중 -r 옵션이 binary로 변환시켜준다는 것을 알게 되었다.
바로 실행시켜보자.

xxd -r G0mtang2.txt

ASCII 문자만 추출해보자.

분명 hexdump를 binary로 변환했다고 생각했는데 cat으로 읽어도 파일은 변한 게 없었다.
file 명령어로 파일의 형태를 확인해봐도 그대로 ASCII text이다.

파일 확장자가 .txt이기 때문에 당연히 확장자가 .bin인 파일이 필요했던 것이 이유인 것 같다.
G0mtang2.bin이라는 바이너리 파일로 확장자를 바꾸어준 후 변환해보자.
mv 명령어를 통해 파일 이름이나 확장자를 바꾸어줄 수 있다.

mv G0mtang2.txt G0mtang2.bin
xxd -r G0mtang2.bin

실행 후 file 명령어를 실행하면 여전히 ASCII text라고 출력된다.
xxd -r 명령어에 추가적인 옵션이 필요한 것 같다.
검색해보니 xxd -r 명령어는 binary로 변환된 파일 내용을 저장하지 않고 출력만 해준다.
변환 내용을 저장하기 위해서는 다음과 같이 코드를 변경하면 된다.

xxd -r G0mtang2.bin > G0mtang22.bin (.bin 생략 가능)

이렇게 G0mtang22.bin 파일을 새로 만들어주면 변환된 내용이 새 파일에 저장된다.
앞의 mv 명령어 과정을 생략해도 결과는 같다.

file 명령어를 통해 어떤 방식으로 compressed 되었는지 확인한 후
각각의 방식에 따른 decompress 명령을 실행해주다보면 비밀번호가 출력된다.
거의 8번 정도 반복한 것 같다.

파일 형태를 확인 후 decompress를 하기 위해서는 형태에 맞는 확장자가 필요하다.
mv 명령어를 통해 decompress 하기 전 확장자를 붙여주는 과정이 있어야 한다.

mv filename filename.확장자

bzip2, gzip, tar 형식에 따른 decompress 코드만 간단하게 정리해두겠다.

bzip2 compressed file

bzip2 -d filename.bz

gzip compressed file

gzip -d filename.gz

tar compressed file

tar -xvf filename

계속 반복하다보면 file 명령어를 실행했을 때 형식이 ASCII text라고 출력된다.

그 때 cat 명령어로 파일을 읽어주면 비밀번호를 얻을 수 있다.

password : wbWdlBxEir4CaE8LaPhauuOo6pwRmrDw

profile
강아지귀여워

0개의 댓글