Inyección de encabezado HTTP

Inyección de encabezado HTTP

Inyección de galletas

Tomando sqli-labs-20 como ejemplo, utilice la inyección de cookies para obtener información de la base de datos

1. Enviar a repetidor

Primero ingrese el nombre de usuario Dumb y la contraseña Dumb para iniciar sesión

Después de iniciar sesión, actualice la página para capturar paquetes y enviarlos al repetidor.

imagen-20230824203432753

Determine el tipo de inyección en el repetidor. Después de varios intentos, se puede determinar que el tipo de inyección es un tipo de carácter y es una comilla simple. Si no sabe cómo juzgar el tipo de inyección, puede leer mi artículo: Método de juicio del tipo de inyección MySQL y análisis de principios (comando de ejecución de declaración SQL de demostración)

2. Juicio del número de caracteres.

Después de determinar el tipo de inyección y la página tiene un eco, puede usar la inyección conjunta. Puede consultar mi artículo: Inyección conjunta de MySQL.

Ingrese en la cookie:

Cookie: uname=Dumb' and 1=2 union select 1,2,3#

imagen-20230824204408651

Se puede encontrar que los puntos de eco están en las posiciones 2 y 3.

3. Obtener información de la base de datos

Cookie: uname=Dumb' and 1=2 union select 1,2,group_concat(schema_name) from information_schema.schemata#

imagen-20230824204505696

Lo mismo es cierto para obtener información de campo más adelante. Si desea continuar viendo información de tablas, información de campos e información de datos detallada, puede consultar mi artículo: Inyección conjunta de MySQL .

inyección base64

Tome sqli-labs-22 como ejemplo y utilice la inyección base64 para obtener información de la base de datos

enviar a repetidor

Primero ingrese el nombre de usuario Dumb y la contraseña Dumb para iniciar sesión

Después de iniciar sesión, actualice la página para capturar paquetes y enviarlos al repetidor.

imagen-20230824205319394

Proceso de codificación y decodificación.

Se descubre que el valor en la cookie está codificado en URL, por lo que debe decodificarse en el módulo Decodificador. Después de decodificarlo, se encuentra que es Base64 y debe decodificarse mediante Base64. Después de obtener el valor normal, Pruebe la inyección SQL y luego codifique en base64 la declaración de inyección y colóquela en la cookie. El valor puede ser.

imagen-20230824205223874

inyección SQL

1. Determinar el tipo de inyección.

Realice la codificación base64 a través de la siguiente declaración SQL y luego juzgue haciendo eco

Dumb and 1=1#
Dumb' and 1=2#
Dumb' and 1=1#
Dumb' and 1=2#
Dumb" and 1=1#
Dumb" and 1=2#

Finalmente, se puede juzgar que el tipo de inyección es un tipo de carácter entre comillas dobles. Si no sabe cómo juzgar el tipo de inyección, puede leer mi artículo: Método de juicio del tipo de inyección de MySQL y análisis de principios (declaración SQL de demostración) . comando de ejecución)

2. Juicio del número de caracteres.

Después de determinar el tipo de inyección y la página tiene un eco, puede usar la inyección conjunta. Puede consultar mi artículo: Inyección conjunta de MySQL.

Ingrese en la cookie:

Cookie: uname=RHVtYiIgb3JkZXIgYnkgNCM=

imagen-20230824211016974

Se puede inferir que el número de campos es solo 3.

3. Determinar la posición del eco.

Se realizará Dumb" and 1=2 union select 1,2,3#la codificación Base64 y luego la cookie se completará de la siguiente manera:

Cookie: uname=RHVtYiIgYW5kIDE9MiB1bmlvbiBzZWxlY3QgMSwyLDMj

imagen-20230824211327529

Se puede juzgar que los ecos se muestran en la segunda y tercera posición.

4. Obtenga información actual de la base de datos mediante inyección conjunta

Se realizará Dumb" and 1=2 union select 1,2,database()#la codificación Base64 y luego la cookie se completará de la siguiente manera:

RHVtYiIgYW5kIDE9MiB1bmlvbiBzZWxlY3QgMSwyLGRhdGFiYXNlKCkj

imagen-20230824211539946

Como puede ver, la información de la base de datos actual se obtuvo con éxito.

Entonces, esta inyección de base64 es en realidad la misma que el método de inyección normal, nada más que un paso adicional de codificación y decodificación.

Para conocer los métodos de inyección comunes, puede leer mi artículo: Inyección conjunta de MySQL

Inyección de usuario-agente

Tome sqli-labs-18 como ejemplo y utilice la inyección de User-Agent para obtener información de la base de datos

#Nota: Este nivel es similar a la inyección de error ordinaria, es decir, necesita capturar el paquete y el punto de inyección ocurre en UserAgent, y se usa o no es --+válido cuando se cierra. Debe usar el método de cierre correcto para reemplazar el lado derecho del sql original Las comillas están cerradas, para lograr el propósito de no informar un error en la declaración en sí, y luego usar la función updatexml para hacer que la declaración sql informe un error, para lograr el propósito de inyección de error de informe

Ingrese el nombre de usuario y la contraseña de manera informal, haga clic en enviar y luego use BP para capturar el paquete y enviarlo al repetidor.

imagen-20230824213849109

Después de probar UserAgent, se encuentra que hay diferentes ecos. Después de la prueba de comillas simples, no hay eco de datos, pero se informará un error, lo que indica que es una inyección de caracteres entre comillas simples, así que considere usar la inyección de errores y modifique el encabezado UA para:

User-Agent: yuanboss' and updatexml(1,concat(0x7e,database(),0x7e),1) and '1' = '1

imagen-20230824213823404

Se puede encontrar que se ha encontrado la base de datos.

Lo que hay que tener en cuenta aquí es que el SQL después de que lo uso #o --+comento no es válido, por lo que el método de cierre de la derecha 'también puede lograr el objetivo.

Supongo que te gusta

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