Podría estar equivocado, pero estoy bastante seguro de que su principal problema es que está intentando hacer una inyección de mysql mal. Como regla general, si una carga útil puede desencadenar un error de sintaxis de SQL, entonces sus intentos de evitar la Inyección de SQL no están funcionando realmente . Por ejemplo, si estaba utilizando consultas preparadas, no hay forma de que la carga útil genere un error de sintaxis SQL.
En este caso particular, el problema es que está utilizando el tipo de comentario incorrecto para ocultar el resto del comando. En este caso, es probable que tenga más suerte (haciendo que ocurra la inyección SQL) si usara un guión doble ( --
) o un signo de libra ( #
) que ambos inician comentarios de una sola línea en MariaDB. El carácter de comentario que está utilizando ( /*
) es un carácter de comentario de varias líneas que no tiene ningún carácter de comentario de cierre. Esto parece ser la fuente del error de SQL. Si bien no estoy familiarizado personalmente con sqlmap, mi sospecha es que puede pensar que no existe una vulnerabilidad de inyección, no porque esté seguro, sino simplemente porque su carga útil de inyección está generando un error de SQL y, por lo tanto, no está ocurriendo ninguna inyección. Inténtalo de nuevo con el carácter de comentario adecuado.
Para reiterar, el hecho de que reciba un error de SQL me hace pensar que es vulnerable a la inyección de SQL, simplemente no está haciendo la inyección de SQL correctamente.
Editar
Creo que tu próximo paso es ignorar sqlmap por un momento. El ataque que está haciendo ' OR 1=1
seleccionaría todos los registros. Su URL implica que este es un tipo de página view
, que muestra solo un registro a la vez. Como resultado, hay muchos casos en los que tal carga útil de inyección SQL puede no tener ningún resultado en la página en cuestión. Esta es la parte que puede hacer que sea difícil: la inyección de SQL solo es "exitosa" si realmente puede hacer algo con el ataque e impactar la aplicación de manera significativa. Así, por ejemplo, si su carga útil hace que cargue todos los registros en el comando SQL, pero la página en cuestión muestra implícitamente solo el primer resultado (porque es una página de tipo view
), entonces no se dará cuenta de que su inyección ha sido exitoso.
El problema es que su carga útil de inyección SQL dada es específica del contexto y puede no funcionar en todos los sitios de un sitio web determinado, incluso si la página es vulnerable a la inyección SQL. Eso hace que la inyección de SQL sea más complicada. Algunas herramientas de inyección de SQL pueden automatizar parte de esa dificultad, pero no sé si sqlmap
es una herramienta de ese tipo.
Así que ditch sqlmap
por un momento. Pruebe un tipo diferente de carga útil. En lugar de seleccionar ' OR 1=1
, intente hacer ' AND 1=0
. Esto debería (teóricamente) dar como resultado cero registros. Entonces, si obtienes un 404 (o ninguno de los resultados en general), consideraría esa evidencia de que la página es vulnerable a la inyección de SQL.
Por supuesto, si te sientes malvado, puedes probar las variantes en '; DROP TABLE users--
hasta que algo se rompa :) Aunque sería malo.