En lisant le sujet du chall, on comprend vite que le flag se trouve dans une image qui est dite corrumpue.
Je télécharge l’image PNG et utilise la commande file
pour voir ce qu’est ce fichier pour le système. Il est considéré comme un fichier de données. Comme s’il manquait quelque chose pour le définir en tant que PNG. Si j’essaie d’ouvrir le fichier avec feh
, un message d’erreur nous prévient sur l’absence de bytes magiques.
Je vais me servir de xxd
pour voir le contenu en hexadécimal du fichier et on remarque dès le début un problème :
00000000: dead beef 0d0a 1a0a 0000 000d 4948 4452
DEADBEEF est utilisé comme valeur magique pour débugger. La première ligne d’un fichier constitue aussi souvent les headers de ce fichier, apportant des informations diverses et pas des valeurs de débug !
La documentation officielle du format PNG indique la signature de fichier / header / bytes magiques obligatoire pour tout fichier PNG. Ici se trouve la preuve qu’il manque quelque chose. Les fichiers PNG commencent toujours par une certaine suite de chiffres. J’ai alors modifié via Hexed.it les premières valeurs et retéléchargé l’image. Le flag apparait sous nos yeux ébahis.