Membres


Pas encore membre ?
inscrivez-vous ici

Connexion :
Login
Code
Mot de passe perdu ?
Liste des membres

Erreurs de requêtes MySQL en PHP - Cours php

Erreurs de requêtes MySQL en PHP

Erreurs de requêtes MySQL en PHP


Erreurs de requêtes MySQL en PHP
La configuration du serveur doit être avec les Magic_quotes=Off pour que cette exemple fonctionne.

Le problèmes de mettre des variables dans une requête MySQL c'est la posibilités de pouvoir exploiter une faille par injection. Par contre, si votre serveur a les magic_quotes à On, vous ne risquez pas grand chose, enfin, moins. (à voir dans php.ini)

Un exemple de reqête mysql pour une identification par login et mot de passe :
select * from Table where login='$login' and password='$mdp

Le formulaire pour être de ce genre :
  Login : 
  <input name="mdp" id="mdp" type="text">
&nbsp;&nbsp;&nbsp;Mot de passe :   
<input name="textfield2" type="text">



Le code qui récupèrera les données du formulaire :

$login=$_POST[login];
$pass=$_POST[mdp];
$req="select * from Table where login='$login' and password='$pass'"


C'est un code que pas mal de débutants (plus haut aussi des fois :)) utilisent, bon, la suite ne marche pas sur tous les serveur, ça dépend de la configuration.
Aller maintenant sur la page du page formulaire et taper ceci :
[quote]Login : test1' or '1=1
Mot de passe : test2' or '1=1[quote]
Cliquer sur valider ...
et, surprise, vous est loguez !
Suffit ensuite de choisir mieux votre login pour tomber sur le compte de l'admin, ou root. ex :
Login : [b]root' or '1=1[b]
Mot de passe : test2' or '1=1

Explications
Voici à quoi ressemble votre requête avec les informations fourni par le formulaire :
$req="select * from Table where login='root' or '1=1' and password='test2' or '1=1'"

je pense que vous avez mainteannt compris. En utilisant le OR '1=1, on est sur de toujours avoir une réponse affirmative.

Si vous ne pouvez changer la configuration de votre serveur, il suffit d'utiliser la function addslashes() pour ajouter des slash devant tous les ' ou "...
Le code sécurisé :
$login=addslashes($_POST[login]);
$pass=addslashes($_POST[mdp]);
$req="select * from Table where login='$login' and password='$pass'";

Qui vous donnera cette requête :
$req="select * from Table where login='root\' or \'1=1' and password='test2\' or \'1=1'";

Si vous pouvez changer la configuration, editer le fichier php.ini, chercher la ligne magic_quotes=Off, et mettez On à la place de Off.

Si vous rencontrez des erreurs, des chose que je dit complètement fausses, merci de me prévenir.
Si vous utilisez EasyPhp 1.7, php.ini est déjà configurer avec les magic_quotes à On, donc, pas de soucis à ce faire !

Le 11/05/2008 par Sky
http://www.graphiks.net




Les commentaires

Nom :

Texte :

Recopier ce code : ici

Nous  -  Plan du site  -  Informations légale  -  Contact  -  © Graphiks.net