Bonjour à tous,
je récupere la gestion d'un site web que je dois refondre
et apres avoir vu le code du système de login, je pensais qu'il était
vulnérable à une injection SQL.
En effet, voici le code (simplifié) du formulaire index.php:
Puis le code de login.php (ce sont vraiment les premieres lignes du formulaire, je n'ai rien enlevé), les variables $user et $pass sont récupérés via le système de register_globals qui est sur on :
Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <form action="login.php" method="post" name="formulaire"> <input type="text" name="user"> <input type="password" name="pass">
En etudiant le code, je me suis dit qu'en saisissant dans la page web le login :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 $link = mysql_connect("localhost", "admin_login", "admin_pass") or die ("Impossible de se connecter"); mysql_select_db ("BD") or die ("Impossible d'accéder à la base de données"); session_start(); $req="select login,iduser from personnel where login='$user' and password='$pass';"; $res=mysql_query($req);, c'était censé réaliser une injection SQL puis effacer la table cependant ... non.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ';drop table personnel;
Lorsque j'affiche le contenu de la variable $req je vois :
Mon simple quote a été automatiquement échappé. Savez-vous quel mécanisme a pu réaliser cela sachant qu'aucune fonction d'échappement n'est utilisée dans le code?select login,iduser from personnel where login='\';drop table personnel;' and password='test';
Bon je me prends la tete pour pas grand chose mais j'aimerai comprendre...
Merci,a +
Partager