Analyse du fichier
Ce challenge a été vu lors du challenge à LeHack 2019. Rien de compliqué. On va y aller étape par étape.
Dans une premier temps, téléchargez le fichier leHACK19_chall.png
.
Vous pouvez le regarder dans une visionneuse pendant des heures, vous n’y trouverez rien d’intéressant.
Mais nous pouvons analyser les métadonnées de l’image grâce à la commande strings
.
$ strings leHACK19_chall.png
[...]
[6X9
'js*
Y[U!H
=|pIV
eii
x/h9
|dyW
y+,!f
h0za@
-*36,
gKyv
@duMBTiA9IDExNzU1MDY4OTQ0MTQyOTY5NDk4NzQzMjQ1OTg0NzYxMTgxMzI1NjA1MzA0NjI1Mjg2OTU4NzIxMzkxNzY2MDkxMjgzMTMyMzk4NDM3NjQ1MDM4MzQ5Nzc1ODk4OTIzNDY1MzMxMjYwMzA4MDY0NjExMTY3OTI2MTg3Mzk5Mzg0NzIzMzYwOTQxODgzNzMyMTc0OTAxNjY2ODAzICxnMSA9IDM4MDg4MTk1MDU1NjQ5OTk1NDUyNTI2MjM2MzExOTI1MDMyMTIxODY1OTgwODg1NTUzNDM3MzgxMTExNjUzODI2MjM0MjE3MjAxMTk4Mzc1NDQ2NTgxNzM4MjI0NjE4MzQwNzYzNDc3OTUxNTkzNjY1OTMxNzc2NjkwNTg3MDUwODcyNjY4OTg0NDQ4MTg5MjY2Njg1ODQ1MTksIGcyID0gODcyMTc4NzQwMDMyNzc4Mzc0ODAxNDg0OTAzNzYyNjAzOTM5NzgwNzYxMjM3MjgwNDAxNjY0MzY1MzA0NzU3NTk3NjAwOTgyNzAwMzQ0Nzc3ODg2MTI2MjAzNjc1MjMyNjgyNzYxMzA3ODM0NjIyNTE5MjU4MTcwODI0MDgyMDMyNTg2NzY1ODc0MjA3ODY5NDQ0NTY3Nzg3NyBJIHVzZSB0aGlzIGZ1bmN0b25zIGZvciBlbmNpcGhlcmluZyBvdXIgc2tleSA6IGVuY2lwaGVyKGludC5mcm9tX2J5dGVzKHNrZXksJ2JpZycpLGcxLGcyLE4pIHdpdGggZGVmIGVuY2lwaGVyKG0sZzEsZzIsTik6IHMxPXJhbmRvbS5yYW5kcmFuZ2UoMioqMTI3LDIqKjEyOCkgczI9cmFuZG9tLnJhbmRyYW5nZSgyKioxMjcsMioqMTI4KSByZXR1cm4gKG0qcG93KGcxLHMxLE4pKSVOLCAobSpwb3coZzIsczIsTikpJU4gYW5kIGhlcmUgaXMgYSBmbGFnOiBsZWhhY2syMDE5e2FlZjk1NTZhNTc1Y2M5ZGU4ZmM5NjA5YmQwMzRkNjNmZTBhMDE0NzBlYjQwMTM3ODI1M2Y3MjNiYmM1Y2MxNmN9
IEND
Si nous sommes vigilent aux dernières lignes, nous pouvons penser que c’est une chaîne de caractère au format Base 64.
Extraction des données
La commande suivante va être longue mais expliquons la un instant.
Voici la commande :
strings leHACK19_chall.png | grep '@du' | sed 's/@//' | base64 -d
Tout d’abord, strings leHACK19_chall.png
permet de récupérer les metadonnées.
Ensuite, grep '@du'
permet de récupérer uniquement la dernière ligne commançant par @du
.
Maintenant, sed 's/@//
permet de supprimer @
et laisser le reste.
Enfin, base64 -d
permet de décoder la chaine de caracter dans stdin. Le tout sera afficher dans stdout.
v�N = 11755068944142969498743245984761181325605304625286958721391766091283132398437645038349775898923465331260308064611167926187399384723360941883732174901666803 ,g1 = 3808819505564999545252623631192503212186598088555343738111165382623421720119837544658173822461834076347795159366593177669058705087266898444818926668584519, g2 = 8721787400327783748014849037626039397807612372804016643653047575976009827003447778861262036752326827613078346225192581708240820325867658742078694445677877 I use this functons for enciphering our skey : encipher(int.from_bytes(skey,'big'),g1,g2,N) with def encipher(m,g1,g2,N): s1=random.randrange(2**127,2**128) s2=random.randrange(2**127,2**128) return (m*pow(g1,s1,N))%N, (m*pow(g2,s2,N))%N and here is a flag: lehack2019{aef9556a575cc9de8fc9609bd034d63fe0a01470eb401378253f723bbc5cc16c}
Vous obtenez un code source python qui, à l’époque, devait être récupérer pour la suite des challenges mais dans notre cas, ne récupérez uniquement le flag de fin lehack2019{aef9556a575cc9de8fc9609bd034d63fe0a01470eb401378253f723bbc5cc16c}
Alternative
Pour extraire les données, voici une alternative plus graphique.
Rendez-vous sur le site FotoForensics et téléverser l’image.
Sur la gauche, vous trouverez le menu ci-dessous.
Sélectionnez Strings. (Et oui comme le nom de la commande précédente !)
Allez tout en bas et vous trouverez la chaîne caractère à décoder.
Copiez-collez le sans le @
et aller sur le site CyberChef.
Dans le menu de gauche glissez “From Base64” et collez votre presse-papier dans le champ “Input”
Ainsi, dans le champ “Output” vous pourrez récupérer le flag.