SlideShare une entreprise Scribd logo

Injection sql

SQL INJECTIONS

1  sur  12
Télécharger pour lire hors ligne
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.
Publicité

Recommandé

Examen sybase - Administration base de donnees
Examen sybase - Administration base de donneesExamen sybase - Administration base de donnees
Examen sybase - Administration base de donneeswebreaker
 
SQL injection prevention techniques
SQL injection prevention techniquesSQL injection prevention techniques
SQL injection prevention techniquesSongchaiDuangpan
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring bootAntoine Rey
 
Sécurité des bases de données
Sécurité des bases de donnéesSécurité des bases de données
Sécurité des bases de donnéeslitayem bechir
 
Bases de données réparties par la pratique
Bases de données réparties par la pratiqueBases de données réparties par la pratique
Bases de données réparties par la pratiqueAbdelouahed Abdou
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...ENSET, Université Hassan II Casablanca
 

Contenu connexe

Tendances

Rapport DVWA: CSRF
Rapport DVWA: CSRFRapport DVWA: CSRF
Rapport DVWA: CSRFAyoub Rouzi
 
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
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API RESTAbdoulaye Dieng
 
eServices-Tp1: Web Services
eServices-Tp1: Web ServiceseServices-Tp1: Web Services
eServices-Tp1: Web ServicesLilia Sfaxi
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java Youness Boukouchi
 
SQL Injections - A Powerpoint Presentation
SQL Injections - A Powerpoint PresentationSQL Injections - A Powerpoint Presentation
SQL Injections - A Powerpoint PresentationRapid Purple
 
Afficher des Données Issues de Plusieurs Tables : SQL Oracle
Afficher des Données Issues de Plusieurs Tables : SQL OracleAfficher des Données Issues de Plusieurs Tables : SQL Oracle
Afficher des Données Issues de Plusieurs Tables : SQL Oraclewebreaker
 
Sql injections - with example
Sql injections - with exampleSql injections - with example
Sql injections - with examplePrateek Chauhan
 
SGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDB
SGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDBSGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDB
SGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDBRomain Cambien
 
Telosys project booster Paris Open Source Summit 2019
Telosys project booster Paris Open Source Summit 2019Telosys project booster Paris Open Source Summit 2019
Telosys project booster Paris Open Source Summit 2019Laurent Guérin
 
Introduction vulnérabilité web
Introduction vulnérabilité webIntroduction vulnérabilité web
Introduction vulnérabilité webdavystoffel
 

Tendances (20)

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
 
Rapport DVWA: CSRF
Rapport DVWA: CSRFRapport DVWA: CSRF
Rapport DVWA: CSRF
 
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)
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API REST
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
 
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce  Basé sur Spring IOC MVC Security JPA HibernateSite JEE de ECommerce  Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
 
eServices-Tp1: Web Services
eServices-Tp1: Web ServiceseServices-Tp1: Web Services
eServices-Tp1: Web Services
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java
 
SQL Injections - A Powerpoint Presentation
SQL Injections - A Powerpoint PresentationSQL Injections - A Powerpoint Presentation
SQL Injections - A Powerpoint Presentation
 
Afficher des Données Issues de Plusieurs Tables : SQL Oracle
Afficher des Données Issues de Plusieurs Tables : SQL OracleAfficher des Données Issues de Plusieurs Tables : SQL Oracle
Afficher des Données Issues de Plusieurs Tables : SQL Oracle
 
Sql injections - with example
Sql injections - with exampleSql injections - with example
Sql injections - with example
 
Maven et industrialisation du logiciel
Maven et industrialisation du logicielMaven et industrialisation du logiciel
Maven et industrialisation du logiciel
 
Diagrammes de classes
Diagrammes de classesDiagrammes de classes
Diagrammes de classes
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 
SGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDB
SGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDBSGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDB
SGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDB
 
Telosys project booster Paris Open Source Summit 2019
Telosys project booster Paris Open Source Summit 2019Telosys project booster Paris Open Source Summit 2019
Telosys project booster Paris Open Source Summit 2019
 
cours java complet-2.pdf
cours java complet-2.pdfcours java complet-2.pdf
cours java complet-2.pdf
 
Introduction vulnérabilité web
Introduction vulnérabilité webIntroduction vulnérabilité web
Introduction vulnérabilité web
 
Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)
 

Similaire à Injection sql

Similaire à Injection sql (11)

3-android.pdf
3-android.pdf3-android.pdf
3-android.pdf
 
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
 
Les attaques par injection sql
Les attaques par injection sqlLes attaques par injection sql
Les attaques par injection sql
 
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));