Instructeur: D'accord, j'aimerais maintenant vous
montrer une injection SQL et dans un fichier
différent et dans
une page différente, et je vais vous montrer
différentes choses que vous pouvez faire pour exploiter cette vulnérabilité.
Donc, la première chose que je vais aller à la page
de connexion qui est ici.
Informations utilisateur.
Ainsi, la première fois que nous sommes allés à la page de connexion à partir de là,
nous sommes allés cette fois à la page Informations utilisateur.
Donc, cette page va vous montrer les informations sur l'utilisateur à condition
que vous donniez le nom d'utilisateur et le mot de passe.
Donc, je vais faire
zaid et je vais mettre mon mot de passe, 123456.
Et cela montrera mes coordonnées, nom d'utilisateur et mot de passe et ma
signature en tant que aa.
Ainsi, l'instruction en cours d'exécution est
similaire à celle en cours d'exécution lorsque
vous vous connectez.
Donc, sélectionnez une étoile parmi les comptes
où nom d'utilisateur est ce que vous avez mis dans le champ utilisateur et mot
de passe est ce que vous avez mis dans le champ mot de passe.
Nous allons donc maintenant
voir une façon différente d’exploiter ce
type de vulnérabilité.
Dans la vidéo
précédente, nous le faisions à l'aide d'une zone de texte POST.
Ainsi, tout ce que vous avez
mis dans la zone de texte a été posté à l’aide d’une méthode POST dans l’application Web.
Ces vulnérabilités peuvent maintenant exister dans GET.
Et ce que je
veux dire par Get, c'est quand vous faites un Get quand quelque chose est envoyé
en tant que GET, vous le verrez ici dans l'URL.
Donc, si vous regardez
l'URL ici, vous voyez qu'il est envoyé sous le nom
d'utilisateur zaid et le mot de passe 123456.
Alors laissez-moi simplement copier cette URL ici.
Et nous allons commencer
à jouer avec l'URL au lieu de le faire sur la page Web.
Je veux juste vous montrer un exemple
différent, car dans de nombreux endroits, il
pourrait même ne pas y avoir de
zones de texte, par exemple, cela pourrait être quelque chose comme
des actualités et des actualités. php, on peut donc voir ici, par exemple,
dans cet exemple, c'est index. php.
Et dans vos tests de stylo, vous pourriez
voir quelque chose comme des nouvelles. php et
par exemple, id est égal à deux et vous
pouvez ensuite essayer d’injecter des choses là-dedans.
Nous avons donc un
exemple ici où nous allons injecter
des choses dans le champ nom d'utilisateur qui est
ce champ et nous allons injecter des choses ici.
Donc, chaque fois que vous effectuez votre test en stylo,
chaque fois que vous voyez des paramètres comme celui-ci, vous
devez essayer de les injecter.
Chaque fois que vous voyez quelque chose. php et
puis vous avez un paramètre égal à quelque chose,
alors essayez toujours d'injecter des trucs dedans et voir
si cela fonctionne pour vous.
Nous avons donc également vu un moyen
de découvrir l’injection, c’est-à-dire utiliser le guillemet
et le.
Nous faisons donc un faux et un vrai et
et un égal
à un puis un et
égal à deux et si le serveur exécute ce que
nous voulons, alors nous saurons qu'il y a une injection SQL.
Je vais
vous montrer une autre façon
de découvrir ces exploits en utilisant l'ordre de.
Comme son
nom l'indique, l'instruction order by
permet d'ordonner les résultats à l'écran en
fonction d'une colonne spécifique.
Donc, notre injection va être comme ça.
Donc je vais commander par un.
Donc, si l'injection existe, cela devrait fonctionner car
dans
chaque instruction select, il devrait
y avoir au moins une colonne sélectionnée.
Par conséquent, lorsque nous disons l'ordre
par un, nous disons que je veux ordonner les
résultats en fonction de
la première colonne. Par conséquent, cela devrait toujours être acceptable
pour la base de données.
Et retourne un vrai ou quelque chose que nous attendons.
Nous devons également ajouter le commentaire
ici et exécuter ce code.
Donc, c'est exactement comme avant.
Donc quand nous faisons
cela, c'est en gros notre URL et ce qui va se passer dans
la base de données, donc c'est
le code qui est exécuté
sur la base de données, ça va ressembler à ceci.
Donc, ce sera une étoile sélectionnée
parmi les comptes où le nom
d'utilisateur est égal à zaid et notez comment cela
ferme la citation et nous allons faire une commande par un et il
ne devrait pas y avoir ce code
pour le et, et ce commentaire indiquera au Interprète SQL pour ignorer tout ce
qui vient après, donc tout
cela va être ignoré.
Donc, je copie cela.
Donc, vous pouvez réellement coller cette injection de zaid
order par un dans le
nom ci-dessous et ça va marcher, mais encore une
fois, je veux juste vous montrer une
façon différente de le faire en l'injectant via le navigateur.
Une autre chose que je
voudrais que vous
remarquiez, c’est que lorsque vous injectez des éléments dans le navigateur, celui-ci doit être codé.
Ainsi, par exemple, ce signe généralement, lorsque vous le
mettez sur l’URL, il
doit être écrit sous la forme% 23.
Les espaces, par exemple, sont convertis
en% 20 et% 23 est le commentaire que nous utilisons.
Je vais donc copier ça et remplacer mon commentaire par ce commentaire.
Maintenant, vous pouvez google HTTP Encoder et vous
verrez en ligne qu'il existe des outils
en ligne qui vont simplement convertir cela pour vous.
Pour moi, je sais maintenant que le hashtag
peut être converti en% 20.
C'est pourquoi je l'utilise là-bas.
Et je vais frapper Enter.
Et comme vous
pouvez le voir maintenant, nous constatons quelque chose d’acceptable.
Rien à redire et ensuite il me montre
les informations sur zaid 123456 et me montre la signature.
Donc, le mot de passe est
ignoré, l'injection a fonctionné et
elle a été commandée par un, de
sorte que rien ne se passe de travers.
Essayons de faire de ce numéro un un très grand
nombre, alors je vais en mettre 10 000 ou 100 000 maintenant.
Donc, ce que
nous disons maintenant, c'est que je veux
que vous ordonniez les résultats qui seront renvoyés par l'instruction
select actuelle basée sur la colonne 100 000.
Il y a maintenant des chances que 100 000 colonnes ne
soient pas utilisées dans cette
instruction select, ce qui devrait donc renvoyer une erreur.
Donc, quand j'exécute ceci,
vous verrez qu'il y a une erreur.
Et l'erreur est dans l'ordre fermé.
Et il existe toujours une colonne inconnue pour 100 000 personnes, ce qui est très
bien car nous savons maintenant que
la base de données exécute ce que nous voulons.
Ainsi, lorsque nous lui avons demandé de classer les
résultats en fonction de la première colonne, ils nous ont montré des résultats.
Donc, il a suivi ce que nous lui
avons dit et
ensuite, lorsque nous lui avons ordonné de classer les résultats sur
la base d'une colonne inexistante, cela nous a donné une erreur.
Donc, il est évidemment vulnérable aux injections SQL.