Podemos enfrentarnos a muchos problemas al configurar SQLMap o al usarlo con solicitudes HTTP. En esta sección, analizaremos los mecanismos recomendados para encontrar la causa y solucionarla adecuadamente.
Errores de visualización
El primer paso suele ser utilizar el parámetro --parse-errors, para analizar los errores del DBMS (si los hay) y mostrarlos como parte de la ejecución del programa:
...SNIP...
[16:09:20] [INFO] testing if GET parameter 'id' is dynamic
[16:09:20] [INFO] GET parameter 'id' appears to be dynamic
[16:09:20] [WARNING] parsed DBMS error message: 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '))"',),)((' at line 1'"
[16:09:20] [INFO] heuristic (basic) test shows that GET parameter 'id' might be injectable (possible DBMS: 'MySQL')
[16:09:20] [WARNING] parsed DBMS error message: 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''YzDZJELylInm' at line 1'
...SNIP...
Con esta opción, SQLMap imprimirá automáticamente el error del DBMS, dándonos así claridad sobre cuál puede ser el problema para que podamos solucionarlo adecuadamente.
Almacenar el tráfico
La opción -t almacena todo el contenido del tráfico en un archivo de salida:
Como podemos ver en el resultado anterior, el archivo /tmp/traffic.txt ahora contiene todas las solicitudes HTTP enviadas y recibidas. Por lo tanto, ahora podemos investigar manualmente estas solicitudes para ver dónde se produce el problema.
Salida detallada
Otra flag útil es la opción -v que aumenta el nivel de verbosidad de la salida de la consola:
Como podemos ver, la opción -v 6 imprimirá directamente todos los errores y la solicitud HTTP completa en la terminal para que podamos seguir todo lo que SQLMap está haciendo en tiempo real.
Usando Proxy
Por último, podemos utilizar la opción --proxy para redirigir todo el tráfico a través de un proxy (MiTM) (por ejemplo, Burp). Esto enrutará todo el tráfico de SQLMap a través de Burp, de modo que luego podamos investigar manualmente todas las solicitudes, repetirlas y utilizar todas las funciones de Burp con estas solicitudes: