Principe:
Extraire les données excédentaires à la fin d'un fichier (une image PNG)
Infos (cf menu latéral):
🚩 Flaggué! +358 points gagnés —
💾 Téléchargez les fichiers du challenge
404CTF{0b3z3_f1l3_h4z_zup3r_spy_s3cr37}
Le challenge
Exiftool
exiftool par exemple) on repère un Warning: des données excédentairesExtraction
Notez que ce script est faux: il faut extraire à partir de IEND + 8 chars: un offset +4 pour la longueur de la chaine IEND et un autre offset +4 pour la longueur du CRC32 qui la suit!
Le fichier de données ressemble beaucoup à un header ZIP (PK et, plus loin, des chemins de fichiers). Si je n'avais pas fait d'erreur d'offset dans mon script, j'aurai directement eu un ZIP.
Savoir identifier des formats de fichiers en un coup d'oeil, surtout pour les plus courants, c'est très utile!
PK, ce qui nous donne un Zip archive dataFlag
Certains éditeurs PNG n'ouvriront pas le fichier car un chunk sTeG s'y trouve et que ce type de chunck n'exste pas dans la documentation. Pour éviter cela, utilisez un autre visionneur (nota: je ne sais plus lequel j'avais utilisé!) ou patchez le fichier en remplaçant le nom sTeG du chunck par tEXt (hexa 74 45 58 74).
Notez que ce chunck ne contient aucune donnée réelle
Il est généralement conseillé de ne pas supprimer un chunck, mais de le "commenter" (en faisant de ce chunck un tEXt par exemple qui n'influencera pas le parsing) car supprimer des données dans le fichier changera le position (offset) des autres données, ce qui pourrait poser des problèmes en cascade.
Flag: 404CTF{0b3z3_f1l3_h4z_zup3r_spy_s3cr37}