Hash avec salt

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Hash avec salt

Re: Hash avec salt

par Ez3kiel » 09 juin 2011, 11:20

J'ai tenté avec le salt de Dunbar, la requête pma est
UPDATE  `armorgenarmor`.`t_utilisateurs` SET  `MotDePasse` = MD5(  'pqPvXhpSja7MUBf7admin1' ) WHERE  `t_utilisateurs`.`Num` =1;

ET ... ça marche. :priere:


J'ai remplacé mon salt par celui de Dunbar, et c'était bon.
Mais quand à savoir le pourquoi du comment ...
(Parce que c'était un I dans pma, et les salt ne pouvait pas être différents, c'était du copier coller entre Notepad et Pma ^^)

Peut-être un caractère de mon salt (+) ou (-) ou (**) ou je sais pas, qui faussait la requête ...

Enfin bref, merci beaucoup ! =D>

Re: Hash avec salt

par dunbar » 09 juin 2011, 10:57

Juste pour m'enlever un doute modifie le salt par celui-ci pqPvXhpSja7MUBf7 par exemple et refait un test
Parce que je me demande si tu n'aurais pas confondu entre le I et L qui se confonde dans le champ de ta table :)

Re: Hash avec salt

par moogli » 09 juin 2011, 10:53

J'suis p'tet mirro mais dans $hash entre v et e y a un i majuscule (I) et dans pma c'est un i ou un l (avec les différentes police ca se confond :/)

A tu essayé ton code remplacant le hash de la base par celui que tu affiche b? (en virant la fonction md5 bien sur)
D'ailleurs par curiosité a quoi ressemble la requete sql que pma utilise lors de insertion tel que tu l'a fait ?

@+

Ps : juste au cas ou : pma = phpmyadmin ;)

Re: Hash avec salt

par Ez3kiel » 09 juin 2011, 08:54

Je l'ai rentré à la main en QBE dans PhpMyAdmin.

Image


Et le résultat :

Image

Il n'y a pas de page d'inscription car il n'y a qu'un utilisateur, admin, pour accéder à l'interface d'administration. :|

Re: Hash avec salt

par dunbar » 08 juin 2011, 16:25

Et comment il est arriver en base ? :)
Montre nous ton inscription ou autre

Re: Hash avec salt

par Ez3kiel » 08 juin 2011, 14:41

Page de connexion (admin.php) :
	  		<form name="F_connexion" method="post" action="admin_exec.php" enctype="multipart/form-data">
				<table>
					<tr ><td >Votre login  </td><td ><input size=20 type="text" name="Login"></td></tr>
					<tr ><td > Votre mot de passe </td><td ><input size=20 type="password" name="MotDePasse"></td></tr>
					<tr ><td colspan="2" class="TD_ACentrer"><input type="SUBMIT"  size="20" name="B_Envoyer" value="Envoyer">				</tr> 
				</table>
			</form> 
		</div>
	</div>
	
	<?php
		//On teste la variable retour
		if (isset($_GET['retour']))
		{
		//On regarde si elle est égale à 1
			if ($_GET['retour']==1)
			{
?>


	<script langugage="text/Javascript">

	alert('Vous avez rentré un mauvais login ou mot de passe')
	
	</script>
	
			
	<?php
			}
	
	else //Sinon c'est que on a modifié l'url, alors tentative d'intrusion

		{
		
		?>
	<script language="Javascript">
	alert("Tentative d'intrusion repérée")
	</script>
	<?php
		}
			}
	?>
	
Page d'execution (admin_exec.php) :
<?php
	session_start();
	//récupération des données de la page login (admin)
	
	
	$Login=$_POST['Login'];
	$Pwd=$_POST['MotDePasse'];
	
	
	
	 
	//Connexion à la base et séléection de la BDD
	
	
	include("Connect.php");
	
	$cnx=mysql_connect(SERVEUR,NOM,MDP) or die("Erreur de connexion sur serveur MySql :".SERVEUR );
		
	mysql_select_db(BASE, $cnx ) or die("Erreur de connexion à la base de données" .  BASE);
	 
	 
	 
		
	// la requête de vérification de l'existence de l'utilisateur
	$hash = "s0mKvIe+-984**é";
	$hash .= $Pwd;
	
	echo md5($hash);
	
	$LaRequete = "Select Login FROM t_utilisateurs WHERE Login = '".$Login."' AND MotDePasse = '".md5($hash)."'";

	
	//exécution de la requête	et fermeture de la connexion
	
 
	$ResultatRequete = mysql_query($LaRequete) or die("Erreur SQL ! <br><br>".$LaRequete."<br><br>".mysql_error());


	//si aucun retour c'est que l'utilisateur ou le mot de passe n'est pas valide ==> retour à la page login
	
	
	if(mysql_num_rows($ResultatRequete) == 0)
	{
	header("location: admin.php?retour=1");
	}
	
	//sinon création des variables sessions et branchement au menu de l'administration
	
	
	else
	{
	
	$_SESSION['NumSession']=session_id();
	$_SESSION['Utilisateur']=$Login;
	header("location: menu_admin.php");
	}
?> 
Echo de $hash :
086db0f353d080979d71c6790c12e236
Echo de $LaRequete :
 Select Login FROM t_utilisateurs WHERE Login = 'admin' AND MotDePasse = '086db0f353d080979d71c6790c12e236'
Et dans la table, valeur de MotDePasse après md5 :
c7272ad6d1e5af1ee96386f119ad9b40

Re: Hash avec salt

par moogli » 08 juin 2011, 13:53

yop,

montre nous
- le code actuel
- un echo du $hash
- et un echo "brut" du select MotDePasse from t_utilisateurs WHERE Login = '".$Login."'
(d'ailleurs il vient d'ou le $login ?)

@+

Re: Hash avec salt

par Ez3kiel » 08 juin 2011, 12:10

Et bien il me fait mon echo $hash : 086db0f353d080979d71c6790c12e23

Mais il reste différent de celui de ma bdd ...
c7272ad6d1e5af1ee96386f119ad9b4

Et en prime je suis gratifié d'un
Warning: Cannot modify header information - headers already sent by (output started at /homez.228/armorgen/www/administration/admin_exec.php:28) in /homez.228/armorgen/www/administration/admin_exec.php on line 44
#-o

Re: Hash avec salt

par dunbar » 08 juin 2011, 11:46

Et comme ceci :)
<?php
$hash = "s0mKvIe+-984**é";
        $hash .= $Pwd;

        echo md5($hash);

        $LaRequete = "Select Login FROM t_utilisateurs WHERE Login = '".$Login."' AND MotDePasse = '".md5($hash)."'";
?>

Re: Hash avec salt

par Ez3kiel » 08 juin 2011, 09:09

Varchar (100). ^^
Et mon mdp fait 33 caractères.

J'ai essayé comme ceci
	$hash = "s0mKvIe+-984**é";
	$hash .= $Pwd;
	
	echo md5($hash);
	
	$LaRequete = "Select Login FROM t_utilisateurs WHERE Login = '$Login' AND MotDePasse = md5($hash) ;";
Mais il me retourne
086db0f353d080979d71c6790c12e236Erreur SQL !

Select Login FROM t_utilisateurs WHERE Login = 'admin' AND MotDePasse = md5(s0mKvIe+-984**éadmin1) ;

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*éadmin1)' at line 1
Nb: j'ai fais echo md5($hash) pour vérifier, et je me retrouver avec un hash différent de celui de ma table, alors que c'est bien le même salt et le même Mot de passe passés en Md5 dans ma table. :(

Re: Hash avec salt

par dunbar » 07 juin 2011, 18:16

Salut,

@Ez3kiel quelle est la longueur du champ "MotDePasse " de ta TABLE ???
Il doit être de min 32 car 32 est la longueur de la chaine retourner sous forme hexadécimal

Attention aussi que la chaine ne sera pas la même suivant ta manière de faire
exemple
<?php
$salt = 'go5pro$1mvkhj6*cz4a8ùtvb';
$mot_de_passe = 'MONMOTDEPASSE';


$mt = $salt.'+'.$mot_de_passe; //14e530fc2e17c2cf3a2b562583b466e3
$mt = $salt.$mot_de_passe; //1804f9a41434a8f4fb872127e3645a7d
echo md5($mt);
?>
A+

Re: Hash avec salt

par Castor Gaspard » 07 juin 2011, 17:25

Re...

Moi, si je fais...
<?php
$pwd = '12345';
$hash = 'go5pro$1mvkhj6*cz4a8ùtvb';
$foo = $pwd;
$foo .= $hash;
echo md5($foo); //966359d5de052df869f5ae0e72ec81ae
?>
J'ai l'impression que ça fonctionne, même si ma concaténation n'est pas très élégante diront les puristes. :)

Gaspard

Re: Hash avec salt

par Ez3kiel » 07 juin 2011, 17:03

#-o
Euh si j'ai bien compris le principe du hash ... ajouter ma chaine à l'autre partie.
Donc du coup je viens d'essayer
 MotDePasse = md5('go5pro$1mvkhj6*cz4a8ùtvb'+'$Pwd') ;
et
 MotDePasse = md5('go5pro$1mvkhj6*cz4a8ùtvb.$Pwd') ;
et
 MotDePasse = md5('go5pro$1mvkhj6*cz4a8ùtvb'.'$Pwd') ;
Nada. :s

Je viens même de passer la chaine go5pro$1mvkhj6*cz4a8ùtvb en variable, pour faire
md5('$hash'.'$Pwd') 
ou
md5($hash.$Pwd)
ou
md5($hash+$Pwd)
Rien. #-o

Re: Hash avec salt

par Castor Gaspard » 07 juin 2011, 16:50

Bonjour,

Mais tu veux utiliser littéralement ou le signe plus ou ajouter à ta chaîne l'autre partie ?

Dans le deuxième cas, tu dois concaténer, non ?

Cordialement,

Gaspard

Re: Hash avec salt

par Ez3kiel » 07 juin 2011, 14:58

#-o
Ce sera déjà une erreur de moins, merci !

Cependant, ça ne marche toujours pas ...
Dans ma bdd, je rentre bien mon salt+motdepasse, et je passe le tout en md5 ?

Et donc en php, je fais ma requête
AND MotDePasse = md5('go5pro$1mvkhj6*cz4a8ùtvb+$Pwd') ;
Ce qui me transcriras le salt+motdepasse en md5, pour comparer avec le total enregistré dans la bdd ?

Aurais-je oublié quelque chose ? :oops: