SQL注入顺序不工作

时间:2017-06-21 07:28:57

标签: sql-injection

我做了一个易受攻击的网站进行研究。我尝试在URL上手动SQL注入 URL类似于:_localhost/profile.php?user=test_

如果我在网址中放入撇号,我会收到错误:

  

警告:mysqli_fetch_array()要求参数1为mysqli_result,第100行的/var/www/html/profile.php中给出布尔值

但是当我试图找出添加 ORDER BY 1 - 的列数时,然后增加数字直到我收到错误它不起作用。
 甚至 ORDER BY 1000 - 不会给我错误。

1 个答案:

答案 0 :(得分:0)

FWIW,在ANSI SQL标准中不推荐使用ORDER BY列位置(请参阅https://mariadb.com/kb/en/sql-99/deprecated-sql-92-syntax/)。但它仍然受到MySQL的支持(但如果某天某些未来版本被删除,请不要感到惊讶。)

当我尝试按整数值1000排序(在MySQL 8.0中测试)时,我收到错误:

mysql> select * from foo order by 1000;
ERROR 1054 (42S22): Unknown column '1000' in 'order clause'

但如果我通过字符串' 1000'

订购,我就不会收到错误
mysql> select * from foo order by '1000';

所以我猜你的代码引用了输入变量,因为它形成了ORDER BY子句。

ORDER BY子句中使用任何常量值或常量表达式的合法SQL。这不是错误,但由于它在结果集中的每一行上都是相同的值,因此它实际上是所有行之间的联系,并且它产生的顺序将是任意的。