Web渗透测试

使用SQLMsp查找和利用SQL注入

前言

开发SQL注入是一个非常辛苦的过程。SQLMap是kali Linux中包含的命令行工具,它可以帮助我们使用多种技术对各种数据库自动检测和利用 SOL注入。我们将使用 SQLMap 来测和利用 SQL漏洞,并获取应用程的用户名和密码。

实战演练

浏览 http://192.168.56.11/mutillidae,进入 OWASP 2013A1- SOL jection(SOL)|SQLi- ExtraciDatalUser Info(SOL) :
1.尝试任何用户名和密码,例如 user 和 password,然后单击 View Account Details

2.登录将失败,但我们对 URL 感兴趣。转到地址栏,将完整的 URL 复制到贴板。应该是这样
的:
http://192.168.56.11/mutillidae/index.php?page=user-infophp&username=user&password=password&user-info-php-submit-button-View+Account+Details3.

3.现在,在终端窗口中,输入以下命令:
sqlmap -u "http://192.168.56.11/mutillidae/index.php?page=user-info.php&username-user&password=password&user-info-php-submit-button=View+Account+Details"-p username --current-user --current-db --is-dba
可以看到-u 参数的值是复制的 URL。使用-p,我们告诉 SOLMap,我们希望在用户名参数中查找SQLi,一旦漏洞被利用,我们希望它检索当前数据库用户名和数据库名称,并知道该用户在数据库中是否具有管理权限。检索这些信息是因为我们只想知道用户名参数中的 URL 中是否有 SOLi。下面的截图显示了这个命令以及SOLMap 如何表示执行:

4.SOLMap测到用程使用的 DBMS它还会我是否跳过对其他 DBMS的试,是否要包含对所检测的特定系统的所有测试,即使它们超出了当前级别和配置风险的范围。在这种情况下,我们回答 Yes 以跳过其他系统,而回答 No以则进行所有测试。

5.一旦我们定的参被发现是存在 sql 入的,SQLMap 将我们是否需要测试其他参数我们对这个问题的回答是 No的,然后我们会看到结果:6.如果我们想要获得用户名和码,就我们在的小节中所的那样,我们需要知道具有这些信息的表的名称。在终端执行以下命令:
sqlmap-u"http://192.168.56.11/mutillidac/index.php?pagc=user-info.php&usernamc=user&password=password&user-info-php-submit-button=View+Account+l)etails"-D nowasp --tables
SQLMap

保存了它执行的注入的日志,因此第二次攻击将比第一次攻击花费更少的时间。如所见,攻击返回我们指定的数据库中的表列表:

7.Account表看起来像是拥有我们想要的信息。让我们查看的他的字信息:

sqlmap -u "http://192.168.56.11/mutillidae/index.php?page=user-info.php&usernameuser&password=password&user-info-php-submit-button=View+Account+Details"-D nowasp -T accounts --dump

我们现在有了完整的用户表,在这种情况下,我们可以看到密码没有加密,所以我们可以直接使用密码进行登录:

8.SQLMap 还可以用于在据库和操作系统中提。如,如果据库用户是管理员权限,我们可以使用 --users-passwords用户用户名码列如下:通常,这些也是操作系统用户,并将允许我们提升到操作系统权限或者可以登录其他网络主机。

9我们还可以得到一个shell,它允许我们直接向数据库发送SQL查询,如下所示:

原理解析

SQLMap 使用SQLi字符测试给定URL和数据中的所有输入参数,或者只测试-p 选项中的指定
输入参数,并解释响应以发现是否存在漏洞。不过最好不要模糊测试所有输入参数, 有哪位寻找所有
可能性的注入可能会花费大量时间,并在网络中产生非常可疑的流量。一般使用 SOLMap 来利用我们
已经知道存在的注入,并且试图缩小搜索过程。可以向它提供更多可用的信息,例如存在 sql 注入的参
数、DBMS类型和其他信息。

在这个小节中,我们已经知道用户名参数容易受到SQL注入的攻击(因为我们使用了 mutillidae的SOL注入测试页面)。在第一次攻击中,我们只想确定那里有一个注入,并要求提供一些非常基本的信息:用户名(--currant-user)数据库名(--current-db)以及用户是否是管理员(--is-dba)。

在第二次攻击中,我们指定了要使用-D选项查的数据库,以及从上次攻中获得的名称,并要
求提供它包含的表列表。知道我们想要得到什么表(T acounts),我们告SQLMap 用-dump读取它的内容。

因为从应用程序查询数据库的用户是 DBA,所以它允许我们向数据库询问其他用户的信息,而SOLMap使用--users和--passwords选使我们的更加这些选项要求用户名和码因为有的 dbms都对用户的密码进行了加密,而我们得到的是散列,所以我们仍然需要使用密码破解程序来破解它们。如果SQLMap 请求执行字典攻击时回答了 Yes,那么现在就可能知道一些用户的密码。

我们还使用--sql-shell 选项获取一个 shell,从这个 shell 可以向数据库发送SOL查询。当然,这不是一个真正的 shell,只是 SQLMap 通过 SQLi发送我们编写的命令并返回这些查询的结果。

提示:
一般一个完整字母前面是两个杠(--),单个字母前面是一个杠(-)。

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值