¿El número de columna de la tabla SQL cambia con la consulta de inyección?

2

Una pregunta de inyección de SQL muy básica aquí, encontré un SQLi en un sitio web de mysql con product.php?id=200 .

Primero me cansé de ORDENAR POR para calcular el número de columna de esa tabla por product.php?id=200 order by 13

que resulta ser de 12 columnas, el error muestra que el pedido de 13 es

Error: SELECT * FROM 'category' WHERE is_active='1' AND id =200 order by 13

Unknown column '13' in 'order clause'

Todo se ve bien, así que intenté averiguar los nombres de las tablas a continuación,

product.php?id=200 union select table_name,2,3,4,5,6,7,8,9,10,11,12 from 
information_schema.tables

y se muestra

Error: SELECT * FROM 'products' WHERE is_active='1' AND id =200 union select 
table_name,2,3,4,5,6,7,8,9,10,11,12 from information_schema.tables

The used SELECT statements have a different number of columns

Independientemente de la cantidad de números que puse en la consulta de selección, siempre muestra el mismo error, asumo que hay algunas actividades dinámicas en el backend, pero no estoy seguro de qué, y cómo debo proceder, cualquier sugerencia, por favor ? ¡Gracias!

    
pregunta tomu 30.12.2017 - 10:33
fuente

1 respuesta

1

Está inyectando en dos consultas diferentes (una seleccionando de category , una de products ), que selecciona de tablas que tienen un recuento de columnas diferente. Cuando arregles una cuenta de columnas, la otra ya no coincidirá.

Al mismo tiempo, no puede realizar recuentos de columnas diferentes, y es probable que no pueda omitir una de las consultas, por lo que una simple inyección de unión no funcionará.

A medida que se le muestran los errores, puede utilizar una inyección simple basada en errores. Si no se muestran los errores, aún podría usar la inyección ciega basada en tiempo y posiblemente en el contenido (consulte here para ejemplos de los tres). En cada caso, es probable que desee inyectar en la primera consulta (depende un poco de cómo se manejan los errores).

    
respondido por el tim 30.12.2017 - 11:10
fuente

Lea otras preguntas en las etiquetas