bypass addslashes()
|
18-01-2014, 16h59
(Modification du message : 19-01-2014, 12h19 par MLT.)
Message : #1
|
|
MLT
MauriceLeTendu Messages : 40 Sujets : 10 Points: 26 Inscription : Dec 2012 |
bypass addslashes()
Présentation de la fonction
addslashes() permet d'échapper certains caractères comme les guillemets simples ('), guillemets doubles ("), antislash(\) et le caractère NULL. Imaginons le cas d'une tentative d'injection SQL où les variables de la page admin sont seulement protégées par addslashes Code PHP : $requete = "SELECT *FROM utilisateur WHERE login = '".addslashes($_POST["login"])."' AND password = '".addslashes($_POST["password"])."'"; On veut alors injecter 'or 1=1 -- dans la case password. Dans le cas présent l'injection 'or 1=1 -- devient \'or 1=1 -- et la requête SQL n'est plus valide. La faille de la fonction addslashes Cette fonction présente "une faille", elle est conçue pour traiter des chaînes de caractères encodées sur 8 bits. Ainsi, certains charsets spéciaux codés sur 7 ou 13 bits ne seront pas compris en tant que tels et la fonction pourra alors louper des caractères spéciaux comme des quotes qui seront bels et bien interprétés si transmis tels quels au serveur SQL. Nous allons maintenant nous intéresser au jeu de caractère GBK (jeu de caractères chinois) http://fr.wikipedia.org/wiki/GBK_%28jeu_...3%A8res%29 Ces caractères ont la propriété de commencer par 0xBF puis forment différents caractères avec les bytes qui suivent. Le caractère qui va nous intéresser est 0xBF5C (caractère GBK valide) dont 0x5c correspond à l'antislash. L'exploitation Pour contourner la fonction addslashes(), il est donc possible d'injecter par exemple %bf%27 , ce qui deviendra %bf%5c%27, mysql considérera que %bf%5c est un caractère valide alors votre requête sera exécutée. L'injection 'or 1=1 -- pourra devenir alors %bf%27%6f%72%20%31%3d%31%20%2d%2d En revanche il faut que mysql soit configuré pour recevoir les caractères GBK. La question est maintenant à savoir si en France mysql est configuré pour recevoir ce jeu de caractères.... En tout cas sur wamp, cette méthode ne fonctionne pas. Et t'il alors possible en france de bypass la requête suivante ? : Code PHP : $requete = "SELECT * FROM utilisateur WHERE login = '".addslashes($_POST["login"])."' AND password = '".addslashes($_POST["password"])."'"; Piste de travail : http://www.erich-kachel.de/?tag=addslashes Bibliographie http://bases-hacking.org/injections-sql-avancees.html http://shiflett.org/blog/2006/jan/addsla...ape-string http://securityreliks.securegossip.com/2...ddslashes/ |
|
« Sujet précédent | Sujet suivant »
|
Sujets apparemment similaires… | |||||
Sujet | Auteur | Réponses | Affichages | Dernier message | |
FRP bypass | Peanut_the_0ne | 1 | 1,100 |
13-01-2023, 19h38 Dernier message: Di0Sasm |
|
bypass is_numeric() | MLT | 9 | 2,790 |
18-01-2014, 15h03 Dernier message: gruik |
|
[pentest] bypass file integrity system | playzzzz | 10 | 3,257 |
23-07-2013, 16h00 Dernier message: InstinctHack |
Utilisateur(s) parcourant ce sujet : 2 visiteur(s)