debbv
Messages postés14Date d'inscriptionsamedi 19 décembre 2009StatutMembreDernière intervention14 mars 2011
-
7 févr. 2011 à 12:06
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 2013
-
8 févr. 2011 à 00:43
Salut à tous ,
Je viens par ce message vous présenter une faille que j'ai avec une application que j'ai eu à developper. La faille se trouve au niveau de la zone de connexion.
Pb :
- Au fait j'ai une page login.php dans laquelle un user va saisir son login et son passwd.Cette page va sur une autre page appélée REDIRECT.PHP
- REDIRECT.PHP cherche si le login et le passwd MD5 existe dans ma base MYSQL .et affiche une page accueil.php si c bon ou error.php si c pa bon.
La faille : un user entre test et 1234 ça passe car ce compte existe dans la base (Page acceuil.php).
mais s il entre test et 1234' il a accès a la Page acceuil.php .
Or 1234 et 1234' sont differents .
////////////////////////////////////////////////////////////////////////////////
Mon code : Redirect.PHP
///////////////////////////////////////////////////////////////////////////////
<?php
// REDRIRECTION PASSWORD
require 'config.php';
$connect = mysql_connect ("localhost","root",$password);// or die('Erreur de connexion'.mysql_error());
mysql_select_db ($base);////or die('Erreur de connexion'.mysql_error()) ;
$log=mysql_real_escape_string($_POST['log']);
$mdp2=mysql_real_escape_string($_POST['pwd']);
$mdp=MD5($login + "zo5pro$1pvkhj6cz4a8ùtvb#ui4oeuio" + $mdp2 +$login+$mdp2);
$sql = "select * from compte where login='$log' and pass='$mdp' ";
$req = mysql_query($sql);
$num = mysql_num_rows($req);
if ($num >=1)
{
session_start();
$_SESSION['log']=$log;
$_SESSION['mdp']=$mdp;
header('Location:accueil.php');
}
else
{
header('Location:error_pass32.php');
}
//}
?>
////////////////////////////////////////////////////////////////////////////
Mon HASH a la création du compte
////////////////////////////////////////////////////////////////////////////
$mdp=MD5($login + "zo5pro$1pvkhj6cz4a8ùtvb#ui4oeuio" + $mdp2 +$login+$mdp2);
//////////////////////////////////////////////////////////////////////////////////
Merci et je compte sur vous
////////////////////////////////////////////////////////////////////////////////
Mon application marche sur près de 90 Positions et des infos ne doivent pas être vue par tout les users
Et je suis le seul a savoir k il ya faille actuellement
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 201312 8 févr. 2011 à 00:43
Salut,
Afin de compléter la juste remarque de phpAnonyme, je vais expliquer le pourquoi du comment de l'histoire :
Afin de réaliser l'addition (et non la concaténation), les chaînes de caractères sont converties en leur valeur décimale (ou flotante). Ainsi, une chaîne ne représentant pas de nombre est convertie en 0 et, si sa première portion représente un nombre (mais pas la suite), alors elle sera convertie en ce nombre (donc 1234' est convertis en 1234). Si on refais l'addition dans ce sens, le "$login + "zo5pro$1pvkhj6cz4a8ùtvb#ui4oeuio" + $mdp2 +$login+$mdp2" revient à : "0 + 0 + 1234 + 0 + 1234", soit 2468 dans les deux cas, d'où l'égalité des md5.