SQL INJECTION BYPASS LOGIN

SQL INJECTION BYPASS LOGIN
เว็บไซด์ปัจจุบันแทบไม่มีเว็บไซด์ไหนเลยที่จะไม่ติดต่อ database ไม่ว่าจะเป็นเพื่อเก็บข้อมูลสินค้าหรือข้อมูลของสมาชิกเว็บไซด์เองก็ตามที ซึ่งบางครั้งช่องทางที่ใช้ในการดึงข้อมูลจาก database ก็ไม่มีความปลอดภัย ทำให้ Hacker ใช้ช่องทางที่ไม่แข็งแกร่งนี้ใส่ sql query string เข้าไป เพื่อให้แสดงข้อมูลที่ Hacker ต้องการ
การโจมตีแบบ SQL Injection ประกอบด้วยการใส่ SQL query ผ่านช่องทางการ input ต่างๆจาก client หากการโจมตี SQL Injection สำเร็จ Hacker สามารถอ่าน, แก้ไข, ลบข้อมูล (insert, update, delete) ที่สำคัญไม่ว่าจะเป็น user,password,personal info ที่ถูกเก็บไว้ใน database ได้ หรือสามารถสั่งคำสั่งของ administrator บน database ได้ เช่น การสั่ง shutdown DBMS เป็นต้น หรือหาก database นั้นสามารถใช้งานคำสั่งของเครื่องเซอร์เวอร์ได้ Hacker ก็สามารถสั่งงานคำสั่งไปที่เครื่องเซอร์เวอร์ได้เช่นกัน
ในที่นี้จะยกตัวอย่างโค้ดที่ใช้ในการตรวจสอบการ login ของ user ในไฟล์ login.php ซึ่งมีช่องโหว่ จะเขียนเป็น
$myusername = $_POST['email'];
$mypassword = $_POST['password'];
$sql = "SELECT * FROM member WHERE Username = '$myusername' and password = '$mypassword'";
$result = mysqli_query($conn,$sql) or die("Error: " . mysqli_error($conn));
$count = mysqli_num_rows($result);
       // If result matched $myusername and $mypassword, table row must be 1 row
if($count == 1) {
//session_register("myusername");
$_SESSION['username'] = $myusername;
echo $_SESSION['username'];
header("Location: panel.php");
} else {
$error = "Your Login Username or Password is invalid";
header("Location: index.php");
}
โดยจาก code จะพบว่ามีการ query ข้อมูลไปยัง member table และนำค่า $username, $password ไปทำการ query โดยมิได้ตรวจสอบหรือป้องกันใดๆในตัวแปรดังกล่าวเลย ทำให้สามารถเกิด SQL Injection ได้ โดย flag ของโจทย์นี้จะพบได้หลังจากที่ bypass การ login ได้

Comments

Popular Posts