LAB 2

💉 SQL Injection Demo

เรียนรู้และทดสอบช่องโหว่ SQL Injection ในระบบ Login
🟢 โหมดปลอดภัย - ป้องกัน SQL Injection
⚠️ คำเตือน: โหมดไม่ปลอดภัยจะแสดงช่องโหว่ SQL Injection จริง ใช้เพื่อการศึกษาเท่านั้น!

🎯 ตัวอย่าง SQL Injection Payloads

1. Basic SQL Injection

ข้าม authentication ด้วยการใช้ OR condition

' OR 1=1 --

2. Union Attack

ดึงข้อมูลจากตารางอื่นๆ ในฐานข้อมูล

' UNION SELECT * FROM users --

3. Comment Attack

ใช้ comment เพื่อหลีกเลี่ยงเงื่อนไขที่เหลือ

'/*

4. Boolean Attack

ใช้ boolean logic เพื่อข้าม authentication

' OR '1'='1

💡 คลิกที่ payload เพื่อคัดลอกไปใช้ในการทดสอบ

👥 ผู้ใช้ในระบบสำหรับทดสอบ

Admin:
Username: admin
Password: admin123
User:
Username: user
Password: password
Test:
Username: test
Password: test123

💡 อธิบายช่องโหว่ SQL Injection

❌ โค้ดที่มีช่องโหว่ (โหมดไม่ปลอดภัย):

// การสร้าง SQL query โดยตรงจาก input (อันตราย!) const query = `SELECT * FROM users WHERE username = '${username}' AND password = '${password}'`; // ถ้า input เป็น: username = "admin", password = "' OR 1=1 --" // SQL ที่ได้: SELECT * FROM users WHERE username = 'admin' AND password = '' OR 1=1 --' // ผลลัพธ์: เข้าสู่ระบบได้โดยไม่ต้องรู้รหัสผ่าน!

✅ โค้ดที่ปลอดภัย (โหมดปลอดภัย):

// ใช้ Parameterized Query / Prepared Statement const query = `SELECT * FROM users WHERE username = ? AND password = ?`; const params = [username, password]; // หรือใช้ Input Validation และ Escape Characters function escapeSQL(input) { return input.replace(/'/g, "''").replace(/;/g, ""); } const safeUsername = escapeSQL(username); const safePassword = escapeSQL(password);