MySQL LOAD_FILE() 및 INTO OUTFILE() SQL 주입
이 기사에서는 MySQL LOAD_FILE() 함수와 INTO OUTFILE() 함수 및 Sql 주입에 대해 설명합니다. MySQL은 MySQL 데이터베이스가 실행 중인 서버의 파일 시스템에서 파일을 읽거나 쓰는 데 사용할 수 있는 LOAD_FILE() 및 INTO OUTFILE() 함수를 제공합니다. 이러한 기능은 사용자 입력이 제대로 삭제되지 않으면 SQL 삽입 공격에 취약할 수 있습니다.
공격자는 SQL 인젝션을 사용하여 LOAD_FILE() 또는 INTO OUTFILE() 함수에 전달된 파일 경로를 수정하여 서버의 승인되지 않은 파일에 액세스하거나 쓸 수 있습니다. 예를 들어, 공격자는 SQL 인젝션을 사용하여 서버의 중요한 파일을 읽거나 서버에 악성 코드를 작성하여 잠재적으로 시스템을 더 손상시킬 수 있습니다.
이러한 함수를 사용할 때 SQL 주입 공격을 방지하려면 함수에서 매개변수로 사용되는 모든 사용자 입력을 적절하게 검증하고 삭제하는 것이 중요합니다. 또한 데이터베이스에 연결할 때 권한이 가장 낮은 MySQL 사용자 계정을 사용하는 것도 좋은 방법입니다. 이렇게 하면 공격자가 악의적인 SQL을 성공적으로 주입할 수 있는 경우 발생할 수 있는 잠재적 손상이 제한됩니다.
<?php
$file_path = $_GET['file'];
$sql = "SELECT * FROM users WHERE profile_picture = LOAD_FILE('" . $file_path . "')";
$result = mysqli_query($connection, $sql);
?>
MySQL INTO OUTFILE() 함수를 사용하는 취약한 PHP 코드 샘플:
<?php
$file_path = $_POST['file'];
$content = $_POST['content'];
$sql = "SELECT '".$content."' INTO OUTFILE '" . $file_path . "'";
$result = mysqli_query($connection, $sql);
?>
이 게시물에서는 MySQL LOAD_FILE() 함수와 INTO OUTFILE() 함수 및 Sql 주입에 대해 논의했습니다. 다음 게시물에서 뵙겠습니다.

![연결된 목록이란 무엇입니까? [1 부]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































