MySQL LOAD_FILE() e INTO OUTFILE() Inyección Sql

Jan 19 2023
En este artículo, discutiremos la función MySQL LOAD_FILE() y la función INTO OUTFILE() y Sql Injection. MySQL proporciona las funciones LOAD_FILE() e INTO OUTFILE() que se pueden usar para leer o escribir archivos en el sistema de archivos del servidor donde se ejecuta la base de datos MySQL.
Foto de Sara Bakhshi en Unsplash

En este artículo, discutiremos la función MySQL LOAD_FILE() y la función INTO OUTFILE() y Sql Injection. MySQL proporciona las funciones LOAD_FILE() e INTO OUTFILE() que se pueden usar para leer o escribir archivos en el sistema de archivos del servidor donde se ejecuta la base de datos MySQL. Estas funciones pueden ser vulnerables a los ataques de inyección SQL si la entrada del usuario no se desinfecta adecuadamente.

Un atacante podría usar la inyección SQL para modificar la ruta del archivo que se pasa a la función LOAD_FILE() o INTO OUTFILE() para acceder o escribir en archivos no autorizados en el servidor. Por ejemplo, un atacante podría utilizar la inyección SQL para leer archivos confidenciales en el servidor o para escribir código malicioso en el servidor, lo que podría comprometer aún más el sistema.

Para evitar ataques de inyección SQL al usar estas funciones, es importante validar y desinfectar adecuadamente cualquier entrada del usuario utilizada como parámetro en la función. Además, también es una buena práctica usar la cuenta de usuario de MySQL con menos privilegios al conectarse a la base de datos, ya que esto limitará el daño potencial que un atacante puede causar si puede inyectar SQL malicioso con éxito.

<?php
$file_path = $_GET['file'];
$sql = "SELECT * FROM users WHERE profile_picture = LOAD_FILE('" . $file_path . "')";
$result = mysqli_query($connection, $sql);
?>

Una muestra de código PHP vulnerable que usa la función MySQL INTO OUTFILE():

<?php
$file_path = $_POST['file'];
$content = $_POST['content'];
$sql = "SELECT '".$content."' INTO OUTFILE '" . $file_path . "'";
$result = mysqli_query($connection, $sql);
?>

Kermit

En esta publicación, hemos discutido la función MySQL LOAD_FILE() y la función INTO OUTFILE() y Sql Injection, nos vemos en la próxima publicación, tenga cuidado.