CTF - Reverse Engineering - Keygen
Ce CTF propose un programme simple de type "register key". Lorsqu'on entre un nom d'utilisateur et un mot de passe, il affiche un message de réussite uniquement si la clé est correcte.
Après analyse dans un débogueur, on constate que le programme :
On peut juste nopper l'instruction qui gère la vérification et on est considéré comme enregistré :
Sinon on peut juste essayer de générer un keygen. En analysant le programme on remarque qu'il' :
z
, Z
ou 9
a
Résultat : le programme génère dynamiquement une clé à partir de l'username saisi.
// Exemple avec username : alice
#include
#include
#include
int main() {
char name[10];
char key[50] = "";
int index = 0;
printf("Entrez votre pseudo : ");
scanf("%s", name);
for (int i = 0; i < strlen(name); i++) {
char xx = name[i];
if (xx == 'Z' || xx == 'z' || xx == '9') {
xx = xx - 1;
}
key[index++] = xx + 1;
key[index++] = 'a' + i;
}
key[index] = '\0';
printf("Voici la cle : %s\n", key);
return 0;
}
Pour l'username alice
, la clé générée est Bambjcddfe.
Le message "Register complete!!!" s'affiche après avoir saisi la bonne clé.
➢ OllyDbg : pour analyser le binaire
Notre cerveau :)