Description
Resolution
Nous avons une image JPG à disposition :
J’ai commencé par jeter un coup d’oeil rapide au contenu de l’image :
curl http://static.wargame.ndh/hellofriend.jpg | more
On remarque qu’à la fin de l’image des chemins apparaissent :
WhoAmI.png Hello_friend/ Hello_friend/0/ Hello_friend/0/64.png Hello_friend/1/ Hello_friend/1/61.png Hello_friend/2/ Hello_friend/2/72.png Hello_friend/3/ Hello_friend/3/6b.png Hello_friend/4/ Hello_friend/4/63.png Hello_friend/5/ Hello_friend/5/30.png Hello_friend/6/ Hello_friend/6/64.png Hello_friend/7/ Hello_friend/7/65.png Hello_friend/8/ Hello_friend/8/IsItReal.jpg
Je regarde le contenu exacte à l’aide de binwalk :
binwalk hellofriend.jpg DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 0 0x0 JPEG image data, JFIF standard 1.01 382 0x17E Copyright string: "Copyright (c) 1998 Hewlett-Packard Company" 3192 0xC78 TIFF image data, big-endian, offset of first image directory: 8 116141 0x1C5AD Zip archive data, at least v2.0 to extract, compressed size: 6264, uncompressed size: 6376, name: WhoAmI.png 122445 0x1DE4D Zip archive data, at least v1.0 to extract, name: Hello_friend/ 122488 0x1DE78 Zip archive data, at least v1.0 to extract, name: Hello_friend/0/ 122533 0x1DEA5 Zip archive data, encrypted at least v2.0 to extract, compressed size: 4381, uncompressed size: 4882, name: Hello_friend/0/64.png 126981 0x1F005 Zip archive data, at least v1.0 to extract, name: Hello_friend/1/ 127026 0x1F032 Zip archive data, encrypted at least v2.0 to extract, compressed size: 4381, uncompressed size: 4882, name: Hello_friend/1/61.png 131474 0x20192 Zip archive data, at least v1.0 to extract, name: Hello_friend/2/ 131519 0x201BF Zip archive data, encrypted at least v2.0 to extract, compressed size: 4381, uncompressed size: 4882, name: Hello_friend/2/72.png 135967 0x2131F Zip archive data, at least v1.0 to extract, name: Hello_friend/3/ 136012 0x2134C Zip archive data, encrypted at least v2.0 to extract, compressed size: 4381, uncompressed size: 4882, name: Hello_friend/3/6b.png 140460 0x224AC Zip archive data, at least v1.0 to extract, name: Hello_friend/4/ 140505 0x224D9 Zip archive data, encrypted at least v2.0 to extract, compressed size: 4381, uncompressed size: 4882, name: Hello_friend/4/63.png 144953 0x23639 Zip archive data, at least v1.0 to extract, name: Hello_friend/5/ 144998 0x23666 Zip archive data, encrypted at least v2.0 to extract, compressed size: 4381, uncompressed size: 4882, name: Hello_friend/5/30.png 149446 0x247C6 Zip archive data, at least v1.0 to extract, name: Hello_friend/6/ 149491 0x247F3 Zip archive data, encrypted at least v2.0 to extract, compressed size: 4381, uncompressed size: 4882, name: Hello_friend/6/64.png 153939 0x25953 Zip archive data, at least v1.0 to extract, name: Hello_friend/7/ 153984 0x25980 Zip archive data, encrypted at least v2.0 to extract, compressed size: 4381, uncompressed size: 4882, name: Hello_friend/7/65.png 158432 0x26AE0 Zip archive data, at least v1.0 to extract, name: Hello_friend/8/ 158477 0x26B0D Zip archive data, encrypted at least v2.0 to extract, compressed size: 101679, uncompressed size: 133658, name: Hello_friend/8/IsItReal.jpg 260229 0x3F885 Zip archive data, at least v1.0 to extract, name: Hello_friend/9/ 260274 0x3F8B2 Zip archive data, encrypted at least v2.0 to extract, compressed size: 286495, uncompressed size: 298687, name: Hello_friend/9/3xploits.jpg 549041 0x860B1 End of Zip archive
On constate que l’image contient un fichier zip, nous tentons de l’extraire avec la commande :
unzip hellofriend.jpg => [hellofriend.jpg] Hello_friend/0/64.png password:
Un mot de passe nous est demandé.
Pour trouver le mot de passe il a fallu le deviner (classique à la NDH).
En se référant à l’énoncé et au nom de l’image « Hello Friend », nous tombons rapidement sur la série TV « Mr Robots ».
En regardant la page wikipédia ( https://fr.wikipedia.org/wiki/Mr._Robot_(s%C3%A9rie_t%C3%A9l%C3%A9vis%C3%A9e) ) nous trouvons rapidement le mot de passe de l’archive : fsociety
unzip hellofriend.jpg => [hellofriend.jpg] Hello_friend/0/64.png password: fsociety
Une fois décompressé nous obtenons l’arborescence suivante :
. ├── Hello_friend │ ├── 0 │ │ └── 64.png │ ├── 1 │ │ └── 61.png │ ├── 2 │ │ └── 72.png │ ├── 3 │ │ └── 6b.png │ ├── 4 │ │ └── 63.png │ ├── 5 │ │ └── 30.png │ ├── 6 │ │ └── 64.png │ ├── 7 │ │ └── 65.png │ ├── 8 │ │ └── IsItReal.jpg │ └── 9 │ └── 3xploits.jpg ├── hellofriend.jpg └── WhoAmI.png
A l’aide de binwalk nous identifions rapidement une archive dans l’image « 3xploits.jpg » :
binwalk Hello_friend/9/3xploits.jpg DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 186158 0x2D72E Zip archive data, encrypted at least v2.0 to extract, compressed size: 112361, uncompressed size: 302979, name: d3bug.png 298665 0x48EA9 End of Zip archive
La encore l’archive est protégé par un mot de passe.
unzip Hello_friend/9/3xploits.jpg => [Hello_friend/9/3xploits.jpg] d3bug.png password:
Le nom des images png ressemble à de l’hexadecimal, nous tentons donc de convertir en chaine de caractère :
echo -en '6461726b63306465' | xxd -r -p => darkc0de
Nous tentons donc de mettre cette valeur en tant que mot de passe :
unzip Hello_friend/9/3xploits.jpg => [Hello_friend/9/3xploits.jpg] d3bug.png password: darkc0de
Le mot de passe est incorrect.
Une recherche sur Google nous amène vers un site « WPA / WPA2 Word List Dictionaries » sur lequel est à disposition un dictionnaire « darkc0de.lst ».
Je télécharge donc le dictionnaire.
Ensuite j’extrais le fichier ZIP afin de le bruteforcer avec fcrackzip :
binwalk -e Hello_friend/9/3xploits.jpg
Une extraction est réalisée par binwalk :
. ├── _3xploits.jpg.extracted │ ├── 2D72E.zip │ └── d3bug.png
Nous avons désormais le fichier ZIP à disposition, après installation de fcrackzip (via apt) nous pouvons bruteforcer le fichier zip :
fcrackzip -v -D -u -p ~/CTFs/passwords/darkc0de.lst _3xploits.jpg.extracted/2D72E.zip found file 'd3bug.png', (size cp/uc 112361/302979, flags 9, chk be20) PASSWORD FOUND!!!!: pw == How do you like me now?
Nous décompressons l’archive avec le mot de pass « How do you like me now? » :
unzip _3xploits.jpg.extracted/2D72E.zip [_3xploits.jpg.extracted/2D72E.zip] d3bug.png password: How do you like me now?
Il nous reste plus qu’à regarder l’image PNG contenant le flag :
Challenge dans la categorie web… Je ne comprendrai jamais ces classifications…