Funciones de inyección e intercepción sql de uso común:
Reimpreso de:http://www.cnblogs.com/lcamry/p/5504374.html
En la inyección sql, a menudo se utiliza el problema de interceptar cadenas. Por ejemplo, la inyección sin eco también se denomina inyección ciega. En este caso, a menudo es necesario adivinar un carácter uno por uno, y necesita ser utilizado en el proceso. Intercepta la cuerda. Este artículo enumera principalmente tres funciones y algunos casos de uso en el proceso de inyección de la función.
Ps; mysql se utiliza para la explicación aquí, por favor compruebe otros tipos de bases de datos por sí mismo.
Tres armas mágicas: mid(),substr(),left()
función mid()
Esta función consiste en interceptar parte de la cadena.
Gramática:
MID(column_name,start[,length])
Descripción del parámetro
column_name: requerido. El campo del que extraer caracteres.
inicio: requerido. Especifique la posición inicial (el valor inicial es 1).
longitud: Opcional. El número de caracteres que se devolverá. Si se omite, la función MID() devuelve el texto restante.
Ejemplo:
Eg: str=»123456″ mid(str,2,1) El resultado es 2
Caso de uso sql:
(1)MID(DATABASE(),1,1)>’a’,
Ver el primer lugar del nombre de la base de datos,MID(DATABASE(),2,1)
Compruebe el segundo lugar del nombre de la base de datos y compruebe cada carácter a su vez.
(2)MID((SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE T table_schema=0xxxxxxx LIMIT 0,1),1,1)>’a’
El parámetro column_name aquí puede ser una instrucción sql y puede construir una instrucción sql para inyección.
función substr()
Las funciones implementadas por las funciones Substr() y substring() son las mismas, las cuales interceptan cadenas de caracteres.
Gramática:
string substring(string, start, length)
string substr(string, start, length)
La descripción del parámetro es la misma que la función mid(). El primer parámetro es la cadena que se va a procesar, el inicio es la posición inicial y la longitud es la longitud interceptada.
Ejemplo:
Caso de uso sql:
(1) substr(DATABASE(),1,1)>’a’
,Compruebe el primer lugar del nombre de la base de datos, substr(DATABASE(),2,1) compruebe el segundo lugar del nombre de la base de datos, compruebe cada carácter a su vez.
(2)substr((SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE T table_schema=0xxxxxxx LIMIT 0,1),1,1)>’a’
Aquí, el parámetro string puede ser una instrucción sql y puede construir una instrucción sql para inyección.
Función Left()
Left() obtiene el número especificado de caracteres a la izquierda de la cadena.
Gramática:
Left ( string, n ) stringIs the string to be intercepted, and n is the length.
Ejemplo:
Caso de uso sql:
(1) left(database(),1)>’a’
,Ver el primer lugar del nombre de la base de datos,left(database(),2)>’ab’
, Compruebe los dos principales nombres de la base de datos.
(2) La misma cadena puede ser una instrucción SQL autoconstruyeron.
Función ORD()
Al mismo tiempo, también se introduce la función ORD(). Esta función devuelve el código ASCII del primer carácter y se utiliza a menudo en combinación con las funciones anteriores.
p. ej.:
ORD(MID(DATABASE(),1,1))>114
Significa comprobar si el primer código ASCII de base de datos() es mayor que 114, que es ‘r’.
.