문제

Bandit Level 12->13

풀이 및 정답

ssh 접속 명령어.

ssh -p 2220 bandit12@bandit.labs.overthewire.org

다음 네 명령어를 차례로 실행시켜 환경을 먼저 만들어준다.

mkdir -p /tmp/scortnt
cd /tmp/scortnt
cp ~/data.txt /tmp/scortnt
ls

다음 한줄의 명령도 똑같이 동작하니 알아두자

mkdir -p /tmp/scortnt && cd /tmp/scortnt && cp ~/data.txt /tmp/scortnt && ls

데이터 확인.

문제에서 언급한 것과 같이 여러번 압축된 파일이 16진수로 표현되어 있다. 기본적으로 압축 해제 방법은 다음 몇가지 명령어들이 기본이다.

tar 아카이브 대상에는 다음 명령어로 압축해제할 수 있고,

tar xf data.tar

-x > 압축 해제 옵션 -f > tar 아카이브 지정 옵션 bz2 아카이브 대상에는 다음 명령어를,

bunzip2 data.bz2

gz 아카이브 대상에는 다음 명령어를 통해 해제할 수 있다.

gzip -d data.gz

-d > 압축 해제 옵션 위의 세 명령어가 압축 해제의 기본이다.

그럼 이제 본격적으로 data를 풀어보자.

우선 16진수로 표현된 파일을 바이너리 파일로 변경해야할 필요가 있다.

ASCII text 형식의 파일이 16진수로 표현되어 있기 때문에 2진수로 표현을 바꿔서 cat 명령이나 file 명령을 통해 결과가 바뀌길 기대한다.

xxd -r data.txt data.xxd.r

해당 명령어는 hexdump 파일을 바이너리 파일로 변환해준다. -r 옵션을 제거하면 바이너리 파일을 hexdump로 변환하는 작업이 된다.

xxd -r 명령어를 통해 16진수 파일을 2진수 파일로 변경했더니 data2.bin 데이터를 gzip 압축방식으로 압축되었다는 것을 확인할 수 있었다.
gz 파일 확장자로 변경하고 압축 해제의 과정을 해본다.

이번 파일은 bzip2 방식으로 압축되어 있고, 다시 파일 확장자를 변경하고 압축해제의 과정을 거친다.

다시 gzip 방식의 압축 해제 처리,

이번엔 tar 방식으로 압축 해제, (이후 설명 생략)

마침내 data9.bin 까지 와서야 사람이 읽을 수 있는 단어들로 보이는 파일이 되었고 비밀번호를 찾을 수 있었다.
반복된 압축은 사람을 너무 피곤하게 만든다…

passwd : FO5dwFsc0cbaIiH0h8J2eUks2vdTDwAn
다음 문제로!