Maison >base de données >SQL >Le principe de l'attaque par injection SQL

Le principe de l'attaque par injection SQL

angryTom
angryTomoriginal
2020-02-13 17:13:3316435parcourir

Le principe de l'attaque par injection SQL

Le principe de l'attaque par injection SQL

Un utilisateur malveillant insère une instruction SQL dans le contenu de la requête lors du processus de soumission de la requête, et en même temps le programme lui-même. Confiance excessive dans le contenu des entrées utilisateur sans filtrer les instructions SQL insérées par des utilisateurs malveillants, ce qui entraîne l'exécution directe des instructions SQL par le serveur.

Classification des attaques par injection SQL

(1) Différentes classifications des points d'injection

Injection de type numérique Injection de type chaîne

(2) Différentes classifications des méthodes de soumission

Injection GET Injection POST Injection COOKIE Injection HTTP

(3) Différentes classifications des méthodes d'obtention d'informations

Injection aveugle basée sur une booléenne basée sur Injection aveugle temporelle basée sur le rapport d'erreurs

Cas d'attaque par injection SQL :

1 Voir le cas d'injection de l'article :

Voir le cas d'injection. d'un article Si le paramètre url est : ?id=1

, alors en injectant la commande : ?id=1 ou 1=1, vous pouvez lister tous les articles dans l'ensemble du tableau de données.

Si l'utilisateur visualisateur est accessible via user_id, tel que : ? uid=1

Ensuite en injectant la commande : ?id=1 ou 1=1, vous pouvez afficher tous les enregistrements de toute la table utilisateur

La commande SQL est la suivante :

La commande SQL qui passe ?id=1 est : select * from article which id=1 Cette instruction interroge 1 structure

La commande SQL qui passe ?id=1 et 1=1 est. : sélectionnez * dans l'article où id=1 ou 1=1, cette instruction interroge les enregistrements de la table entière

2. Cas d'injection de connexion utilisateur :

Le formulaire de connexion a le champ user_name, et l'instruction de requête est : select * from users which pseudo='{user_name}'

Vous pouvez remplir la zone de texte user_name : (' ou 1='1), afin que le SQL injecté La commande peut être construite : sélectionnez * parmi les utilisateurs où user_name='' ou 1='1', afin qu'il soit facile d'entrer dans le système.

3. Deviner la table d'injection SQL :

Remplissez le champ du nom d'utilisateur sur la page de connexion : (' ou 1=(select count(0) from t_porg_document) ou 1='1), La commande SQL injectée peut être construite : select * from users which user_name='' or 1=(select count(0) from recharge) or 1='1'

De cette façon, vous pouvez deviner si le La table de recharge existe. Si elle existe, l'instruction sera exécutée normalement, sinon une erreur sera signalée.

Après avoir deviné le nom de la table, vous pouvez ajouter, supprimer, modifier et vérifier la table de données, par exemple :

Dans le champ du nom d'utilisateur de la page de connexion, remplissez : ('; delete from users), Des commandes SQL dangereuses peuvent être construites : select * from users which user_name='' ; delete from users ;

En ajoutant des points-virgules, des ajouts, suppressions, modifications et requêtes arbitraires peuvent être construits. , et l'intégralité de la base de données peut être manipulée par l'attaquant à volonté.

Le site Web PHP chinois propose un grand nombre de tutoriels SQL gratuits, tout le monde est invité à apprendre !

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn