单语句查询的 SQL 注入

信息安全 sql注入 mysql
2021-08-12 00:19:57

假设我有一个这样的易受攻击的查询:

var q = 'SELECT x FROM y WHERE id = ' + req.body.id + ' ORDER BY date DESC;';

出于这个问题的目的,req.body.id可以是任何未经类型检查的整数参数,因为 HTTP 上的所有内容都是字符串。

由于 MySQL 扩展默认禁用多语句查询,因此我不能执行以下操作:

http://example.net/foo?id=1;INSERT INTO y VALUES (things...);--

是否可以使用这个易受攻击的查询执行数据操作语句(例如 INSERT、UPDATE、DELETE)?

1个回答

仅当目标应用程序使用MySQL 多查询接口时,才可能注入堆栈查询语句绝大多数 SQL 注入不允许查询堆叠。查询堆叠很有用,但您可以访问数据库,甚至可以在没有它的情况下弹出 shell。SQLMap可以执行这些攻击。

查询堆叠在有关 sql 注入的文档中比在现实世界中更常用。这可能是因为使用查询堆叠演示最容易解释 sql 注入。