MySQL LOAD_FILE() และ INTO OUTFILE() Sql Injection
ในบทความนี้ เราจะพูดถึงฟังก์ชัน MySQL LOAD_FILE() และฟังก์ชัน INTO OUTFILE() และ Sql Injection MySQL มีฟังก์ชัน LOAD_FILE() และ INTO OUTFILE() ที่สามารถใช้เพื่ออ่านหรือเขียนไฟล์บนระบบไฟล์ของเซิร์ฟเวอร์ที่ฐานข้อมูล MySQL ทำงานอยู่ ฟังก์ชันเหล่านี้อาจเสี่ยงต่อการถูกโจมตีด้วยการแทรก SQL หากอินพุตของผู้ใช้ไม่ได้รับการดูแลอย่างเหมาะสม
ผู้โจมตีสามารถใช้ SQL Injection เพื่อแก้ไขเส้นทางไฟล์ที่ส่งไปยังฟังก์ชัน LOAD_FILE() หรือ INTO OUTFILE() เพื่อเข้าถึงหรือเขียนไปยังไฟล์ที่ไม่ได้รับอนุญาตบนเซิร์ฟเวอร์ ตัวอย่างเช่น ผู้โจมตีสามารถใช้การแทรก SQL เพื่ออ่านไฟล์ที่ละเอียดอ่อนบนเซิร์ฟเวอร์หรือเพื่อเขียนโค้ดที่เป็นอันตรายไปยังเซิร์ฟเวอร์ ซึ่งอาจนำไปสู่การบุกรุกเพิ่มเติมของระบบ
เพื่อป้องกันการโจมตี SQL Injection เมื่อใช้ฟังก์ชันเหล่านี้ สิ่งสำคัญคือต้องตรวจสอบความถูกต้องและฆ่าเชื้ออินพุตของผู้ใช้ที่ใช้เป็นพารามิเตอร์ในฟังก์ชัน นอกจากนี้ ยังเป็นแนวทางปฏิบัติที่ดีในการใช้บัญชีผู้ใช้ MySQL ที่มีสิทธิ์น้อยที่สุดเมื่อเชื่อมต่อกับฐานข้อมูล เนื่องจากจะเป็นการจำกัดความเสียหายที่อาจเกิดขึ้นที่ผู้โจมตีสามารถทำได้หากพวกเขาสามารถแทรก SQL ที่เป็นอันตรายได้สำเร็จ
<?php
$file_path = $_GET['file'];
$sql = "SELECT * FROM users WHERE profile_picture = LOAD_FILE('" . $file_path . "')";
$result = mysqli_query($connection, $sql);
?>
ตัวอย่างของโค้ด PHP ที่มีช่องโหว่ซึ่งใช้ฟังก์ชัน MySQL INTO OUTFILE():
<?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 Injection แล้วเจอกันในโพสต์หน้า ดูแลตัวเองดีๆ





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)