首页
学习
活动
专区
圈层
工具
发布
27 篇文章
1
Kali Linux Web渗透测试手册(第二版) - 6.8 - 检测和利用命令注入漏洞
2
Kali Linux Web渗透测试手册(第二版) - 6.7 - 利用XML外部实体注入
3
Kali Linux Web渗透测试手册(第二版) - 6.4 - 基于错误的SQL注入
4
Kali Linux Web渗透测试手册(第二版) - 6.3 - 手动识别SQL注入
5
Kali Linux Web渗透测试手册(第二版) - 6.2 - 文件包含和文件上传
6
Kali Linux Web渗透测试手册(第二版) - 5.7 - 使用ZAP测试WebSokets
7
Kali Linux Web渗透测试手册(第二版) - 6.6 - 使用SQLMap查找和利用SQL注入
8
Kali Linux Web渗透测试手册(第二版) - 7.3 - 利用metasploit创建并反弹shell
9
Kali Linux Web渗透测试手册(第二版) - 6.1 - 寻找文件包含漏洞
10
Kali Linux Web渗透测试手册(第二版) - 2.8 - 利用robots.txt
11
Kali Linux Web渗透测试手册(第二版) - 5.3 - 利用XSS获取Cookie
12
Kali Linux Web渗透测试手册(第二版) - 3.9 - WebScarab的使用
13
Kali Linux Web渗透测试手册(第二版) - 9.7 - 通过HTTP头利用漏洞
14
Kali Linux Web渗透测试手册(第二版) - 9.2 - 对跨站脚本攻击(xss)进行混淆代码测试
15
Kali Linux Web渗透测试手册(第二版) - 9.1 - 如何绕过xss输入验证
16
Kali Linux Web渗透测试手册(第二版) - 8.4 - 使用OWASP ZAP进行扫描漏洞
17
Kali Linux Web渗透测试手册(第二版) - 9.6 - 利用HTTP参数污染
18
Kali Linux Web渗透测试手册(第二版) - 9.4 - 绕过web服务器的CORS限制
19
Kali Linux Web渗透测试手册(第二版) - 9.3 - 绕过文件上传限制
20
Kali Linux Web渗透测试手册(第二版) - 8.8 - 使用CMSmap扫描Drupal
21
Kali Linux Web渗透测试手册(第二版) - 8.7 - 使用JoomScan扫描Joomla中的漏洞
22
Kali Linux Web渗透测试手册(第二版) - 8.3 - 使用Wapiti发现漏洞
23
Kali Linux Web渗透测试手册(第二版) - 7.8 - 使用Hashcat暴力破解密码哈希
24
Kali Linux Web渗透测试手册(第二版) - 7.6 - 使用Tomcat管理界面执行代码
25
Kali Linux Web渗透测试手册(第二版) - 7.5 - Windows提权
26
Kali Linux Web渗透测试手册(第二版) - 7.4 - Linux上的权限提升
27
Kali Linux Web渗透测试手册(第二版) - 7.2 - 通过利用Shellshock执行命令

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

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,屏幕截图所示:

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

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

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

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

然后执行:

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

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

提交之后看到如下页面:

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 -- '

在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语句。


下一篇
举报
领券