S'échapper de devis unique sur l'injection SQL
Bonjour, je suis passe par des injection SQL exemples et j'ai le scénario suivant:
Dans cet exemple, conscient du risque d'injection SQL, le développeur a décidé de bloquer les guillemets simples 'pour en retirer le guillemet simple' dans la requête. Cependant, il y a toujours un moyen de sortir de la syntaxe SQL et de les injecter un code SQL arbitraire.
Pour ce faire, vous avez besoin de penser à la requête:
SELECT * FROM users WHERE username='[username]' and password='[password]'
Le problème ici est que vous ne pouvez pas, en théorie, de briser les guillemets simples ' puisque vous ne pouvez pas injecter un devis. Toutefois, si vous injecter un anti-slash \, le deuxième dans la requête (celui censé finir la chaîne [nom d'utilisateur] s'être échappé et sera fermé par le troisième (celui censé commencer le string [mot de passe].
N'est pas ce à dire que si je saisie un "\" sur le champ nom d'utilisateur, il sera automatiquement pause la requête? et ressembler à quelque chose comme
SELECT * FROM users WHERE username='[username] and password=' ..
Suis-je raté quelque chose ? Dois-je fournir la barre oblique inverse d'une autre manière?
- Demandez-vous comment injecter du sql ou comment vous protéger contre les attaques par injection sql?
- comment injecter pas comment les protéger
- Pour être honnête, vous devez utiliser les paramètres à transmettre les valeurs de nom d'utilisateur et mot de passe. Vous devriez éviter de construire une chaîne de caractères avec des valeurs de saisie de l'utilisateur et de les exécuter à l'encontre de votre base de données - qui est la 1ère étape de la protection contre les injections sql.
- Je ne cherche pas à protéger contre, je suis à la recherche pour réaliser l'exercice, et de comprendre comment "\" échappe les caractères, car pour le moment il semble qu'il n'a pas
- Si vous êtes à la recherche pour cela? blogs.msdn.com/b/raulga/archive/2007/01/04/...
- Double Possible de Comment peut-assainissement qui s'échappe des apostrophes être vaincu par injection SQL dans SQL Server?
Vous devez vous connecter pour publier un commentaire.
Ok j'ai trouvé la réponse:
Le nom d'utilisateur doit être : \
et le mot de passe : ou 1#
Alors, la requête devrait ressembler à quelque chose comme ceci
\
etor 1#
est pas valide SQL pour commencer