Maison > Article > base de données > Comment effectuer une injection SQL
La soi-disant injection SQL consiste à insérer des commandes SQL dans les soumissions de formulaires Web ou à saisir des noms de domaine ou des chaînes de requête pour les requêtes de page, incitant finalement le serveur à exécuter des commandes SQL malveillantes.
Plus précisément, il s'agit de la possibilité d'exploiter une application existante pour injecter des commandes SQL (malveillantes) dans le moteur de base de données backend pour exécution, ce qui peut être fait via un formulaire Web. (malveillantes) Instructions SQL pour obtenir une base de données sur un site Web présentant des failles de sécurité, plutôt que d'exécuter les instructions SQL comme prévu par le concepteur. Par exemple, de nombreux sites Web de cinéma et de télévision ont divulgué les mots de passe des membres VIP, principalement en soumettant des caractères de requête via des formulaires WEB. Ces formulaires sont particulièrement vulnérables aux attaques par injection SQL.
Technologie d'injection SQL
Forcer une erreur à se produire
L'identification du type de base de données, de la version et d'autres informations est la base de ce type d'attaque La motivation réside. Son objectif est de collecter le type de base de données, sa structure et d’autres informations pour se préparer à d’autres types d’attaques. On peut dire qu’il s’agit d’une étape préparatoire aux attaques. Obtenez des informations sur les vulnérabilités en exploitant le message d'erreur par défaut renvoyé par le serveur d'applications.
Utilisation d'une technologie de canal non traditionnelle
En plus des réponses HTTP, les données peuvent être obtenues via des canaux. Cependant, la plupart des canaux s'appuient sur les fonctions prises en charge par la base de données. existent, donc cette technologie n'est pas entièrement applicable à toutes les plates-formes de bases de données. Les canaux non traditionnels pour l'injection SQL incluent principalement les connexions au courrier électronique, au DNS et aux bases de données. L'idée de base est la suivante : commencez par regrouper la requête SQL, puis utilisez les canaux non traditionnels pour renvoyer les informations à l'attaquant.
Utiliser des caractères spéciaux
Différentes bases de données SQL comportent de nombreux caractères spéciaux et variables différents, qui peuvent être obtenus via certains systèmes d'application configurés de manière non sécurisée ou mal filtrés. Certains sont utiles. informations, fournissant ainsi des orientations pour de nouvelles attaques.
Utiliser des instructions conditionnelles
Cette méthode peut être divisée en trois formes : basée sur le contenu, basée sur le temps et basée sur les erreurs. Généralement, les instructions conditionnelles sont ajoutées après un accès régulier et la cible de l'attaque est déterminée en fonction du retour d'informations.
Utilisation de procédures stockées
Grâce à certaines procédures stockées standard, alors que les fournisseurs de bases de données étendent les fonctions de la base de données, le système peut également interagir avec elle. Certaines procédures stockées peuvent être définies par les utilisateurs. Après avoir collecté des informations telles que le type et la structure de la base de données via d'autres types d'attaques, des commandes permettant d'exécuter des procédures stockées peuvent être construites. Ce type d'attaque peut souvent atteindre les objectifs d'exécution de commandes à distance, d'extension de privilèges et de déni de service.
Éviter la technologie de filtrage d'entrée
Bien que certaines technologies de filtrage puissent être utilisées pour empêcher l'injection SQL pour le codage normal, il existe de nombreuses façons de l'éviter dans ce cas. , les moyens techniques qui peuvent généralement y parvenir incluent l'utilisation de commentaires SQL et de requêtes dynamiques, l'utilisation de la troncature, l'utilisation du codage d'URL et des octets nuls, l'utilisation de variantes majuscules et minuscules et d'expressions après suppression d'imbrication, etc. Grâce à ces moyens, la requête saisie peut éviter le filtrage des entrées, afin que l'attaquant puisse obtenir les résultats de requête souhaités.
La technologie d'inférence
peut clarifier le schéma de la base de données, extraire des données et identifier les paramètres injectables. Ce type d'attaque utilise les informations de retour saisies par le site Web à l'utilisateur pour déduire les paramètres injectables et le schéma de la base de données. Après l'exécution de la requête construite par cette attaque, les réponses obtenues ne peuvent être que vraies ou fausses. Les méthodes d’injection basées sur l’inférence sont principalement divisées en deux types : l’injection déterminée dans le temps et l’injection aveugle. La première consiste à ajouter des instructions telles que « attendre 100 » à l'instruction d'injection, et à déterminer si l'injection a réussi et à déduire la plage de valeurs des données en fonction de l'heure à laquelle le résultat de la requête apparaît, la seconde est principalement « et l = » ; l", "et l= 2” Deux méthodes d'injection classiques. Ces méthodes posent toutes des questions indirectement liées et peuvent obtenir des réponses, puis déduire les informations souhaitées à travers les informations de réponse, puis mener des attaques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!