Pré-analyse avec file
L’épreuve fournit un unique fichier rituel-du-boutisme.img
.
On l’analyse avec file
pour savoir si c’est une image d’un disque entier ou seulement d’une partition :
$ file rituel-du-boutisme.img
rituel-du-boutisme.img: Linux rev 1.0 ext4 filesystem data, UUID=b10781e9-d553-4053-bb93-064cdc03ed6b (extents) (64bit) (large files) (huge files)
rituel-du-boutisme.img
est donc une image d’une partition ext4.
Tentative de récupération avec testdisk
TestDisk est un outil qui permet de carver des images de partitions ou de disques afin d’en extraire les fichiers. Entre autre, l’outil permet de lister et de tenter de reconstruire les fichiers effacés. On tente l’outil sur notre image :
$ testdisk rituel-du-boutisme.img
Select a media (use Arrow keys, then press Enter):
>Disk rituel-du-boutisme.img - 534 MB / 510 MiB
>[Proceed ]
Disk rituel-du-boutisme.img - 534 MB / 510 MiB
Please select the partition table type, press Enter when done.
>[None ] Non partitioned media
Disk rituel-du-boutisme.img - 534 MB / 510 MiB - CHS 66 255 63
Partition Start End Size in sectors
> P ext4 0 0 1 65 4 3 1044480
>[ List ] (List and copy files)
On obtient alors la liste des fichiers à la racine de la partition ext4.
En plus du dossier habituel lost+found
, on observe deux fichiers flag.txt
et file
:
P ext4 0 0 1 65 4 3 1044480
Directory /
drwxr-xr-x 0 0 1024 4-Apr-2021 00:17 .
drwxr-xr-x 0 0 1024 4-Apr-2021 00:17 ..
drwx------ 0 0 12288 4-Apr-2021 00:16 lost+found
*-rw-r--r-- 0 0 0 4-Apr-2021 00:17 flag.txt
*-rw-r--r-- 0 0 0 4-Apr-2021 00:17 file
Ces fichiers ont une taille de 0 octets, c’est mauvais signe !
Si on tente de les sélectionner (touche :
) puis les extraire (touche C
), on obtient bien 2 fichiers vides.
Tentative de récupération avec strings
On prend un peu de recul avec l’épreuve. On sait que :
- On a une image d’une partition ext4.
- Cette partition a contenu un jour le fichier
flag.txt
. - Il n’y a pas de compression, ou de chiffrement.
Dans un tel scénario, il devrait être possible de carver l’image directement avec strings
.
Une tentative strings -n10 rituel-du-boutisme.img
ne donne rien d’intéressant.
Le boutisme correspond à la notion de “endianness”, le nom de l’épreuve nous hint qu’il y a potentiellement un boutisme à prendre en compte.
On lit la documentation de strings
et découvre l’option -e
qui permet de préciser le boutisme.
On tente un boutisme 16-bit big-endian, et on obtient le flag :
$ strings -n20 rituel-du-boutisme.img -eb
FCSC{6a8024a83d9ec2d1a9c36c51d0408f15836a043ae0431626987ce2b8960a5937}