Principe:
Décompresser un chunk IDAT pour récupérer une nouvelle image PNG avec le flag
Infos (cf menu latéral):
🚩 Flaggué! +991 points gagnés —
💾 Téléchargez les fichiers du challenge
404CTF{z71ll_0b3z3_&_st1ll_h4d_s3cr3tz_4_U}
Le challenge
Gros IDAT
pngsplit on voit que des chunk IDAT sont assez gros: la plupart font 8192 octets, l'un fait 2213 et un autre 312240
8192 bytes sauf le dernier, plus petit
On peut donc suspecter que les données excédentaires sont dans le chunk IDAT le plus gros, de 312240 bytes
Décoder le chunk
pngsplit) et on cherche ce qu'il peut être
J'avais oublié de supprimer les 8 premiers bytes du chunk, qui sont sa taille et le IDAT
IDAT utilisable dans un autre PNG, j'ai donc reconstruit un PNG avec sa signature, son IHDR, le IDAT et un IEND: rien
Si l'image résultante est grise, on notera quand même que le lecteur PNG n'a pas planté: on n'est donc pas trop loin de la vérité et le IDAT trouvé est un IDAT valide syntaxiquement
5B pouvait devenir MZ marquant un fichier exécutable, mais nonzlib
IEND: aurait-on décompressé ce qui serait de nouveau un PNG?
Flag: 404CTF{z71ll_0b3z3_&_st1ll_h4d_s3cr3tz_4_U}