暴力破解

译自:Brute force

以下开关可用于暴力破解检查。

暴力破解表名

开关:--common-tables

在某些场景下,开关 --tables 并不能用于获取数据库中表的名称。这样的场景通常会在如下情况下发生:

  • DBMS(Database Management System,数据库管理系统)是 < 5.0 版本的 MySQL,它们不具备 information_schema
  • DBMS 是微软的 Access 数据库,并且其中的系统表 MSysObjects 默认设置不可读。
  • 当前会话用户对 DBMS 中存储数据表定义的系统表没有读权限。

如果出现前面两个场景中的任意一个,并且你开启了 --tables 开关,sqlmap 则会提示你是否使用暴力破解技术。因而,就算出现上面两个场景之一,只要你开启了 --common-tables,sqlmap 仍然可以识别出部分系统数据表。sqlmap 会尝试对系统表进行暴力破解,试图找出 DBMS 中存在的常见数据表。

常见的数据表名列表存储在 txt/common-tables.txt,支持用户进行任意修改。

针对 MySQL 4.1 目标的例子:

  1. $ python sqlmap.py -u "http://192.168.136.129/mysql/get_int_4.php?id=1" --commo\
  2. n-tables -D testdb --banner
  3. [...]
  4. [hh:mm:39] [INFO] testing MySQL
  5. [hh:mm:39] [INFO] confirming MySQL
  6. [hh:mm:40] [INFO] the back-end DBMS is MySQL
  7. [hh:mm:40] [INFO] fetching banner
  8. web server operating system: Windows
  9. web application technology: PHP 5.3.1, Apache 2.2.14
  10. back-end DBMS operating system: Windows
  11. back-end DBMS: MySQL < 5.0.0
  12. banner: '4.1.21-community-nt'
  13. [hh:mm:40] [INFO] checking table existence using items from '/software/sqlmap/tx
  14. t/common-tables.txt'
  15. [hh:mm:40] [INFO] adding words used on web page to the check list
  16. please enter number of threads? [Enter for 1 (current)] 8
  17. [hh:mm:43] [INFO] retrieved: users
  18. Database: testdb
  19. [1 table]
  20. +-------+
  21. | users |
  22. +-------+

暴力破解列名

开关:--common-columns

对于任意数据表,可能存在开启了开关 --columns 之后仍不能够获取数据库表的列名的情况。这样的场景通常会在如下情况下发生:

  • DBMS 是 < 5.0 版本的 MySQL,它们不具备 information_schema
  • DBMS 是微软的 Access 数据库,相对应的列名信息在数据库系统表中不存在。
  • 当前会话用户对 DBMS 中存储数据表定义的系统表没有读权限。

如果出现前面两个场景中的任意一个,并且你开启了 --columns 开关,sqlmap 则会提示你是否使用暴力破解技术。因而,就算出现上面两个场景之一,只要你开启了 --common-columns,sqlmap 仍然可以识别出部分系统数据表。sqlmap 会尝试对系统表进行暴力破解,试图找出 DBMS 中存在的常见数据表列名。

常见的数据表名列表存储在 txt/common-columns.txt,支持用户进行任意修改。