(路由)共享参数的SQL注入

时间:2017-03-20 11:52:17

标签: mysql sql mariadb sql-injection

我负责几个网站的安全性。最近我们购买了Acunetix WVS并进行了几次测试,这些测试对SQL注入产生了积极作用。我不仅尝试复制这些测试,而且还试图找出是否有可能提取相关信息,因为我们部署了WAF / IPS,可以减轻更关键的SQL注入。

我显然不允许透露我目前正在测试的网站,因为我会将其称为http://example.com

我能够在页面http://example.com/show_results.php?group=1&query=members上发现有2个查询用于显示结果。所以,这可能与路由SQL注入有关。我已经应用了几种SQL注入技术,并通过错误消息确定它们采用以下形式:

SELECT 1 FROM ... WHERE group='1' LIMIT 0,1

SELECT 1,2,3,4 FROM ... WHERE group='1' AND `user_type` NOT LIKE 'colaborators' ORDER BY 'name'

两个查询都显示在个人<div>上。 user_type代表网址上的members。第一个查询显然很容易注入。我只需将URL更改为:

即可获取数据库名称
    http://example.com/show_results.php?group=1' union select database() -- - &query=

这里显而易见的问题是:如何获取表名。类似的东西:

GROUP_CONCAT(table_name) FROM information_schema.tables WHERE TABLE_SCHEMA=database()

这很棘手,因为两个查询都使用相同的group参数,因此它不是最简单的路由SQL注入。像这样:

    http://example.com/show_results.php?group=1' union select database() -- -&query=members

请注意query参数上面的差异。这显示了The used SELECT statements have a different number of columns的错误(显然因为两个查询的列数不同)。

0 个答案:

没有答案