堆叠注入漏洞原理
正常查询
假设一个网站的查询语句是这样拼接的:
SELECT * FROM users WHERE id = '用户输入';
如果用户输入 1
,执行的 SQL 语句就是:
SELECT * FROM users WHERE id = '1';
堆叠注入攻击
如果攻击者在输入框中输入 1; DROP TABLE users
,并且后端没有过滤分号,最终执行的 SQL 语句就会变成:
SELECT * FROM users WHERE id = '1';
DROP TABLE users;
数据库服务器会按顺序执行这两条语句。第一条是正常的查询,第二条则是删除 users
表的恶意命令