La fonte des hashs(Cryptanalyse) - 404CTF 2022

La fonte des hashs(Cryptanalyse) - 404CTF 2022

Fichiers du challenge Principe:
Brute-forcer un (mauvais!) algorithme de hashage pour retrouver le texte original

Le challenge

On va devoir reverse un algorithme de hashage custom (dispo ici) pour retrouver le flag à partir de son "hash"

Obfusqué?

L'algorithme de hashage est obfusqué, donc j'essaie déjà de le déobfusquer en affichant cahaque variable
On arrive à un gros base64
On le décode, et on obtient encore du code assez cryptique (mais avec une URL source)
Pour vérifier que je n'ai rien cassé dans ce premier déchiffrement, je hash mon IOC: le même résultat apparait, donc, tout va bien, mon déchiffrage n'a rien altéré

C'est là où je m'aperçois que cet algo de hashage est très mauvais, puisqu'il semble que les premiers caractères du chiffré n'impactent que les premiers caractères du hashé!

Pour qu'un algo de hashage soit potable, il faut que la moindre modification d'un caractère du message original change "la totalité" du résultat du hash. D'où l'importance de ne pas réinventer ce genre d'algo!

Retour du bruteforce

Je change alors d'approche, et me décide à tenter un brute force lettre à lettre.

En hashant 404C (début du flag standard 404CTF{...}), je retombe bien sur le début du hash qui m'est fourni
Il n'y a plus qu'à se coder un petit brute-forceur lettre à lettre

Dans ce brute-forceur, on change la N-eme lettre et si on a une correspondance un peu plus "longue" (2 caractères de plus) avec le hash à reverse, c'est que la N-eme lettre est correcte

Et on obtient le flag: 404CTF{yJ7dhDm35pLoJcbQkUygIJ}

Voyant que le contenu du flag ne voulait rien dire, j'ai eu peur de m'être planté. Mais en pratique, ce flag était le bon (et ce n'était pas un base64, ni dans un sens ni dans l'autre)

Fichiers du challenge

↩ Retour à la liste des challenges