Maison base de données SQL Introduction détaillée à l'injection SQL

Introduction détaillée à l'injection SQL

Aug 06, 2019 pm 05:06 PM
sql

Introduction détaillée à l'injection SQL

1. Comprenez d'abord le principe de l'injection SQL :

Injection SQL : Il s'agit d'insérer des commandes SQL dans le Web Soumettez un formulaire ou entrez un nom de domaine ou une chaîne de requête pour une demande de page, incitant finalement le serveur à exécuter des commandes SQL malveillantes.

Plus précisément, il s'agit de la possibilité d'utiliser des applications existantes pour injecter des commandes SQL (malveillantes) dans le moteur de base de données backend pour exécution. Il peut obtenir une existence en saisissant des instructions SQL (malveillantes) dans un formulaire Web. dans la base de données du site Web, plutôt que d'exécuter des instructions SQL comme le souhaitait 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. (Provenant de Baidu)

C'est-à-dire que la page du site Web contient des parties qui interagissent avec la base de données (comme la fonction de recherche d'un site Web d'actualités), et lorsque les données sont saisies sur le site Web, les données sont programmé et transmis à la base de données pour exécution Au cours du processus, les développeurs du site Web n'ont pas effectué de traitement de sécurité sur les données correspondantes transmises à la base de données (telles que le filtrage des caractères spéciaux, l'encodage, etc.), permettant aux pirates de transmettre du code malveillant (qui c'est-à-dire des commandes SQL contenant des instructions SQL illégales) via le front-end du site Web. Entrez dans la base de données et exécutez ces instructions SQL à des fins de piratage dans la base de données, provoquant des fuites d'informations sur la base de données, des dommages et d'autres conséquences.

2. Classification générale de l'injection SQL

Classé par type de point d'injection

(1) Type de numéro point d'injection

De nombreux liens Web ont une structure similaire http://www.example.com/12.php?id=1 Les injections basées sur ce formulaire sont généralement appelées points d'injection numériques, la raison en est que le type d'identifiant du point d'injection est un nombre. Dans la plupart des pages Web, telles que l'affichage des informations personnelles de l'utilisateur, l'affichage d'articles, etc., la plupart d'entre elles utilisent cette forme de structure pour transférer l'identifiant et d'autres informations, les transmettre au backend et interrogez-le dans la base de données. Les informations correspondantes sont renvoyées à la réception. Le prototype de ce type d'instruction SQL est probablement select * from table name which id=1. S'il y a injection, nous pouvons construire une instruction d'injection SQL similaire à la suivante pour le dynamitage : select * from table name which id=1 et 1. =1

(2) Point d'injection de caractères

Le lien Web a une structure similaire http://xwww.example.com/users.php?user=admin Ce formulaire, le type d'utilisateur de son point d'injection est de type caractère, on l'appelle donc point d'injection de caractère. Le prototype de ce type d'instruction SQL est probablement select * from table name which user='admin'. Il convient de noter que par rapport au prototype d'instruction SQL de type injection numérique, il y a plus de guillemets, qui peuvent être des guillemets simples ou doubles. . S'il y a injection, nous pouvons construire une instruction d'injection SQL similaire à la suivante pour le dynamitage : select * from table name which user='admin' et 1=1 ' Nous devons nous débarrasser de ces guillemets ennuyeux.

(3) Rechercher le point d'injection

Il s'agit d'un type spécial d'injection. Ce type d'injection fait principalement référence au fait de ne pas filtrer les paramètres de recherche lors de la recherche de données. Généralement, il y a "mot-clé=mot-clé" dans l'adresse du lien. Certains ne sont pas affichés dans l'adresse du lien, mais sont soumis directement via le formulaire du champ de recherche. Le prototype de l'instruction SQL soumise par ce type de point d'injection est grossièrement : select * from table name which field like '%keyword%' S'il y a injection, nous pouvons construire une instruction d'injection SQL similaire à la suivante pour le dynamitage : select * de la table Nom où champ comme '%test%' et '%1%'='%1%'

3. Comment déterminer s'il y a une injection SQL (résumé novice, pour référence uniquement)

Pour faire simple :

Toutes les entrées qui interagissent avec la base de données peuvent déclencher une injection SQL

L'injection SQL est basée sur la soumission des données Les méthodes peuvent être divisées en :

  (1) Injection GET  : La méthode de soumission des données est GET, et l'emplacement du point d'injection est dans la partie paramètre GET. Par exemple, il existe un tel lien http://xxx.com/news.php?id=1, id est le point d'injection.

  (2) Injection POST  : Utilisez la méthode POST pour soumettre des données. Le point d'injection se trouve dans la partie données POST, ce qui se produit souvent dans les formulaires.

  (3) Injection de cookie  : les requêtes HTTP apporteront le Cookie du client, et le point d'injection existe dans un certain champ du Cookie.

  (4) Injection d'en-tête HTTP  : Le point d'injection se trouve dans un certain champ de l'en-tête de la requête HTTP. Par exemple, il existe dans le champ User-Agent. À proprement parler, Cookie devrait en fait être considéré comme une forme d’injection d’en-tête. Car lors des requêtes HTTP, Cookie est un champ dans l’en-tête.

Après avoir classé selon la méthode de soumission, vous constaterez que les emplacements les plus longs où l'injection SQL se produit se trouvent dans les adresses de lien, les paramètres de données, les informations sur les cookies et les en-têtes de requête HTTP.

Après avoir compris les emplacements où l'injection SQL peut exister, nous devons déterminer si l'injection SQL peut être déclenchée à ces emplacements. Le moyen le plus simple est de saisir et 1=1 (et la forme transformée de et 1=1) à l'emplacement. lieu correspondant. Pour différents types de points d'injection, des guillemets simples doivent être ajoutés de manière appropriée pour les types de caractères, mais pas pour les points d'injection numériques.

4. Classification avancée de l'injection SQL (classée selon l'effet d'exécution)

 (1) Injection aveugle basée sur des booléens : Autrement dit, la condition d'injection peut être jugée vraie ou fausse en fonction de la page renvoyée.

(2) Injection aveugle basée sur le temps  : c'est-à-dire qu'aucune information ne peut être jugée sur la base du contenu de retour de la page, et des instructions conditionnelles sont utilisées pour vérifier si l'instruction de délai est exécutée (c'est-à-dire si le temps de retour de la page augmente).

(3) Injection basée sur le rapport d'erreurs  : c'est-à-dire que la page renverra des informations d'erreur, ou le résultat de l'instruction injectée sera renvoyé directement à la page.

  (4) Injection de requête d'union  : L'injection en cas d'union peut être utilisée.

  (5) Injection de requêtes de tas  : L'injection de plusieurs instructions peut être exécutée en même temps.

(6) Injection d'octets larges  : L'utilisation de gbk est un encodage multi-octets, deux octets représentent un caractère chinois

Cet article est destiné à votre apprentissage uniquement. N’attaquez jamais de manière malveillante les sites Web d’autres personnes.

Tutoriels recommandés : Tutoriel vidéo SQL en ligne

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelle est la différence entre HQL et SQL dans le framework Hibernate ? Quelle est la différence entre HQL et SQL dans le framework Hibernate ? Apr 17, 2024 pm 02:57 PM

HQL et SQL sont comparés dans le framework Hibernate : HQL (1. Syntaxe orientée objet, 2. Requêtes indépendantes de la base de données, 3. Sécurité des types), tandis que SQL exploite directement la base de données (1. Normes indépendantes de la base de données, 2. Exécutable complexe requêtes et manipulation de données).

Utilisation de l'opération de division dans Oracle SQL Utilisation de l'opération de division dans Oracle SQL Mar 10, 2024 pm 03:06 PM

"Utilisation de l'opération de division dans OracleSQL" Dans OracleSQL, l'opération de division est l'une des opérations mathématiques courantes. Lors de l'interrogation et du traitement des données, les opérations de division peuvent nous aider à calculer le rapport entre les champs ou à dériver la relation logique entre des valeurs spécifiques. Cet article présentera l'utilisation de l'opération de division dans OracleSQL et fournira des exemples de code spécifiques. 1. Deux méthodes d'opérations de division dans OracleSQL Dans OracleSQL, les opérations de division peuvent être effectuées de deux manières différentes.

Comparaison et différences de syntaxe SQL entre Oracle et DB2 Comparaison et différences de syntaxe SQL entre Oracle et DB2 Mar 11, 2024 pm 12:09 PM

Oracle et DB2 sont deux systèmes de gestion de bases de données relationnelles couramment utilisés, chacun possédant sa propre syntaxe et ses propres caractéristiques SQL. Cet article comparera et différera la syntaxe SQL d'Oracle et de DB2, et fournira des exemples de code spécifiques. Connexion à la base de données Dans Oracle, utilisez l'instruction suivante pour vous connecter à la base de données : CONNECTusername/password@database Dans DB2, l'instruction pour vous connecter à la base de données est la suivante : CONNECTTOdataba.

Explication détaillée de la fonction Définir la balise dans les balises SQL dynamiques MyBatis Explication détaillée de la fonction Définir la balise dans les balises SQL dynamiques MyBatis Feb 26, 2024 pm 07:48 PM

Interprétation des balises SQL dynamiques MyBatis : explication détaillée de l'utilisation des balises Set MyBatis est un excellent cadre de couche de persistance. Il fournit une multitude de balises SQL dynamiques et peut construire de manière flexible des instructions d'opération de base de données. Parmi elles, la balise Set est utilisée pour générer la clause SET dans l'instruction UPDATE, qui est très couramment utilisée dans les opérations de mise à jour. Cet article expliquera en détail l'utilisation de la balise Set dans MyBatis et démontrera ses fonctionnalités à travers des exemples de code spécifiques. Qu'est-ce que Set tag Set tag est utilisé dans MyBati

Que signifie l'attribut d'identité dans SQL ? Que signifie l'attribut d'identité dans SQL ? Feb 19, 2024 am 11:24 AM

Qu'est-ce que l'identité en SQL ? Des exemples de code spécifiques sont nécessaires. En SQL, l'identité est un type de données spécial utilisé pour générer des nombres à incrémentation automatique. Il est souvent utilisé pour identifier de manière unique chaque ligne de données dans une table. La colonne Identité est souvent utilisée conjointement avec la colonne clé primaire pour garantir que chaque enregistrement possède un identifiant unique. Cet article détaillera comment utiliser Identity et quelques exemples de code pratiques. La manière de base d'utiliser Identity consiste à utiliser Identit lors de la création d'une table.

Comment implémenter Springboot+Mybatis-plus sans utiliser d'instructions SQL pour ajouter plusieurs tables Comment implémenter Springboot+Mybatis-plus sans utiliser d'instructions SQL pour ajouter plusieurs tables Jun 02, 2023 am 11:07 AM

Lorsque Springboot+Mybatis-plus n'utilise pas d'instructions SQL pour effectuer des opérations d'ajout de plusieurs tables, les problèmes que j'ai rencontrés sont décomposés en simulant la réflexion dans l'environnement de test : Créez un objet BrandDTO avec des paramètres pour simuler le passage des paramètres en arrière-plan. qu'il est extrêmement difficile d'effectuer des opérations multi-tables dans Mybatis-plus. Si vous n'utilisez pas d'outils tels que Mybatis-plus-join, vous pouvez uniquement configurer le fichier Mapper.xml correspondant et configurer le ResultMap malodorant et long, puis. écrivez l'instruction SQL correspondante Bien que cette méthode semble lourde, elle est très flexible et nous permet de

Comment résoudre l'erreur 5120 dans SQL Comment résoudre l'erreur 5120 dans SQL Mar 06, 2024 pm 04:33 PM

Solution : 1. Vérifiez si l'utilisateur connecté dispose des autorisations suffisantes pour accéder ou utiliser la base de données, et assurez-vous que l'utilisateur dispose des autorisations appropriées ; 2. Vérifiez si le compte du service SQL Server est autorisé à accéder au fichier spécifié ou ; dossier et assurez-vous que le compte dispose des autorisations suffisantes pour lire et écrire le fichier ou le dossier ; 3. Vérifiez si le fichier de base de données spécifié a été ouvert ou verrouillé par d'autres processus, essayez de fermer ou de libérer le fichier et réexécutez la requête ; . Essayez en tant qu'administrateur, exécutez Management Studio en tant que etc.

Comment utiliser les instructions SQL pour l'agrégation de données et les statistiques dans MySQL ? Comment utiliser les instructions SQL pour l'agrégation de données et les statistiques dans MySQL ? Dec 17, 2023 am 08:41 AM

Comment utiliser les instructions SQL pour l'agrégation de données et les statistiques dans MySQL ? L'agrégation des données et les statistiques sont des étapes très importantes lors de l'analyse des données et des statistiques. En tant que puissant système de gestion de bases de données relationnelles, MySQL fournit une multitude de fonctions d'agrégation et de statistiques, qui peuvent facilement effectuer des opérations d'agrégation de données et de statistiques. Cet article présentera la méthode d'utilisation des instructions SQL pour effectuer l'agrégation de données et les statistiques dans MySQL, et fournira des exemples de code spécifiques. 1. Utilisez la fonction COUNT pour compter. La fonction COUNT est la plus couramment utilisée.

See all articles