# 漏洞总结:sourcecodedoster Pharmacy Sales and Inventory System SQL注入 ## 漏洞概述 * **产品名称**:Pharmacy Sales and Inventory System Project V1.0 * **漏洞类型**:SQL注入 (SQL injection) * **受影响文件**:`/ajax.php?action=save_customer` * **漏洞参数**:`id` * **漏洞成因**:攻击者通过参数 `id` 注入恶意代码,由于缺乏适当的清理或验证,导致SQL查询被操纵,从而允许伪造输入值、操纵SQL查询并执行未授权操作。 * **利用条件**:无需登录或授权即可利用。 ## 影响范围 * **受影响版本**:V1.0 * **潜在危害**: * 未授权的数据库访问 * 敏感数据泄露 * 数据篡改 * 全面的系统控制 * 服务中断 * 对系统安全和业务连续性构成严重威胁 ## 修复方案 1. **使用预处理语句和参数绑定**:预处理语句可以将SQL代码与用户输入数据分离。在使用预处理语句时,用户输入的值被视为纯数据,不会被解释为SQL代码。 2. **输入验证和过滤**:严格验证和过滤用户输入数据,以确保其符合预期格式。 3. **最小化数据库用户权限**:确保用于连接数据库的账户具有最少的必要权限。避免使用具有高级权限(如 'root' 或 'admin')的账户进行日常操作。 4. **定期安全审计**:定期进行代码和系统安全审计,以及时识别和修复潜在的安全漏洞。 ## POC代码 ```text ... Parameter: MULTIPART id ((custom) POST) Type: boolean-based blind Title: Boolean-based blind - Parameter replace (original value) Payload: -----------------3738858121816587200387936454 Content-Disposition: form-data; name="id" (SELECT (CASE WHEN (7479=7479) THEN '' ELSE (SELECT 5203 UNION SELECT 7749) END)) -----------------3738858121816587200387936454 Content-Disposition: form-data; name="name" 1111 -----------------3738858121816587200387936454-- ... ```