Le crackme étudié dans cet article provient
d’ici.
Avec ce troisième crackme, on reste dans du très simple mais ça va
nous permettre de voir une nouvelle approche lorsque l’on veut faire de la
rétroingénierie sur des exécutables dynamiques.
Bon, déjà voyons à quoi nous avons à faire.
Ok, celui-ci prend le mot de passe via les arguments de la ligne de commande.
Commençons par le traditionnel strings qui, comme on pouvait s’y
attendre, ne nous apprend pas grand-chose.
Il y a bien quelques chaînes qui ressemblent vaguement à un mot de passe, mais
aucune ne fonctionne.
Voyons à quel type de binaire nous avons là :
Hum, intéressant : cet exécutable est lié dynamiquement. Voyons donc ce que
nous donne un petit ltrace :
Hum, c’est très instructif. On voit que le code fait un strcmp
contre une chaîne un peu bizarre. Essayons d’utiliser cette chaîne bizarre en
tant que mot de passe. Étant donné que la chaîne contient la séquence de
caractères de contrôles \r\n, je préfère utiliser Ruby pour
passer la chaîne en argument (d’autres solutions étaient bien sûr possible)
plutôt que d’essayer de la taper directement dans le shell.