failles dans un programme
bonjour à tous.je ne connais pas grand chose au C, mais je suis une formation en sécurité des SI et on nous a demandé d'identifier les failles dans 2 programmes pour pouvoir se connecter sans faire usage des mots de passe spécifiés du programme. Voici les 2 programmes :
PROGRAMME 1
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| #include <stdio.h>
char user_name[20] = " ";
char password[20] = " ";
char users[][2][20] =
{ { "root", "98765" },
{ "moi", "allo" },
{ "abc", "motdepasse" },
{ "", "" }
};
int check_name()
{
int i;
printf("Nom: "); gets(user_name);
printf("Mot de passe: "); gets(password);
for(i=0; users[i][0][0] != 0; i++)
{
if(strcmp(user_name, users[i][0]) == 0 &&
strcmp(password, users[i][1]) == 0)
return 1;
}
return 0;
}
void logon()
{
printf("Bienvenu sur ce systeme...\n");
exit(1);
}
void reject() |
PROGRAMME 2
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| #include <stdio.h>
char users[][2][20] =
{ { "root", "98765" },
{ "moi", "allo" },
{ "abc", "motdepasse" },
{ "", "" }
};
int check_name()
{
char user_name[20];
char password[20];
int i;
printf("Nom: "); gets(user_name);
printf("Mot de passe: "); gets(password);
for(i=0; users[i][0][0] != 0; i++)
{
if(strcmp(user_name, users[i][0]) == 0 &&
strcmp(password, users[i][1]) == 0)
return 1;
}
return 0;
}
void logon()
{
printf("Bienvenu sur ce systeme...\n");
exit(1);
}
void reject()
{
printf("Connection fermee!\n");
exit(0);
}
main()
{
unsigned int i;
for(i=(unsigned)-3; i && !check_name(); i++);
if(i>=(unsigned)-3)
logon();
else
reject();
} |
MERCI BEAUCOUP POUR VOTRE AIDE