Exploitation
Où peut-on trouver cette faille ? Hé ben tout simplement dans les superglobales (formulaires, liens .....)
Cette faille se met en évidence en insérant un caractère inattendue dans un paramètre d’une fonction, il existe donc plusieurs manières d’utiliser cette faille. Les utilisations les plus courantes sont dans les fonctions htmlentities() , include(), opendir().
Exemple :
Donc si on analyse tout sa, on peut voir qu'elle attend une requête GET et qu'elle l'utilise pour la fonction htmlentities(). Donc on sait par la suite que la page affichera l'id passé dans l'URL.
Exemple :
Si nous nous rendons sur : http://localhost/fpd.php?id=135 , la page nous retourne donc la valeur "135" et elle est donc interprétée correctement.
Par contre, si on modifie l'URL afin d'envoyer un autre type de variable comme tableau, "Array" en anglais, il en résultera un message d'erreur.
Exemple :
Si on met : http://localhost/fd.php?id[]=135 ,
nous aurons une erreur comme :
Warning: opendir(Array): failed to open dir: No such file or directory in C:\wamp\www\CHF\fpdtest.php on line 24
pour la fonction opendir() et :
Warning: htmlentities() expects parameter 1 to be string, array given in C:\wamp\www\CHF\fpdtest.php on line 8
pour la fonction htmlentities().
Ce ne sont que 2 exemples avec 2 fonctions mais d'autres fonctions tels que require() ou d'autres sont aussi vulnérables. ;)