Hideme – PicoCTF 2023

Forensics 2025-05-15 · PicoCTF 2023 · Par CTFdojo · ⏱ ... · 👁 ... vues
𝕏 Partager
TL;DR

Une image PNG contient un fichier ZIP caché à l'intérieur. On le détecte avec binwalk, on l'extrait, et le flag se trouve dans le dossier caché.

PlateformePicoCTF 2023
CatégorieForensics
Points100 pts
DifficultéDébutant
Outils binwalk file unzip

Description du challenge

Le challenge fournit une image flag.png et demande simplement :

"Someone hid a flag in this image. But can you find it?"

L'image s'ouvre normalement dans un viewer — elle affiche une image classique. Rien de suspect à première vue. C'est là que la magie des outils forensics entre en jeu.

Concepts clés — La stéganographie

La stéganographie consiste à cacher des données à l'intérieur d'autres fichiers. Contrairement à la cryptographie qui chiffre les données, la stéganographie les dissimule.

Une technique courante en CTF : cacher un fichier ZIP à la fin d'une image PNG. Le viewer d'image ignore tout ce qui vient après la fin de l'image (IEND), mais un fichier ZIP lu depuis la fin du fichier est parfaitement valide.

Étape 1 — Identifier le fichier

On commence toujours par la commande file pour confirmer la nature du fichier :

$ file flag.png
flag.png: PNG image data, 512 x 512, 8-bit/color RGBA, non-interlaced

C'est bien un PNG. Mais on va creuser avec binwalk.

Étape 2 — Scanner avec binwalk

binwalk est un outil qui scanne un fichier à la recherche de signatures de fichiers connus (ZIP, ELF, JPEG, etc.) cachés à l'intérieur.

$ binwalk flag.png

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             PNG image, 512 x 512, 8-bit/color RGBA, non-interlaced
39739         0x9B3B          Zip archive data, at least v1.0 to extract
39906         0x9BE2          Zip archive data, at least v2.0 to extract, name: secret/flag.png
40202         0x9D0A          End of Zip archive, footer signature

Bingo. binwalk détecte un fichier ZIP intégré à l'offset 39739, qui contient lui-même un fichier secret/flag.png.

Étape 3 — Extraire le contenu

On extrait automatiquement tous les fichiers détectés avec le flag -e :

$ binwalk -e flag.png

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             PNG image...
39739         0x9B3B          Zip archive data...

$ ls
flag.png  _flag.png.extracted/

$ ls _flag.png.extracted/
9B3B.zip  secret/

$ ls _flag.png.extracted/secret/
flag.png

Étape 4 — Lire le flag

On ouvre l'image extraite secret/flag.png dans un viewer d'image — le flag y est affiché en texte.

$ eog _flag.png.extracted/secret/flag.png
# ou : xdg-open, feh, display...
🚩 picoCTF{flag intentionnellement masqué}

Le flag est volontairement caché — suis la méthode, tu l'as mérité. 💪

Ce qu'on retient

Ce challenge enseigne deux réflexes fondamentaux en forensics CTF :

Dans un vrai contexte de sécurité, cette technique est utilisée dans les malwares pour exfiltrer des données cachées dans des images en apparence innocentes.

Installer binwalk

# Debian / Ubuntu / Kali
$ sudo apt install binwalk

# macOS
$ brew install binwalk

# pip
$ pip install binwalk

Ressources

Tu as une question ou une autre approche ?

Discute de ce writeup avec la communauté dans le Discord CTFdojo.

Rejoindre le Discord →