SlideShare une entreprise Scribd logo
1  sur  12
INJECTION
SQL
École Normale Supérieur Vieux Kouba
Département d’Informatique
Module :
Sécurité Informatique
Présenté par :
-Bentami Billel
-Mesbaiah Ahmed Dhia Eddine Avril 2017
DÉFINITION
• La faille SQLi, abréviation de "SQL Injection", soit "injection
SQL" en français, est un groupe de méthodes
d'exploitation de faille de sécurité d'une application
interagissant avec une base de données. Elle permet d'injecter
dans la requête SQL en cours un morceau de requête non
prévu par le système et pouvant en compromettre la sécurité.
TYPES
D'INJECTION SQL
BLIND BASED:
• La méthode "blind based" (associée à sa cousine la "time based"), qui
permet de détourner la requête SQL en cours sur le système et d'injecter
des morceaux qui vont retourner caractère par caractère ce que
l'attaquant cherche à extraire de la base de données. La méthode blind
based, ainsi que la time based, se basent sur la réponse du serveur : si
la requête d'origine renvoie bien le même résultat qu'à l'origine (et
indique donc que le caractère est valide) ou ne renvoie pas le même
résultat (et indique donc que le caractère testé n'est pas le bon). La time
based a pour seule différence qu'elle se base sur le temps de réponse
du serveur plutôt que sur la réponse en elle-même.
ERROR BASED:
• La méthode "error based", qui permet de détourner la requête SQL en
cours sur le système et d'injecter des morceaux qui vont retourner
champ par champ ce que l'on cherche à extraire de la base de données.
Cette méthode profite d'une faiblesse des systèmes de base de données
permettant de détourner un message d'erreur généré par le système de
base de données et préalablement volontairement provoquée par
l'injection SQL pour lui faire retourner une valeur précise récupérée en
base de données.
UNION BASED:
• La méthode "union based", qui permet de détourner la requête SQL en
cours sur le système et d'injecter des morceaux qui vont retourner un
ensemble de données directement extraites de la base de données.
Cette méthode profite de certaines méthodes afin de détourner
entièrement le retour de la requête SQL d'origine afin de lui faire
retourner en une seule requête un important volume de données,
directement récupéré en base de données. Dans ses exemples les plus
violents, il est possible de récupérer des tables entières de base de
données en une ou deux requêtes, même si en général cette méthode
retourne entre 10 et 100 lignes de la base de données par requête
SQL détournée.
STACKED QUERIES:
• la méthode "Stacked queries", la plus dangereuse de toute. Profitant
d'une erreur de configuration du serveur de base de données, cette
méthode permet d'exécuter n'importe quelle requête SQL sur le système
impacté, ce qui ne se limite pas seulement à récupérer des données
comme les 3 précédentes. En effet, quand ce type de requête n'est pas
désactivé, il suffit d'injecter une autre requête SQL, et elle sera exécutée
sans problème, qu'elle aille chercher des données, ou en modifier
directement dans la base de données.
INJECTION SQL
SELECT id FROM membres WHERE nom='admin'
• Requête SQL effectuée:
SELECT id FROM membres WHERE nom='$login' AND pass='$pass'
• Requête SQL:
SELECT id FROM membres WHERE nom='admin'#' AND pass='‘
SELECT * FROM admin WHERE login=‘ ' OR '1'='1' AND pass=‘ ' OR '1'='1’
$login=admin’#
• Injection SQL:
• Table membres:
id login pass email user_level
1 admin 4dm1n admin@email.com 3
2 bob bob bob@email.com 1
3 alice alice alice@email.com 1
$pass=' OR 1=1#
SOLUTIONS
ÉCHAPPEMENT DES CARACTÈRES
SPÉCIAUX:
• La première solution consiste à échapper les caractères spéciaux
contenus dans les chaînes de caractères entrées par l'utilisateur.
UTILISATION D'UNE REQUÊTE PRÉPARÉE :
• La seconde solution consiste à utiliser des requêtes
préparées : dans ce cas, une compilation de la requête est
réalisée avant d'y insérer les paramètres et de l'exécuter, ce
qui empêche un éventuel code inséré dans les paramètres
d'être interprété.
Requête SQL sécurisée
$req = $bdd->prepare("SELECT * FROM utilisateurs WHERE
login= ? AND password= ?");
$req->execute(array($login, $password));
EXEMPLE TP

Contenu connexe

Tendances

Introduction to laravel framework
Introduction to laravel frameworkIntroduction to laravel framework
Introduction to laravel frameworkAhmad Fatoni
 
A Brief Introduction in SQL Injection
A Brief Introduction in SQL InjectionA Brief Introduction in SQL Injection
A Brief Introduction in SQL InjectionSina Manavi
 
Sql injection in cybersecurity
Sql injection in cybersecuritySql injection in cybersecurity
Sql injection in cybersecuritySanad Bhowmik
 
Sql injection attack
Sql injection attackSql injection attack
Sql injection attackRaghav Bisht
 
Entity Framework Core
Entity Framework CoreEntity Framework Core
Entity Framework CoreKiran Shahi
 
Understanding Cross-site Request Forgery
Understanding Cross-site Request ForgeryUnderstanding Cross-site Request Forgery
Understanding Cross-site Request ForgeryDaniel Miessler
 
SQL injection prevention techniques
SQL injection prevention techniquesSQL injection prevention techniques
SQL injection prevention techniquesSongchaiDuangpan
 
Alphorm.com Formation MySQL Administration(1Z0-883)
Alphorm.com   Formation MySQL Administration(1Z0-883)Alphorm.com   Formation MySQL Administration(1Z0-883)
Alphorm.com Formation MySQL Administration(1Z0-883)Alphorm
 
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiENSET, Université Hassan II Casablanca
 
Les bases de l'HTML / CSS
Les bases de l'HTML / CSSLes bases de l'HTML / CSS
Les bases de l'HTML / CSSSamuel Robert
 
DNS exfiltration using sqlmap
DNS exfiltration using sqlmapDNS exfiltration using sqlmap
DNS exfiltration using sqlmapMiroslav Stampar
 
Sql Injection - Vulnerability and Security
Sql Injection - Vulnerability and SecuritySql Injection - Vulnerability and Security
Sql Injection - Vulnerability and SecuritySandip Chaudhari
 
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre APIREST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre APIOuadie LAHDIOUI
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)ENSET, Université Hassan II Casablanca
 

Tendances (20)

Introduction to laravel framework
Introduction to laravel frameworkIntroduction to laravel framework
Introduction to laravel framework
 
A Brief Introduction in SQL Injection
A Brief Introduction in SQL InjectionA Brief Introduction in SQL Injection
A Brief Introduction in SQL Injection
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Java Spring
Java SpringJava Spring
Java Spring
 
Sql injection in cybersecurity
Sql injection in cybersecuritySql injection in cybersecurity
Sql injection in cybersecurity
 
Sql injection attack
Sql injection attackSql injection attack
Sql injection attack
 
Entity Framework Core
Entity Framework CoreEntity Framework Core
Entity Framework Core
 
Langage HTML
Langage HTMLLangage HTML
Langage HTML
 
Understanding Cross-site Request Forgery
Understanding Cross-site Request ForgeryUnderstanding Cross-site Request Forgery
Understanding Cross-site Request Forgery
 
SQL injection prevention techniques
SQL injection prevention techniquesSQL injection prevention techniques
SQL injection prevention techniques
 
Alphorm.com Formation MySQL Administration(1Z0-883)
Alphorm.com   Formation MySQL Administration(1Z0-883)Alphorm.com   Formation MySQL Administration(1Z0-883)
Alphorm.com Formation MySQL Administration(1Z0-883)
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 
Support JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVCSupport JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVC
 
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
 
Les bases de l'HTML / CSS
Les bases de l'HTML / CSSLes bases de l'HTML / CSS
Les bases de l'HTML / CSS
 
DNS exfiltration using sqlmap
DNS exfiltration using sqlmapDNS exfiltration using sqlmap
DNS exfiltration using sqlmap
 
Sql Injection - Vulnerability and Security
Sql Injection - Vulnerability and SecuritySql Injection - Vulnerability and Security
Sql Injection - Vulnerability and Security
 
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre APIREST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
 
How to identify and prevent SQL injection
How to identify and prevent SQL injection  How to identify and prevent SQL injection
How to identify and prevent SQL injection
 

Similaire à Injection sql

injection sql for cybersecurity studentsss.pptx
injection sql for cybersecurity studentsss.pptxinjection sql for cybersecurity studentsss.pptx
injection sql for cybersecurity studentsss.pptxChaymaeElhasnaoui
 
Sql azure performance et montee en charge (1)
Sql azure   performance et montee en charge (1)Sql azure   performance et montee en charge (1)
Sql azure performance et montee en charge (1)Aymeric Weinbach
 
Développement Web- PHP (partie II).pdf
Développement Web- PHP (partie II).pdfDéveloppement Web- PHP (partie II).pdf
Développement Web- PHP (partie II).pdfYasushiTsubakik
 
CocoaHeads Rennes #16: OHHTTPStubs
CocoaHeads Rennes #16: OHHTTPStubsCocoaHeads Rennes #16: OHHTTPStubs
CocoaHeads Rennes #16: OHHTTPStubsCocoaHeadsRNS
 

Similaire à Injection sql (11)

3-android.pdf
3-android.pdf3-android.pdf
3-android.pdf
 
injection sql for cybersecurity studentsss.pptx
injection sql for cybersecurity studentsss.pptxinjection sql for cybersecurity studentsss.pptx
injection sql for cybersecurity studentsss.pptx
 
Sql azure performance et montee en charge (1)
Sql azure   performance et montee en charge (1)Sql azure   performance et montee en charge (1)
Sql azure performance et montee en charge (1)
 
Développement Web- PHP (partie II).pdf
Développement Web- PHP (partie II).pdfDéveloppement Web- PHP (partie II).pdf
Développement Web- PHP (partie II).pdf
 
Sql
SqlSql
Sql
 
Sql
SqlSql
Sql
 
CocoaHeads Rennes #16: OHHTTPStubs
CocoaHeads Rennes #16: OHHTTPStubsCocoaHeads Rennes #16: OHHTTPStubs
CocoaHeads Rennes #16: OHHTTPStubs
 
Cours sql-sh-
Cours sql-sh-Cours sql-sh-
Cours sql-sh-
 
Sécurité MySQL
Sécurité MySQLSécurité MySQL
Sécurité MySQL
 
Jdbc
JdbcJdbc
Jdbc
 
Cours Secu Web
Cours Secu WebCours Secu Web
Cours Secu Web
 

Injection sql

  • 1. INJECTION SQL École Normale Supérieur Vieux Kouba Département d’Informatique Module : Sécurité Informatique Présenté par : -Bentami Billel -Mesbaiah Ahmed Dhia Eddine Avril 2017
  • 2. DÉFINITION • La faille SQLi, abréviation de "SQL Injection", soit "injection SQL" en français, est un groupe de méthodes d'exploitation de faille de sécurité d'une application interagissant avec une base de données. Elle permet d'injecter dans la requête SQL en cours un morceau de requête non prévu par le système et pouvant en compromettre la sécurité.
  • 4. BLIND BASED: • La méthode "blind based" (associée à sa cousine la "time based"), qui permet de détourner la requête SQL en cours sur le système et d'injecter des morceaux qui vont retourner caractère par caractère ce que l'attaquant cherche à extraire de la base de données. La méthode blind based, ainsi que la time based, se basent sur la réponse du serveur : si la requête d'origine renvoie bien le même résultat qu'à l'origine (et indique donc que le caractère est valide) ou ne renvoie pas le même résultat (et indique donc que le caractère testé n'est pas le bon). La time based a pour seule différence qu'elle se base sur le temps de réponse du serveur plutôt que sur la réponse en elle-même.
  • 5. ERROR BASED: • La méthode "error based", qui permet de détourner la requête SQL en cours sur le système et d'injecter des morceaux qui vont retourner champ par champ ce que l'on cherche à extraire de la base de données. Cette méthode profite d'une faiblesse des systèmes de base de données permettant de détourner un message d'erreur généré par le système de base de données et préalablement volontairement provoquée par l'injection SQL pour lui faire retourner une valeur précise récupérée en base de données.
  • 6. UNION BASED: • La méthode "union based", qui permet de détourner la requête SQL en cours sur le système et d'injecter des morceaux qui vont retourner un ensemble de données directement extraites de la base de données. Cette méthode profite de certaines méthodes afin de détourner entièrement le retour de la requête SQL d'origine afin de lui faire retourner en une seule requête un important volume de données, directement récupéré en base de données. Dans ses exemples les plus violents, il est possible de récupérer des tables entières de base de données en une ou deux requêtes, même si en général cette méthode retourne entre 10 et 100 lignes de la base de données par requête SQL détournée.
  • 7. STACKED QUERIES: • la méthode "Stacked queries", la plus dangereuse de toute. Profitant d'une erreur de configuration du serveur de base de données, cette méthode permet d'exécuter n'importe quelle requête SQL sur le système impacté, ce qui ne se limite pas seulement à récupérer des données comme les 3 précédentes. En effet, quand ce type de requête n'est pas désactivé, il suffit d'injecter une autre requête SQL, et elle sera exécutée sans problème, qu'elle aille chercher des données, ou en modifier directement dans la base de données.
  • 8. INJECTION SQL SELECT id FROM membres WHERE nom='admin' • Requête SQL effectuée: SELECT id FROM membres WHERE nom='$login' AND pass='$pass' • Requête SQL: SELECT id FROM membres WHERE nom='admin'#' AND pass='‘ SELECT * FROM admin WHERE login=‘ ' OR '1'='1' AND pass=‘ ' OR '1'='1’ $login=admin’# • Injection SQL: • Table membres: id login pass email user_level 1 admin 4dm1n admin@email.com 3 2 bob bob bob@email.com 1 3 alice alice alice@email.com 1 $pass=' OR 1=1#
  • 10. ÉCHAPPEMENT DES CARACTÈRES SPÉCIAUX: • La première solution consiste à échapper les caractères spéciaux contenus dans les chaînes de caractères entrées par l'utilisateur.
  • 11. UTILISATION D'UNE REQUÊTE PRÉPARÉE : • La seconde solution consiste à utiliser des requêtes préparées : dans ce cas, une compilation de la requête est réalisée avant d'y insérer les paramètres et de l'exécuter, ce qui empêche un éventuel code inséré dans les paramètres d'être interprété. Requête SQL sécurisée $req = $bdd->prepare("SELECT * FROM utilisateurs WHERE login= ? AND password= ?"); $req->execute(array($login, $password));