Niveau 13

Niveau 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

Hex dump on Wikipedia

Cette exercice présente une difficulté largement supérieure à celle des précédents. L'objectif ici est de décompresser plusieurs fois un fichier, sans connaitre à priori les formats de compression successifs utilisés.

En se connectant en tant qu'utilisateur bandit12 on trouve un fichier data.txt dont le contenu est compressé. Commençons par créer un dossier qui contiendra les différents fichiers décompressés, puis copions le fichier data.txt dans celui-ci :

bandit12@bandit:~$ mkdir /tmp/level13
bandit12@bandit:~$ cp data.txt /tmp/level13
bandit12@bandit:~$ cd /tmp/level13

Si l'on utilise la commande file, on obtient l'information suivante :

bandit12@bandit:/tmp/level13$ file data.txt
data.txt: ASCII text

En se basant sur le lien présent dans l'énoncé, on peut supposer que le fichier est un hexdump et essayer de le décompresser :

bandit12@bandit:/tmp/level13$ xxd -r data.txt > data2.txt
bandit12@bandit:/tmp/level13$ file data2.txt
data2.txt: gzip compressed data, was "data2.bin", last modified: Thu May  7 18:14:30 2020, max compression, from Unix

On obtient donc un fichier gzip, lui aussi décompressible :

bandit12@bandit:/tmp/level13$ cat data2.txt | gzip -d > data3.txt
bandit12@bandit:/tmp/level13$ file data3.txt
data3.txt: bzip2 compressed data, block size = 900k

Ce 3ème fichier étant au format bzip2, on peut utiliser la commande suivante :

bandit12@bandit:/tmp/level13$ cat data3.txt | bzip2 -d > data4.txt
bandit12@bandit:/tmp/level13$ file data4.txt
data4.txt: gzip compressed data, was "data4.bin", last modified: Thu May  7 18:14:30 2020, max compression, from Unix

Puis de nouveau gzip :

bandit12@bandit:/tmp/level13$ cat data4.txt | gzip -d > data5.txt
bandit12@bandit:/tmp/level13$ file data5.txt
data5.txt: POSIX tar archive (GNU)

Puis tar :

bandit12@bandit:/tmp/level13$ tar xvf data5.txt
data5.bin
bandit12@bandit:/tmp/level13$ file data5.bin
data5.bin: POSIX tar archive (GNU)

Puis encore tar :

bandit12@bandit:/tmp/level13$ tar xvf data5.bin
data6.bin
bandit12@bandit:/tmp/level13$ file data6.bin
data6.bin: bzip2 compressed data, block size = 900k

Puis un enchainement :

bandit12@bandit:/tmp/level13$ cat data6.bin | bzip2 -d > data7.txt
bandit12@bandit:/tmp/level13$ file data7.txt
data7.txt: POSIX tar archive (GNU)

De nouveau tar :

bandit12@bandit:/tmp/level13$ tar xvf data7.txt
data8.bin
bandit12@bandit:/tmp/level13$ file data8.bin
data8.bin: gzip compressed data, was "data9.bin", last modified: Thu May  7 18:14:30 2020, max compression, from Unix

Puis gzip :

bandit12@bandit:/tmp/level13$ cat data8.bin | gzip -d > data9.txt
bandit12@bandit:/tmp/level13$ file data9.txt
data9.txt: ASCII text
bandit12@bandit:/tmp/level13$ cat data9.txt
The password is 8ZjyCRiBWFYkneahHwxCv3wb2a1ORpYL

Le mot de passe pour le niveau suivant est donc 8ZjyCRiBWFYkneahHwxCv3wb2a1ORpYL