PROJET AUTOBLOG


Le blog de Seboss666

Site original : Le blog de Seboss666

⇐ retour index

Writeup #LeHACK 2019, StegCryptoDIY #1

mardi 9 juillet 2019 à 13:41

Autre challenge du wargame de LeHACK, dont j’avais perdu certains éléments mais que j’ai refait ce matin (j’avais gardé le matériau de base), un « simple » exercice de stéganographie, comme son nom l’indique. En deux parties, mais je n’ai validé que la première.

Voici donc l’image qui servait de base à ce challenge en deux parties :

Les couleurs auraient pu indiquer quelque chose au niveau des pixels, mais rien à noter quand on joue avec les outils de GIMP. Pareil dans les métadonnées, cependant, en repassant sur un basique strings, on découvre un truc :

$ strings leHACK19_chall.png
duMBTiA9IDExNzU1MDY4OTQ0MTQyOTY5NDk4NzQzMjQ1OTg0NzYxMTgxMzI1NjA1MzA0NjI1Mjg2OTU4NzIxMzkxNzY2MDkxMjgzMTMyMzk4NDM3NjQ1MDM4MzQ5Nzc1ODk4OTIzNDY1MzMxMjYwMzA4MDY0NjExMTY3OTI2MTg3Mzk5Mzg0NzIzMzYwOTQxODgzNzMyMTc0OTAxNjY2ODAzICxnMSA9IDM4MDg4MTk1MDU1NjQ5OTk1NDUyNTI2MjM2MzExOTI1MDMyMTIxODY1OTgwODg1NTUzNDM3MzgxMTExNjUzODI2MjM0MjE3MjAxMTk4Mzc1NDQ2NTgxNzM4MjI0NjE4MzQwNzYzNDc3OTUxNTkzNjY1OTMxNzc2NjkwNTg3MDUwODcyNjY4OTg0NDQ4MTg5MjY2Njg1ODQ1MTksIGcyID0gODcyMTc4NzQwMDMyNzc4Mzc0ODAxNDg0OTAzNzYyNjAzOTM5NzgwNzYxMjM3MjgwNDAxNjY0MzY1MzA0NzU3NTk3NjAwOTgyNzAwMzQ0Nzc3ODg2MTI2MjAzNjc1MjMyNjgyNzYxMzA3ODM0NjIyNTE5MjU4MTcwODI0MDgyMDMyNTg2NzY1ODc0MjA3ODY5NDQ0NTY3Nzg3NyBJIHVzZSB0aGlzIGZ1bmN0b25zIGZvciBlbmNpcGhlcmluZyBvdXIgc2tleSA6IGVuY2lwaGVyKGludC5mcm9tX2J5dGVzKHNrZXksJ2JpZycpLGcxLGcyLE4pIHdpdGggZGVmIGVuY2lwaGVyKG0sZzEsZzIsTik6IHMxPXJhbmRvbS5yYW5kcmFuZ2UoMioqMTI3LDIqKjEyOCkgczI9cmFuZG9tLnJhbmRyYW5nZSgyKioxMjcsMioqMTI4KSByZXR1cm4gKG0qcG93KGcxLHMxLE4pKSVOLCAobSpwb3coZzIsczIsTikpJU4gYW5kIGhlcmUgaXMgYSBmbGFnOiBsZWhhY2syMDE5e2FlZjk1NTZhNTc1Y2M5ZGU4ZmM5NjA5YmQwMzRkNjNmZTBhMDE0NzBlYjQwMTM3ODI1M2Y3MjNiYmM1Y2MxNmN9

Et dans l’intitulé, on nous dit que Dumb et Dumby cherchent à communiquer de manière sécurisée. Ben voilà, on a un début de piste. Je stocke cette chaîne dans un fichier test.txt, et j’ai joué la carte de l’évidence, et tenté le base64 :

$ base64 -d test.txt > result.txt
$ cat result.txt
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}

Bon, lors de la validation du flag, il y a eu un léger couac, car en fait ils avaient paramétré les résultats pour que le plus évident, celui qu’on voit au bout de la ligne, soit la deuxième étape. Je suis allé voir les orgas, au début on m’a dit que non, surtout qu’on peut pas valider le deuxième tant qu’on a pas validé le premier, et pendant mon argumentation plusieurs compétiteurs sont venus se plaindre du même challenge. Ca a pris une seconde à faire la correction, et j’ai pu valider le challenge 🙂

Je n’ai par contre pas réussi à comprendre le fonctionnement pour la deuxième étape, c’est un algorithme mais comme je suis pas bon, et qu’il semble y avoir une composante random, je suis un peu perdu. Mais comme il semble que j’ai tous les éléments en ma possession, je pense me remettre dessus à froid pour voir si j’ai pas moyen de moyenner un truc.