578 tutoriels en ligne

Créa-blog

#100JoursPourCoder
Projet Créa-code

Ressources pour développeur web

Théme de la semaine : Google Analytics

SQLMap : Guide pour analyser les failles d’injections SQL

Temps de lecture estimé : 10 minutes
Accueil Sécurité SQLMap : Guide pour analyser les failles d’injections SQL

Il existe des outils qui font peur rien qu’à leur nom. SQLMap en fait souvent partie. Beaucoup de débutants l’associent immédiatement au piratage, aux lignes de commande obscures et aux écrans noirs remplis de texte incompréhensible. Pourtant, derrière cette image un peu intimidante se cache un outil extrêmement pédagogique pour analyser, détecter et corriger les failles d’injections SQL.

  • Comprendre à quoi sert SQLMap et pourquoi cet outil est central pour détecter et analyser les failles SQL, même quand on débute en sécurité web.
  • Apprendre à utiliser SQLMap avec une vision logique et progressive qui permet de savoir quand l’employer, quoi tester et comment interpréter ses résultats.
  • Développer de vrais réflexes de sécurité, utiles aussi bien pour tester une application que pour écrire du code plus robuste et éviter les erreurs classiques liées aux bases de données.

SQLMap est avant tout un outil d’apprentissage. Il permet de comprendre comment fonctionnent les failles SQL, pourquoi elles existent, et surtout comment les détecter proprement. En sécurité informatique, comprendre l’attaque est souvent la meilleure façon d’apprendre à se défendre.

Dans ce guide, nous allons avancer pas à pas, sans prérequis. Vous allez découvrir ce qu’est SQLMap, à quoi il sert réellement, quand l’utiliser, et comment l’utiliser sans vous perdre. L’objectif n’est pas de vous transformer en expert du jour au lendemain, mais de vous rendre à l’aise avec les bases.

Qu’est-ce que SQLMap exactement ?

SQLMap est un outil en ligne de commande, open source, écrit en Python. Son rôle principal est de détecter et exploiter automatiquement les failles d’injection SQL sur des applications web. Dit comme ça, cela peut sembler très technique. Alors simplifions.

Une injection SQL est une faille qui permet à un attaquant d’envoyer du code SQL à une base de données via un champ mal protégé, comme un formulaire ou une URL. Si l’application ne filtre pas correctement les données envoyées par l’utilisateur, la base de données peut exécuter des commandes qu’elle n’aurait jamais dû accepter.

SQLMap agit comme un assistant très méthodique. Il teste différents types d’injections, observe les réponses du serveur, analyse les erreurs, et déduit si une faille existe. Là où un humain testerait à la main pendant des heures, SQLMap automatise tout ce travail. Ce n’est donc pas un outil magique, ni un bouton “pirater”. C’est un scanner intelligent spécialisé dans les injections SQL.

Pour mieux comprendre : Comment se protéger des injections SQL

À quoi sert SQLMap dans la vraie vie ?

SQLMap est principalement utilisé dans trois contextes bien précis. Le premier est l’apprentissage. Quand on débute en sécurité web, il est souvent difficile de visualiser concrètement une faille SQL. SQLMap permet de voir les choses en action, de comprendre les mécanismes, et de relier la théorie à la pratique.

Le deuxième contexte est l’audit de sécurité. Les développeurs, administrateurs système ou pentesters utilisent SQLMap pour vérifier qu’un site ou une application ne présente pas de vulnérabilités critiques. Dans ce cadre, l’outil est utilisé avec autorisation, sur des environnements de test ou de préproduction.

Enfin, SQLMap est aussi utilisé pour la recherche et la démonstration. Montrer à un client ou à une équipe qu’une faille existe est souvent plus parlant qu’un long rapport théorique. SQLMap permet de prouver l’existence d’un problème de façon factuelle.

Il est important d’insister sur un point fondamental. Utiliser SQLMap sans autorisation sur un site qui ne vous appartient pas est illégal. Cet outil doit être utilisé dans un cadre pédagogique, professionnel ou légalement encadré.


SQLMap n’est pas agressif, il est curieux. Il pose des hypothèses, vérifie, puis conclut. Exactement comme un développeur qui débogue son code.

Quand utiliser SQLMap ?

SQLMap ne s’utilise pas n’importe quand, ni n’importe comment. Il est pertinent lorsque vous suspectez la présence d’une base de données derrière une application web et que des entrées utilisateur sont transmises au serveur.

Par exemple, une URL contenant un paramètre comme id=12 est souvent un bon candidat. De même, un formulaire de recherche, un formulaire de connexion ou un filtre de produits peuvent être des points d’entrée intéressants.

SQLMap est aussi utile après avoir repéré un comportement étrange. Une erreur SQL affichée à l’écran, une page qui réagit différemment selon la valeur envoyée, ou un temps de réponse anormalement long peuvent indiquer une vulnérabilité potentielle.

En revanche, SQLMap n’est pas un outil de reconnaissance générale. Il ne remplace pas un scanner complet comme ceux utilisés pour analyser toute la surface d’attaque d’un site. Il intervient à un moment précis, quand on soupçonne une faille SQL.

Comment fonctionne SQLMap

Le fonctionnement de SQLMap repose sur une idée simple. Il envoie des requêtes légèrement modifiées et observe la réaction du serveur. Selon la réponse, il déduit si une injection est possible.

Par exemple, SQLMap peut envoyer une valeur normale, puis la même valeur accompagnée d’un caractère spécial. Si la réponse change, cela peut indiquer que la base de données a interprété quelque chose.

SQLMap connaît des centaines de techniques d’injection. Certaines reposent sur les messages d’erreur, d’autres sur le temps de réponse, et d’autres encore sur le contenu retourné. Il choisit automatiquement la méthode la plus adaptée selon la situation.

SQLMap et le principe d'injection SQL

Ce qui est rassurant pour un débutant, c’est que SQLMap guide beaucoup l’utilisateur. Il pose des questions, propose des choix par défaut et explique souvent ce qu’il est en train de faire.

Installer SQLMap

SQLMap fonctionne sur Windows, macOS et Linux. Il est déjà préinstallé sur certaines distributions orientées sécurité, mais il peut aussi être installé manuellement très facilement.

La première chose à faire est de vérifier que Python est installé sur votre machine. SQLMap fonctionne avec Python 3. Une fois cela fait, vous pouvez récupérer SQLMap depuis son dépôt officiel.

L’installation se résume généralement à cloner le projet ou à télécharger une archive. Aucun compilateur, aucune configuration complexe n’est nécessaire. SQLMap est portable, ce qui signifie qu’il peut être lancé directement depuis son dossier.

SQLMap s’installe simplement en clonant son dépôt officiel avec la commande :

git clone https://github.com/sqlmapproject/sqlmap.git

Puis il suffit de se placer dans le dossier et de le lancer avec python3 sqlmap.py, à condition d’avoir Python 3 installé sur votre machine.

SqlMap

Une fois installé, la commande principale sera sqlmap. C’est elle que vous utiliserez pour toutes les opérations.

Première utilisation de SQLMap

Pour débuter, imaginons une URL simple, sur un site de test volontairement vulnérable. L’URL pourrait ressembler à quelque chose comme http://site-test.local/page.php?id=1.

La commande de base pour tester cette URL avec SQLMap est la suivante :

sqlmap -u "http://site-test.local/page.php?id=1"

Avec cette seule commande, SQLMap va analyser le paramètre id, tester différentes injections, et vous dire s’il est vulnérable. C’est volontairement simple.

Pendant l’exécution, SQLMap va vous poser des questions. Il peut vous demander si vous souhaitez tester un paramètre spécifique ou utiliser certaines techniques. Quand vous débutez, accepter les choix par défaut est souvent la meilleure option.

À la fin de l’analyse, SQLMap vous indiquera clairement si une injection SQL a été trouvée, et quel type de base de données est utilisé.

Pour utiliser SQLMap efficacement, il est important de cibler des URL qui transmettent des données à une base de données, car toutes les pages web ne sont pas concernées.

Les URL les plus intéressantes sont celles qui contiennent des paramètres visibles, comme ?id=?page= ou ?category=, car ces valeurs sont souvent utilisées dans des requêtes SQL côté serveur. Les pages de recherche, de filtrage, de pagination ou de détail d’un élément sont également de bons candidats, tout comme les formulaires envoyés en POST, par exemple pour la connexion ou l’inscription.

En revanche, une page statique sans paramètres ni interaction avec une base de données n’offrira généralement rien à tester, ce qui permet déjà de mieux cibler ses analyses et d’éviter des tests inutiles.


À ce stade, vous savez ce qu’est SQLMap, pourquoi il existe, et comment l’utiliser dans sa forme la plus simple. Vous avez vu que ce n’est ni un outil magique ni un outil réservé à une élite. C’est un compagnon de diagnostic, très bavard, parfois un peu insistant, mais toujours méthodique.

Maintenant, nous allons voir comment exploiter une faille détectée, comment lister les bases de données, les tables et les colonnes, et surtout comment comprendre ce que SQLMap vous montre, sans réciter des commandes sans les comprendre.

Explorer une base de données avec SQLMap, étape par étape

Une fois qu’une injection SQL est détectée, beaucoup de débutants ne savent plus quoi faire. C’est normal. À ce stade, SQLMap a fait le plus dur, mais encore faut-il comprendre comment dialoguer avec lui intelligemment.

Lorsque SQLMap confirme qu’un paramètre est vulnérable, cela signifie qu’il peut interagir avec la base de données derrière le site. La première question logique à se poser est simple : quelle est cette base de données ? MySQL, PostgreSQL, SQLite, SQL Server ? Cette information est essentielle, car chaque moteur a ses particularités.

Pour demander cette information à SQLMap, il suffit d’ajouter un paramètre très parlant :

sqlmap -u "http://site-test.local/page.php?id=1" --dbms

Dans la plupart des cas, SQLMap détecte automatiquement le type de base de données, sans même que vous ayez besoin de le préciser. Il affiche alors un message clair indiquant le moteur utilisé. Pour un débutant, c’est déjà une petite victoire : vous savez maintenant ce que vous avez en face de vous.

Lister les bases de données disponibles

Une application web ne fonctionne presque jamais avec une seule base de données. Il peut y en avoir plusieurs sur le serveur. SQLMap permet de les lister très facilement.

Pour cela, on utilise l’option --dbs. Cette commande demande explicitement à SQLMap d’énumérer toutes les bases accessibles via la faille détectée.

sqlmap -u "http://site-test.local/page.php?id=1" --dbs

SQLMap va alors lancer une série de requêtes automatiques et afficher une liste de noms de bases de données. À ce moment-là, prenez le temps de lire. Vous verrez souvent des noms explicites comme information_schematestusers_db ou site_production.

Pour un débutant, il est important de comprendre que toutes ces bases ne sont pas forcément intéressantes. Certaines sont techniques, d’autres contiennent les données réelles de l’application. Le but n’est pas de tout explorer au hasard, mais de comprendre ce qui existe.

Formation web et informatique - Alban Guillier - Formateur

Des formations informatique pour tous !

Débutant ou curieux ? Apprenez le développement web, le référencement, le webmarketing, la bureautique, à maîtriser vos appareils Apple et bien plus encore…

Formateur indépendant, professionnel du web depuis 2006, je vous accompagne pas à pas et en cours particulier, que vous soyez débutant ou que vous souhaitiez progresser. En visio, à votre rythme, et toujours avec pédagogie.

Découvrez mes formations Qui suis-je ?

Explorer les tables d’une base de données

Une base de données, c’est un peu comme un classeur. À l’intérieur, on trouve des tables, qui ressemblent à des feuilles de calcul. Chaque table contient des informations précises : utilisateurs, articles, commandes, messages, etc.

Une fois que vous avez identifié une base de données intéressante, vous pouvez demander à SQLMap de lister ses tables. Pour cela, il faut préciser le nom de la base avec l’option -D, puis utiliser --tables.

sqlmap -u "http://site-test.local/page.php?id=1" -D site_production --tables

SQLMap va alors afficher les tables disponibles dans cette base. Là encore, les noms sont souvent explicites. Une table appelée usersaccounts ou members attire naturellement l’attention, car elle contient généralement des informations sensibles.

C’est ici que SQLMap devient un outil pédagogique. Vous commencez à visualiser la structure réelle d’une application web, bien au-delà de ce que vous voyez dans le navigateur.

Comprendre les colonnes d’une table

Une table sans colonnes ne sert à rien. Les colonnes définissent le type d’information stockée. Par exemple, une table users contient souvent des colonnes comme idusernameemailpassword.

Pour afficher les colonnes d’une table précise, SQLMap propose l’option --columns. Il faut simplement indiquer la base et la table concernées.

sqlmap -u "http://site-test.local/page.php?id=1" -D site_production -T users --columns

SQLMap va alors afficher la liste des colonnes, avec parfois leur type. C’est un moment clé pour comprendre comment les données sont organisées.

Pour un débutant, il est essentiel de ne pas aller trop vite ici. Prenez le temps d’observer. Demandez-vous à quoi servent ces colonnes. Essayez de faire le lien avec ce que vous voyez sur le site. C’est exactement ce raisonnement qui permet de progresser en sécurité web.

Extraire des données avec SQLMap

Une fois que vous connaissez la structure, SQLMap peut aller encore plus loin et extraire les données elles-mêmes. C’est souvent la partie la plus impressionnante, mais aussi celle qui doit être abordée avec le plus de recul.

Pour extraire le contenu d’une table, on utilise l’option --dump. Comme précédemment, il faut préciser la base et la table.

sqlmap -u "http://site-test.local/page.php?id=1" -D site_production -T users --dump

SQLMap va alors afficher les lignes de la table, sous forme lisible. Vous verrez apparaître des identifiants, des emails, parfois des mots de passe chiffrés.

C’est ici qu’il faut rappeler une chose importante. Le but pédagogique n’est pas de collecter des données, mais de comprendre pourquoi elles sont accessibles. Si SQLMap peut les lire, c’est qu’il existe un problème de sécurité sérieux dans l’application.

Utiliser SQLMap avec des formulaires POST

Jusqu’ici, nous avons utilisé des exemples basés sur des URL avec paramètres GET. Mais beaucoup d’applications utilisent des formulaires envoyés en POST, notamment pour la connexion ou la recherche. SQLMap sait parfaitement gérer ce cas. Il suffit de lui fournir les données POST avec l’option --data.

Imaginons un formulaire de connexion qui envoie username et password. La commande pourrait ressembler à ceci :

sqlmap -u "http://site-test.local/login.php" --data="username=test&password=test"

SQLMap va analyser les paramètres envoyés et tester chacun d’eux. Là encore, il vous guidera en posant des questions si plusieurs paramètres semblent intéressants.

Pour un débutant, c’est une excellente façon de comprendre comment les données circulent entre le navigateur, le serveur et la base de données.

Gérer la vitesse et la discrétion

SQLMap est puissant, mais il peut être bruyant. Il envoie beaucoup de requêtes, parfois très rapidement. Sur un serveur réel, cela peut attirer l’attention ou provoquer des ralentissements.

Heureusement, SQLMap permet de régler son comportement. Par exemple, l’option --delay permet d’ajouter un délai entre chaque requête.

sqlmap -u "http://site-test.local/page.php?id=1" --delay=2

Cela signifie que SQLMap attendra deux secondes entre chaque test. C’est plus lent, mais plus discret. Pour un débutant, c’est aussi plus confortable, car les informations s’affichent moins vite à l’écran.

Comprendre les messages de SQLMap

SQLMap parle beaucoup. Il affiche des avertissements, des informations, des confirmations. Ne les ignorez pas. Ces messages sont une mine d’or pour comprendre ce que l’outil fait réellement.

Quand SQLMap vous propose d’utiliser une technique particulière, ce n’est pas au hasard. Il a détecté un comportement spécifique du serveur. Lire ces messages, même sans tout comprendre au début, permet d’acquérir des réflexes de sécurité très précieux.

Prendre du recul sur l’utilisation de SQLMap

À ce stade, vous avez probablement compris une chose essentielle. SQLMap n’est pas une fin en soi. Ce n’est pas l’outil qui fait la compétence, mais la compréhension de ce qu’il révèle.

Un développeur qui utilise SQLMap sur ses propres projets apprend énormément. Il comprend pourquoi les requêtes préparées sont indispensables, pourquoi il faut filtrer les entrées utilisateur, et pourquoi afficher des erreurs SQL est une très mauvaise idée.

Les erreurs classiques quand on débute avec SQLMap

Quand on commence à utiliser SQLMap, certaines erreurs reviennent très souvent. Elles ne sont pas graves, mais elles peuvent freiner la compréhension et donner une fausse image de l’outil.

La première erreur consiste à lancer SQLMap “dans le vide”, sans vraiment savoir ce que l’on teste. SQLMap n’est pas un moteur de recherche de failles global. Il a besoin d’un point d’entrée précis, comme un paramètre d’URL ou un formulaire. Si vous lui donnez une page sans interaction avec une base de données, il ne trouvera rien, et c’est normal.

La deuxième erreur est de vouloir aller trop vite. Beaucoup de débutants enchaînent les commandes sans comprendre ce qu’elles font, simplement parce qu’ils les ont vues ailleurs. SQLMap fonctionne très bien, mais uniquement si vous savez ce que vous lui demandez. Chaque option correspond à une action précise, et prendre le temps de les comprendre est essentiel.

Enfin, une erreur fréquente est de confondre test et exploitation abusive. SQLMap peut extraire des données, mais ce n’est pas un objectif en soi. Si vous utilisez l’outil dans un cadre pédagogique ou professionnel, le simple fait de prouver qu’une extraction est possible est souvent suffisant.

Utiliser SQLMap de manière responsable

SQLMap est un outil puissant, et comme tout outil puissant, il implique une responsabilité. Tester une application sans autorisation explicite est illégal, même si votre intention est “juste de voir”.

Dans un cadre d’apprentissage, il est fortement recommandé d’utiliser des environnements volontairement vulnérables. Il existe de nombreuses applications conçues pour cela, qui permettent d’apprendre sans risque juridique. SQLMap y devient un formidable terrain de jeu pédagogique.

Dans un cadre professionnel, SQLMap est utilisé après accord écrit, souvent dans le cadre d’un audit ou d’un test d’intrusion. Là encore, l’objectif n’est pas de “casser” un site, mais de mettre en évidence des failles pour les corriger.

Adopter cette posture responsable change complètement la façon dont on perçoit SQLMap. Il ne s’agit plus d’un outil agressif, mais d’un révélateur de problèmes.

Comprendre ce que SQLMap ne fait pas

Il est important de casser un mythe. SQLMap ne trouve pas toutes les failles, et il ne remplace pas un humain. Il est spécialisé dans les injections SQL, et uniquement dans ce domaine.

Si une application est vulnérable à une faille logique, à un problème d’authentification ou à une mauvaise gestion des droits, SQLMap ne verra rien. De la même façon, si les entrées sont correctement protégées par des requêtes préparées, SQLMap échouera, ce qui est une excellente nouvelle.

Comprendre les limites de SQLMap permet aussi de mieux comprendre la sécurité web dans son ensemble. Aucun outil ne fait tout. Ils sont complémentaires, et SQLMap occupe une place très précise dans cet écosystème.

Pourquoi SQLMap est un excellent outil pour les développeurs

On pense souvent que SQLMap est réservé aux experts en cybersécurité. En réalité, les développeurs ont énormément à gagner en l’utilisant.

Tester son propre code avec SQLMap permet de vérifier concrètement que les protections mises en place fonctionnent. C’est aussi un excellent moyen de comprendre les conséquences d’une simple requête mal écrite.

Beaucoup de développeurs racontent qu’après avoir vu SQLMap extraire des données sur une application de test, ils n’ont plus jamais écrit une requête SQL de la même façon. C’est souvent à ce moment-là que les notions de validation, d’échappement et de requêtes préparées prennent tout leur sens.

Tableau récapitulatif des commandes et paramètres essentiels de SQLMap

Pour conclure cette partie pratique, voici un tableau récapitulatif des commandes et options les plus utiles pour SQLMap. Ce tableau est pensé comme un aide-mémoire simple, auquel vous pourrez revenir facilement.

Commande / OptionRôle principalExplication simple
-uCible URLIndique l’URL à tester avec ses paramètres
--dataDonnées POSTPermet de tester un formulaire envoyé en POST
--dbmsType de baseDétecte ou précise le moteur de base de données
--dbsListe des basesAffiche toutes les bases de données accessibles
-DBase cibléeSélectionne une base de données précise
--tablesListe des tablesAffiche les tables d’une base sélectionnée
-TTable cibléeSélectionne une table spécifique
--columnsColonnesAffiche les colonnes d’une table
--dumpExtractionExtrait les données d’une table
--delayRalentissementAjoute un délai entre les requêtes
--batchMode automatiqueÉvite les questions interactives
--levelNiveau de testAugmente le nombre de tests effectués
--riskNiveau de risqueActive des tests plus intrusifs

Ce tableau ne couvre pas toutes les options de SQLMap, mais il regroupe l’essentiel pour bien démarrer et comprendre les bases.


Apprendre SQLMap, ce n’est pas apprendre à attaquer. C’est apprendre à observer, analyser et comprendre comment une application dialogue avec sa base de données. C’est aussi prendre conscience de la fragilité de certaines implémentations, parfois causées par une simple ligne de code écrite trop vite.

Si vous êtes débutant, ne cherchez pas à tout maîtriser d’un coup. SQLMap est un outil que l’on apprivoise avec le temps. Chaque test, chaque message affiché, chaque échec est une occasion de progresser et de renforcer votre compréhension du web.

En fin de compte, SQLMap n’est pas là pour faire peur. Il est là pour apprendre, corriger et sécuriser. Et une fois que vous avez compris cela, il devient non seulement accessible, mais presque rassurant.