Inyección conjunta de MySQL

1. Determinar el tipo de inyección.

Pruebe con comillas simples y dobles una por una, y descubra que las comillas simples causarán un error, pero las comillas dobles no informarán un error, por lo que es un tipo de cadena que usa comillas simples.

en conclusión:

En la inyección de caracteres, qué símbolo causa un error, representa la inyección de caracteres de qué símbolo

2. ordenar por calcula el número de campos

¿Por qué calcular el número de campos?

Como conoce la cantidad de campos, puede utilizar la función de inyección conjunta para realizar una inyección SQL para obtener más información.

Entonces, ¿cómo calcular el número de campos?

Utilice las características de ordenar por: puede especificar el orden de las columnas a ordenar, por lo que puede agregar números directamente después de ordenar por para indicar por qué columna ordenar. Una vez que el número exceda el número de columnas, se informará un error. , para que puedas calcular el número de campos

3. Consulta la base de datos

Principio básico: consulta conjunta, función de base de datos ()

Las dos condiciones de la consulta conjunta:

  1. El número de campos de consulta en las dos declaraciones de consulta es el mismo; de lo contrario, se informará un error
  2. Los tipos de campos de consulta de las dos declaraciones de consulta deben ser consistentes

Por ejemplo: inyección conjunta mediante unión, use la función base de datos () para obtener la tabla de la base de datos

select * from cms_article where id = 32 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,database(),12,13,14,15;

Por ejemplo, el nombre de la tabla de la base de datos obtenida aquí escms

4. Verifique la tabla de la base de datos.

Principios básicos: consulta conjunta, base de datos (), GROUP_CONCAT (), funciones hex (), base de datos information_schema

select * from cms_article where id = 32 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,hex(GROUP_CONCAT(table_name)),12,13,14,15 from information_schema.tables where table_schema = database();

Consulte el nombre de la tabla de datos correspondiente al nombre de la base de datos en la tabla de tablas de la biblioteca information_schema y use la función GROUP_CONCAT() para imprimir todos los nombres de las tablas, luego conviértalos a hexadecimal y decodifique el resultado para obtener el nombre de la tabla.

5. El nombre del campo de la tabla de búsqueda.

Principio básico: consulta conjunta, GROUP_CONCAT(), función hexadecimal(), base de datos information_schema

select * from cms_article where id = -33 union select 1,2,hex(GROUP_CONCAT(column_name)),4,5,6,7,8,9,10,11,12,13,14,15 from information_schema.COLUMNS where table_name = "cms_users";

A través de las COLUMNAS de la biblioteca information_schema, consulte el campo de la tabla nombre_tabla, el valor es la información del campo de cms_users, y use la función GROUP_CONCAT () para imprimir todos los nombres de los campos, luego conviértalos a hexadecimal y decodifique el resultado para obtener el nombre del campo

6. Verificar datos

Principios básicos: consulta conjunta, CONCAT(), funciones hexadecimal(), base de datos information_schema

select * from cms_article where id = 32 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,hex(CONCAT(username,'--',password)),12,13,14,15 from cms.cms_users;

Como conoce la base de datos que se va a consultar, el nombre de la tabla y el nombre del campo, con la ayuda de la función CONCAT(), puede concatenar los datos del campo que desea consultar en una cadena y luego generarlos.

Supongo que te gusta

Origin blog.csdn.net/weixin_46367450/article/details/132460915
Recomendado
Clasificación