# 漏洞总结:Pharmacy Sales and Inventory System V1.0 SQL注入 ## 漏洞概述 * **漏洞名称**:Pharmacy Sales and Inventory System Project V1.0 `/ajax.php?action=delete_customer` SQL注入 * **漏洞类型**:SQL Injection (SQL注入) * **受影响文件**:`/ajax.php?action=delete_customer` * **漏洞版本**:V1.0 * **利用条件**:无需登录或授权即可利用 (No login or authorization is required) * **根本原因**:用户输入参数 `id` 未经过适当的清理或验证,直接拼接到SQL查询中。 ## 影响范围 * **受影响产品**:Pharmacy Sales and Inventory System * **潜在危害**: * 未经授权访问数据库 * 敏感数据泄露 * 数据篡改 * 系统全面控制 * 服务中断 ## 漏洞详情与 POC * **参数位置**:`id` (POST参数) * **注入类型**:Boolean-based blind (布尔盲注) * **Payload**: ```sql (SELECT (CASE WHEN (7479>7479) THEN '1' ELSE (SELECT 5203 UNION SELECT 7740) END)) ``` ## 修复方案 1. **使用预处理语句和参数绑定**:使用预处理语句(Prepared Statements)和参数绑定(Parameter Binding)来分离SQL代码和用户输入数据。在使用预处理语句时,用户输入的值被视为纯数据,不会被解释为SQL代码。 2. **输入验证和过滤**:严格验证和过滤用户输入数据,确保其符合预期格式。 3. **最小化数据库用户权限**:确保用于连接数据库的账户拥有执行日常操作所需的最小权限。避免使用具有高级权限(如 root 或 admin)的账户。 4. **定期安全审计**:定期进行代码和系统安全审计,以及时识别和修复潜在的安全漏洞。