MySQL LOAD_FILE() và INTO OUTFILE() Sql Injection
Trong bài viết này, chúng ta sẽ thảo luận về hàm LOAD_FILE() của MySQL và hàm INTO OUTFILE() và Sql Injection. MySQL cung cấp các hàm LOAD_FILE() và INTO OUTFILE() có thể được sử dụng để đọc hoặc ghi tệp trên hệ thống tệp của máy chủ nơi cơ sở dữ liệu MySQL đang chạy. Các chức năng này có thể dễ bị tấn công SQL injection nếu đầu vào của người dùng không được làm sạch đúng cách.
Kẻ tấn công có thể sử dụng SQL injection để sửa đổi đường dẫn tệp được chuyển đến hàm LOAD_FILE() hoặc INTO OUTFILE() để truy cập hoặc ghi vào các tệp trái phép trên máy chủ. Ví dụ: kẻ tấn công có thể sử dụng SQL injection để đọc các tệp nhạy cảm trên máy chủ hoặc ghi mã độc hại vào máy chủ, có khả năng dẫn đến việc hệ thống bị xâm phạm thêm.
Để ngăn chặn các cuộc tấn công SQL injection khi sử dụng các hàm này, điều quan trọng là phải xác thực và làm sạch đúng cách bất kỳ đầu vào nào của người dùng được sử dụng làm tham số trong hàm. Ngoài ra, bạn cũng nên sử dụng tài khoản người dùng MySQL có ít đặc quyền nhất khi kết nối với cơ sở dữ liệu, vì điều này sẽ hạn chế thiệt hại tiềm tàng mà kẻ tấn công có thể gây ra nếu chúng có thể tiêm thành công SQL độc hại.
<?php
$file_path = $_GET['file'];
$sql = "SELECT * FROM users WHERE profile_picture = LOAD_FILE('" . $file_path . "')";
$result = mysqli_query($connection, $sql);
?>
Một mẫu mã PHP có lỗ hổng sử dụng hàm INTO OUTFILE() của MySQL:
<?php
$file_path = $_POST['file'];
$content = $_POST['content'];
$sql = "SELECT '".$content."' INTO OUTFILE '" . $file_path . "'";
$result = mysqli_query($connection, $sql);
?>
Trong bài đăng này, chúng tôi đã thảo luận về hàm LOAD_FILE() của MySQL và hàm INTO OUTFILE() và Sql Injection, hẹn gặp lại bạn trong bài đăng tiếp theo, hãy cẩn thận.

![Dù sao thì một danh sách được liên kết là gì? [Phần 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































