[LAB] 攻击模拟 / SQL 注入攻击

SQL 注入攻击模拟

SQL注入通过在输入框中注入 SQL 代码片段,操纵原始查询逻辑,绕过验证或窃取数据。 下面模拟一个存在漏洞的登录表单。

! 漏洞登录表单(攻击视角)
SQL SQL 语句实时解析
实际执行的 SQL:
SELECT * FROM users WHERE username='admin' AND password='anything'
[TIP] 试试这些注入:
用户名输入:admin' OR '1'='1
密码随便填,提交后观察 SQL 语句变化!
DOC 常见注入技术一览
类型Payload 示例说明防御方法
注释绕过 admin'-- 用注释截断后面的密码校验 预处理语句
永真条件 ' OR '1'='1 使 WHERE 条件永远为真 预处理语句
UNION 注入 ' UNION SELECT ... 联合查询获取其他表数据 最小权限 + 预处理
堆叠查询 '; DROP TABLE users-- 执行多条 SQL 语句 禁用 multi_query()
宽字节注入 %df' OR 1=1-- 绕过 addslashes() 过滤 使用字符集过滤
[DEFENSE] 安全代码示例(PHP + PDO)
$pdo = new PDO('sqlite:db.sqlite');
$stmt = $pdo->prepare("SELECT * FROM users WHERE username=? AND password=?");
$stmt->execute([$inputUser, $inputPass]);
$user = $stmt->fetch();
// ✅ 输入作为参数绑定,绝不会被当作 SQL 代码执行
→ 继续:暴力破解演示 ← 上一节:XSS