Directorio de artículos
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.
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#
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#
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.
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.
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=
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
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
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.
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
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.