Explotación de base de unión de inyección SQL [cerrado]

-2

Un sitio web de PHP termina con php?id=1 y cuando coloco un tic imprime este error:

  

Advertencia: mysql_fetch_array (): el argumento proporcionado no es un recurso de resultado MySQL válido en /home/otmsm/public_html/bonnes_adresses.php en la línea 75

El problema es cuando deseo ingresar ORDER BY 100-- después (el enlace debería ser php?id=1 order by 100-- ), no cambia la página y aún tiene el mismo error impreso en la pantalla ... Entonces, la pregunta es: cómo ¿Sé cuántas tablas hay?

    
pregunta Bob Ebert 13.07.2015 - 03:20
fuente

2 respuestas

1

El error que obtiene de la página no tiene nada directamente que ver con su intento de inyección de SQL. El sitio parece emplear una conversión simple para garantizar que id sea numérico, por lo que su consulta se convierte en una consulta válida que no devuelve nada a menos que envíe un número simple:

$id = (int)$_GET['id'];

En otras palabras, no todas las consultas que puedes desordenar desde la línea de URL se inyectan automáticamente en SQL.

El error que obtienes es el de la consulta que no devuelve nada, porque no hay filas con un tipo de cero.

Este tipo de "lista blanca simple" simplemente no es explotable, porque el exploit nunca alcanzará la capa SQL; incluso si otras partes del sitio web podrían serlo (el uso de las funciones mysql_ * y la falta de verificación de fallos en las consultas no son una buena señal).

Sin embargo, creo que sería manera mejor buscar un sitio web de pruebas de inyección SQL (lo sabía, pero aparentemente está fuera de línea, el dominio está a la venta) y dejar a la gente buena de Montreuil-sur-Mer solo con sus bonne adresses . En caso de apuro, hay varios tutoriales que puede implementar en una máquina virtual para probar los diferentes enfoques y las diferentes plataformas SQL.

    
respondido por el LSerni 13.07.2015 - 10:23
fuente
-1

El error que ves es el resultado de una consulta fallida. Lo más probable es que esto se deba a que se han enviado datos incorrectos a la cadena de consulta, es posible que mysql_real_escape_string() se esté usando para escapar de los caracteres SQL (que se usarían en un ataque), lo que explicaría por qué falló el intento de inyección. Aunque más probable sería su intento de ataque incorrecto. Necesitaríamos ver su consulta de ataque exacta para saber qué está pasando. Si tiene acceso a este sistema, obviamente puede verificar mysql_error . Si no tiene acceso a este sistema, tenga en cuenta que puede ser ilegal realizar un ataque en este sistema informático sin el permiso del propietario del sistema.

    
respondido por el Joseph Orlando 13.07.2015 - 04:36
fuente

Lea otras preguntas en las etiquetas