PHPPass ******** Informations : °°°°°°°°°°°°°° Langage : PHP Version : 2 Website : http://www.agames-net.com Problème : Injection SQL Developpement : °°°°°°°°°°°°°°° phpPass permet de restreindre l'accès à une page. Il faut alors s'inscrire et être membre pour avoir accès à cette page. Le fichier vérifiant si on est bien loggé en tant que membre est accesscontrol.php. On peut y voir le code suivant : ------------------------------------------------ [...] session_register("uid"); session_register("pwd"); [...] $sql = "SELECT * FROM user WHERE userid = '$uid' AND password = '$pwd'"; $result = mysql_query($sql); [...] if (mysql_num_rows($result) == 0) { session_unregister("uid"); session_unregister("pwd"); ?> Access Denied [...] exit; [...] ------------------------------------------------ En SQL, l'expression ''='', comme 1=1 ou 'truc'='truc' retourne toujours vrai. Si on donne aux variables $uid et $pwd la valeur ' OR ''=', la requête executée deviendra : SELECT * FROM user WHERE userid = '' OR ''='' AND password = '' OR ''='' ce qui retournera vrai. On sera alors loggé en tant que membre, plus précisemment le premier membre enregistré dans la base de donnée. Ceci peut être fait via une url du style : http://[target]/protectedpage.php?uid='%20OR%20''='&pwd='%20OR%20''=' Patch : °°°°°°° Dans accesscontrol.php, remplacer les lignes : ------------------------------------------------- $sql = "SELECT * FROM user WHERE userid = '$uid' AND password = '$pwd'"; $result = mysql_query($sql); ------------------------------------------------ par : ------------------------------------------------------------------------ $uid=addslashes($uid); $pwd=addslashes($pwd); $sql = "SELECT * FROM user WHERE userid = '$uid' AND password = '$pwd'"; $result = mysql_query($sql); ------------------------------------------------------------------------ Un patch peu être trouvé sur http://www.phpsecure.org. Credits : °°°°°°°°° Auteur : frog-m@n E-mail : frog-man@phpsecure.org Website : http://www.frog-man.org, http://www.phpsecure.org Date : 12/01/03