Instructeur: Maintenant, pour essayer de découvrir les injections SQL,
vous devez parcourir votre cible et
essayer de casser chaque page.
Ainsi, chaque fois que vous voyez une
zone de texte ou un paramètre sur
ce formulaire, par exemple, page. php alors quelque chose égal à quelque chose,
essayez d'injecter des choses ici.
Donc, essayez d'utiliser un seul
devis, essayez d'utiliser un et, ou l'ordre par commande, pour
casser la page et lui donner un aspect différent.
Donc, je vais vous montrer ici un exemple.
Et je vais d'abord aller à la page de connexion, ici.
Et sa demande de me connecter maintenant.
Mais je me suis inscrit avec mon propre nom.
Donc, vous pouvez simplement aller ici et vous inscrire.
J'ai un nom d'utilisateur appelé Zaid
et un mot de passe avec un deux trois quatre cinq six.
Alors d'abord, allons juste ...
Je vais me connecter juste pour vous montrer, alors.
Mon nom d'utilisateur est
Zaid et mon mot de passe est un deux trois quatre cinq six.
Et maintenant je suis connecté en
tant que Zaid et ma signature était aa.
C'est juste rien vraiment, juste comme un test.
Donc, je vais me déconnecter
et nous revenons à la page de connexion.
Ici, nous avons la page afin que vous
puissiez essayer de vous y inclure.
Mais nous y reviendrons plus tard, alors.
Pour le
moment, nous avons un exemple d'injection dans des zones de texte.
Donc, vous pouvez essayer d'injecter dans le nom et
dans le mot de passe.
Alors je vais mettre mon nom comme Zaid et
je vais mettre une citation simple.
Donc, je mets ce signe dans mon mot de passe.
Voyons donc si nous pouvons le casser.
Et comme vous pouvez le
constater maintenant, une erreur nous est affichée.
Et cela ne ressemble pas à une erreur
normale, mais à une erreur de base de données.
Et généralement, vous aurez beaucoup de chance si vous obtenez
une erreur comme celle-ci.
Maintenant, généralement, l'erreur ne sera pas aussi informative que cela.
Parfois, vous constaterez simplement
que la page n'agit pas
comme prévu.
Parfois, ce sera juste une page
qui ne se présente pas comme il se doit.
Par exemple, s'il
s'agit d'une page d'actualités, l'article manquera peut-être
ou d'un blog, l'un des messages manquant ou
un type différent de message.
Il faut donc garder un œil sur ce qui change.
Dans cet exemple, nous obtenons une très belle erreur.
Il nous dit quel fichier il
a et qu'il nous dit qu'il y a une erreur dans la déclaration.
Et l'erreur près du guillemet que nous avons ajouté.
Et cela nous indique également la déclaration en cours d'exécution.
C'est vraiment bon pour apprendre.
Parce que maintenant nous pouvons voir quelle
est la déclaration, que le système essaie de fonctionner.
Et les systèmes essayant de faire un select *.
Donc, il essaie de tout sélectionner parmi les comptes, où le
nom d'utilisateur est égal à Zaid
et le mot de passe est égal à un guillemet simple.
Et notez que le système de
l'application Web ajoute déjà des
guillemets autour du nom.
Donc, quand j'ai dit Zaid, il a ajouté Zaid entre deux citations.
Et il a ajouté
la citation simple que j'ai ajoutée entre deux autres citations.
C'est pourquoi nous avons trois citations ici.
Nous pouvons donc,
comme 70% du site cible, utiliser une
injection SQL.
Nous ne savons
toujours pas s'il peut exécuter ce que nous voulons qu'il fasse.
Donc, puis-je réellement injecter
du code et le faire exécuter?
Voyons si nous pouvons le faire.
Donc, nom d'utilisateur va être Zaid à nouveau.
Et ce que je vais faire
avec le mot de passe, je vais mettre mon mot de passe.
Donc je vais mettre un deux trois quatre cinq six
et puis je le ferme.
Je vais donc vous dire pourquoi
je le ferme, parce que la déclaration
actuelle dans le système
est select * from, to Zaid and,
est égal à.
Et ça va ouvrir une seule citation tout seul.
Appelons donc ce mot de passe S.
Nous traitons donc cela comme une variable.
Et cela prend ce que je mets ici, ce
que je vais mettre dans cette boîte.
Et sa va l'insérer à la place du mot de passe S,
qui est une variable.
Donc, je vous donne juste une
idée, donc vous devez pouvoir imaginer que cela se produise.
Donc, prendre tout ce que j'ai mis là-bas, et
le mettre entre deux guillemets simples.
Et sa va être inséré là-bas, et
exécuté sur le système.
Donc ce que je
fais c'est que je vais mettre un deux trois quatre
cinq six et je vais ajouter la citation moi-même.
Donc, ce que je vais faire maintenant, le code
va être comme ça.
Donc, ça va sélectionner ceci, et le mot de
passe est égal à celui.
Et j'ai deux citations en ce moment, d'accord.
Et puis ce que je
vais faire, c’est,
je vais dire et, on est égal à un.
Donc on est égal à un.
Et j'essaye juste de
voir si ça va exécuter ce que je veux qu'il fasse.
Donc, ma déclaration pour le moment est qu'il s'agira
de Select * from accounts, où le nom d'utilisateur
est égal à Zaid et le mot
de passe est égal à un deux trois quatre cinq six.
Et remarquez, je vais insérer ceci moi-même,
et des égaux à un.
Un problème dont le système va se plaindre, c'est
que nous avons une citation
supplémentaire ici, parce que je vais l'insérer moi-même dans la zone de texte.
Donc, ça va se plaindre,
ça va dire que c'est un code ouvert
et que ça n'a jamais été fermé.
Donc, ce que je vais faire, c'est ajouter le commentaire.
Et lorsque vous ajoutez un
commentaire, tout ce qui arrive après le commentaire
ne sera pas exécuté.
Je vais utiliser le hash comme commentaire.
Donc, tout ce qui arrive après le hash
que le système va ignorer.
Donc, je vais injecter maintenant ce sera, et on
égal à un et ceci, donc comme je l'ai dit,
généralement ce que vous avez ici,
vous avez coupé votre mot de
passe, ou selon comment le programme
s'appelle, pour imaginer cette.
Et je vais insérer ça à l'intérieur.
Donc, quand vous faites cela et que vous l'insérez à l'intérieur, voici
à quoi ressemblera le code.
Donc, ça va ressembler au bon nom d'utilisateur, le
bon mot de
passe, et l'un est égal à un, ce qui est vrai.
Et puis ça
ne va pas, ça va ignorer cette citation ici même.
Donc, si nous
collons cela, nous devrions pouvoir nous connecter.
Cela devrait me permettre de me connecter.
Et parfait nous avons pu nous connecter et le nom d’utilisateur est Zaid.
Jusqu'ici, nous n'avons rien fait.
Mais ce genre de nous montre que cela exécute notre code?
Essayons une chose différente.
Essayons maintenant d'ajouter une fausse déclaration.
Nous avons donc fait un égal, et
c'était correct et il s'est exécuté quand nous le voulions.
Essayons on égal deux.
Et c'est faux.
J'ai donc le bon mot de passe.
Et j'ai le bon nom
d'utilisateur, et un est égal à deux.
Et cela devrait être faux car c'est
faux, on n'équivaut pas à
deux et j'utilise un et ainsi tout doit être vrai.
Donc, cela devrait me donner une
erreur même si je vais mettre le bon nom d'utilisateur, et je
vais mettre le bon mot de passe.
Je mets donc un deux trois quatre cinq
six et un égal à deux.
Donc, ça va être comme, oh, c'est faux.
Et comme vous pouvez le constater, une erreur d’authentification, un nom
d’utilisateur ou un mot de
passe incorrect m’a été donné, même si le mot de passe et
le nom d’utilisateur correct me sont attribués.
Cela confirme donc que ce site Web injecte tout ce que
nous voulons dans le mot de passe.
Nous pouvons donc utiliser le champ mot de passe pour injecter du code SQL.
Et ça va toujours être sur ce formulaire.
Donc, nous allons mettre un mot
de passe et vous allez mettre votre code ici,
donc je vais juste le mettre en code capital ici.
Parce que nous allons mettre un mot de passe, fermer la
citation, puis mettre le code que nous
voulons exécuter sur le
système ici même, et il sera exécuté sur le système cible.