SQL inyectando un formulario de búsqueda que usa el modo booleano

4

Estoy probando una aplicación web y puedo obtener errores de MySQL insertando 'en el campo de búsqueda:

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 '' in boolean mode)' at line 1

Sin embargo, cuando hago la prueba habitual, ingresando "'y 1 = 1--" en el campo de búsqueda, obtengo esto:

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 'and 1=1--' in boolean mode)' at line 1

Pero esto debería haber funcionado. Noté que se agrega "en modo booleano) a cada error que me da. Mi pregunta es: ¿cuál es el problema aquí y cómo puedo hacer que se realicen mis declaraciones sin que se produzca este error?

    
pregunta Wise 14.02.2013 - 21:07
fuente

1 respuesta

11

Encuentro que ' or 1=1-- es útil en menos del 1% de la inyección de sql que encuentro, esta carga útil se ve comúnmente en los ejemplos de inyección de SQL porque es una declaración muy simple. El problema que probablemente esté experimentando es que su comentario es incorrecto. El -- debe seguir un solo espacio o no es realmente un comentario, por lo que ' or 1=1-- 1 es un comentario que es compatible con muchos tipos de bases de datos y puede sobrevivir a un recorte de espacios en blanco. Hay muchos otros comentarios de mysql para elegir .

Una mejor prueba de inyección de SQL para una base de datos MySQL sería: ' or sleep(10)/* . Si la página tarda 10 segundos o más en cargarse, es vulnerable, luego haga un seguimiento con ' or sleep(0)/* y se recupera muy rápidamente para que sepa que puede ser explotada con inyección de ciegos .

En este punto, tomaré esa solicitud HTTP y usaré SQLMap en modo asistente para aprovechar la vulnerabilidad y volcar toda la base de datos. SQLMap también puede realizar file-io bajo MySQL usando load_file() y into outfile . El modo shell interactivo de SQL también es muy útil. Si desea depurar una carga útil de SQL sin usarla en su destino, sugiero sqlfiddle .

    
respondido por el rook 14.02.2013 - 21:21
fuente

Lea otras preguntas en las etiquetas