Kali Linux Web渗透测试手册(第二版) - 6.4 - 基于错误的SQL注入

admin 2023年1月8日23:06:52评论19 views字数 1855阅读6分11秒阅读模式

Kali Linux Web渗透测试手册(第二版) - 6.4 - 基于错误的SQL注入

Kali Linux Web渗透测试手册(第二版) - 6.4 - 基于错误的SQL注入

翻译来自掣雷小组

成员信息:

thr0cyte,Gr33k,花花,MrTools,R1ght0us,7089bAt


Kali Linux Web渗透测试手册(第二版) - 6.4 - 基于错误的SQL注入

记红色的部分为今日更新内容。

6.0、介绍

6.1、寻找文件包含漏洞

6.2、文件包含和文件上传

6.3、手工验证SQL注入

6.4、基于错误的SQL注入

6.5、确认并利用sql盲注漏洞

6.6、使用SQLMap查找和利用SQL注入

6.7、利用XML外部实体注入

6.8、检测和利用命令注入漏洞



6.4、基于错误的SQL注入

在上一个章节中,我们检测到了一个SQLi。 在本文中,我们将利用该漏洞并使用它从数据库中提取信息。

 

实战演练

我们已经知DVWA容易受到SQLi的攻击,所以让我们登录并浏览http://192.168.56.11/dvwa/vulnerabilities/sqli/然后按照以下步骤操作:

1.在检测到SQLi存在后,下一步是想办法内部查询,或者更确切地说,知道其结果的列数。在“用户ID”框中输入任意数字,然后单击“提交”。

2.现在,打开HackBar(点击F9)然后点击加载URL。 地址栏中的URL现在应该出现在HackBar中。

3.在HackBar中,我们将id参数的值替换为1'order by 1  - '并单击Execute,屏幕截图所示:

Kali Linux Web渗透测试手册(第二版) - 6.4 - 基于错误的SQL注入

4.我们继续增加order by后面的值并执行请求,直到页面发生了报错。在此示例中,报错信息发生在它在按列数3时。这意味着查询的结果只有两列,因为我们尝试按不存在的列对其进行排序时会触发错误:

 

Kali Linux Web渗透测试手册(第二版) - 6.4 - 基于错误的SQL注入

5.现在我们知道数据有两列。然后我们尝试使用union语句提取一些信息。将id的值设置为1'union select 1,2--'并执行。 你应该会得到结果:

Kali Linux Web渗透测试手册(第二版) - 6.4 - 基于错误的SQL注入

6.这意味着我们要使用union查询中请求两个值。 让我们来看看DBMS和数据库用户的版本。 将id设置为

1'union select @@ version,current_user()-- '

然后执行:

Kali Linux Web渗透测试手册(第二版) - 6.4 - 基于错误的SQL注入

 

7.随后我们寻找与之更相关的东西,例如应用程序的用户。首先我们需要找到用户的表。将id设置为

1'union select table_schema,table_name FROM information_schema.tablesWHERE table_name LIKE '%user%'--'

提交之后看到如下页面:

Kali Linux Web渗透测试手册(第二版) - 6.4 - 基于错误的SQL注入

8.好的,我们知道数据库(或模式)名称为dvwa,我们正在寻找的表是user。由于我们只有两个位置来设置值,我们需要知道表中的哪些列对我们有用; 将id设置为

1'union select column_name,1 FROM information_schema.tables WHEREtable_name ='users'--'

9.最后,我们知道了user表的内容。将id设置为

1'union select user,password FROM dvwa.users  -- '

Kali Linux Web渗透测试手册(第二版) - 6.4 - 基于错误的SQL注入

在First name字段中,我们找到程序所存放的用户名,在Surname字段中,我们找到了每个用户的密码哈希值。 我们可以将这些哈希值复制到文本文件中,然后尝试使用John the Ripper或我们最喜欢的密码破解程序来破解它们。

 

  

原理剖析

从我们的第一次注入,1' order by 1 - '到1'order by 3 - '的顺序,我们使用SQL中的一个功能,允许我们使用其中的数字来排序某个字段或列的查询结果。它在查询中声明的顺序。我们使用它来生成错误,以便我们可以找出数据库有多少列,以便我们可以使用它们来创建union查询。

union语句用于连接具有相同列数的两个查询。通过注入,我们几乎可以向数据库查询任何内容。在这个章节中,我们首先检查它是否按预期工作。之后我们在用户表中设置我们的目标并执行以下操作来获取它:

1.第一步是发现数据库和表的名称。我们通过查询information_schema数据库来做到这一点,该数据库存储了MySQL中数据库,表和列的所有信息。

2.一旦我们知道数据库和表的名称,我们就会查询表中的列,以找出我们要查找的列,比如用户名和密码。

3.最后,我们在dvwa数据库的users表中注入了一个查询所有用户名和密码的SQL语句。



赞赏老哥一瓶大可乐+大鸡腿吧!

Kali Linux Web渗透测试手册(第二版) - 6.4 - 基于错误的SQL注入

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

Kali Linux Web渗透测试手册(第二版) - 6.4 - 基于错误的SQL注入

更多精彩内容,关注玄魂工作室



原文始发于微信公众号(玄魂工作室):Kali Linux Web渗透测试手册(第二版) - 6.4 - 基于错误的SQL注入

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月8日23:06:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Kali Linux Web渗透测试手册(第二版) - 6.4 - 基于错误的SQL注入https://cn-sec.com/archives/782576.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息