Durant l'année ESD à l'ENI un camarade à créer un challenge histoire de se marrer entre promo (NANTES vs RENNES) Enjoy :)

On commence par récupérer le fichier challenge (Il s'agit d'un ZIP) puis par le dézipper

Ohh une jolie photo du meilleur centre de formation au monde

en regardant rapidement le fichier la taille m'interpelle ...

$du -sh chall.png

472K	chall.png

$file chall.png 

chall.png: PNG image data, 791 x 791, 8-bit/color RGBA, non-interlaced

Waooh 472 Ko une photo avec une si petite dimension, troublant ...

Hop un petit binwalk la dessus m'en dira plus

$binwalk chall.png

0             0x0             PNG image, 791 x 791, 8-bit/color RGBA, non-interlaced
41            0x29            Zlib compressed data, compressed
175030        0x2ABB6         Zlib compressed data, default compression
431421        0x6953D         Zip archive data, encrypted at least v2.0 to extract, compressed size: 47625, uncompressed size: 90624, name: programme.exe
479276        0x7502C         End of Zip archive, footer length: 22

Un zip contenant un executable, je comprend mieux, go extraire (binwalk -e chall.png)

En essayant de dézipper le nouveau ZIP un mot de passe est demandé, l'image doit contenir d'autres informations. Go utiliser le JOKER stegoveritas

$stegoveritas chall.png

Checking for trailing data
Discovered Trailing Data:
b'PK\x03\x04\x14\x00\x01\x08\x00\x00\x8c
...
Attempting to brute force LSB items
Trying 0.0.0
Trying 1.1.1
...
Found something worth keeping!
ISO-8859 text, with very long lines, with no line terminators
...

Cool, pas mal de donnée récupérée la réponse est sûrement dedans. En regardant les résultats une image semble répondre au besoin

Un jolie QRcode, go reverser ça !

$zbarimg chall.png_Blue_0.png 

QR-Code:This is not a flag but a password :

eNI_R3nNES_VS_3NI_N@Ntes

Après avoir dézipper le zip avec le mot de passe précédent nous récupérons l’exécutable au format Windows PE ainsi qu'un deuxième ZIP.

A l'aide du soft PE Explorer assez "User Friendly" le reverse du soft permet d'obtenir un fichier texte contenant du base64

$echo "VGhpcyBpcyBub3QgYSBmbGFnIGJ1dCBhIHBhc3N3b3JkIDogWW91UkVnMDBkTXlMMHJkIQ==" | base64 -d

This is not a flag but a password : YouREg00dMyL0rd!

Yeaaah le pass pour le deuxième ZIP, on obtient un PDF, go l'analyser !

$peepdf -i -f 'Une souris verte.pdf'

File: Une souris verte.pdf
MD5: 5dd33cefd0b9df6c316747b43e3482ab
Size: 273060 bytes
Version: 1.5
Binary: True
Linearized: False
Encrypted: False
Updates: 2
Objects: 40
Streams: 14

Catalog: 1
	Info: 18
	Objects (13): [3, 18, 36, 37, 38, 45, 46, 47, 48, 49, 50, 51, 54]
		Errors (7): [37, 45, 46, 47, 48, 49, 50]
	Streams (8): [37, 45, 46, 47, 48, 49, 50, 54]
		Encoded (7): [37, 45, 46, 47, 48, 49, 50]
		Decoding errors (7): [37, 45, 46, 47, 48, 49, 50]
...

Visiblement il contient du stream et des objets et en cherchant un peu ...

PPDF> tree

/Page (3)
	Unknown (2)
	Unknown (4)
	Unknown (8)
	Unknown (5)
	Unknown (9)
	Unknown (11)
	Unknown (6)
	Unknown (16)
	array (51)
		/Annot (38)
			/filespec (36)
				stream (37)
			/Page (3)
			stream (45)
				stream (46)
					stream (47)
			stream (48)
				stream (49)
					stream (50)
/Info (18)
stream (54)


PPDF> info 37

Offset: 1060
Size: 213
MD5: 27e3c9fcf632ccbb4b1651a5366d11ac
Object: stream
Stream MD5: d41d8cd98f00b204e9800998ecf8427e
Raw Stream MD5: f45bde9d9234535a8244fc528a428897
Length: 203
Encoded: Yes
Filters: /FlateDecode
Filter Parameters: No
Decoding errors: Yes
References: []
Parsing Errors: 1

Le stream référencé 37 pèse 203 octets, ça sent le flag ... :)

$pdf-parser -o 37 -f -d flag.txt Une\ souris\ verte.pdf && cat flag.txt

I'm very impress, here's your flag : CTF_is-n0t_just_A_g@m€!

Remerciement spécial au créateur du challenge Benjamin Perrier, qui a dut se donner du mal à réaliser ce challenge (GG !)

https://fr.linkedin.com/in/benjamin-perrier-952ab0133

Clin d'oeil à sa signature en métadonnée du fichier source

$exiftool chall.png

ExifTool Version Number         : 11.16
File Name                       : chall.png
Directory                       : ../..
File Size                       : 468 kB
...
Artist                          : Perngrq ol Orawnzva CREEVRE RFQ 2018-2019

Perngrq ol Orawnzva CREEVRE RFQ 2018-2019

qui donne en ROT13

Created by Benjamin PERRIER ESD 2018-2019