SQL注入的练习

描述

在本实验中,您可以练习课程中学到的 SQL 注入技术和工具。您可以通过以下地址访问目标 Web 应用程序:10.124.211.96

目标

本实验的目标是测试 Web 应用程序,以找到所有存在注入点的漏洞。一旦找到它们,您应该能够导出所有数据并成功登录到 Web 应用程序。

工具

本实验最好使用以下工具:

  • Web 浏览器
  • SQLMap

步骤

探索 Web 应用程序

在地址 10.124.211.96 上探索 Web 应用程序,找到所有可能的注入点。

测试和利用注入点

现在,您应该已经找到了一些注入点。使用不同的技术来测试和利用这些注入点。

导出数据

既然您知道目标 Web 应用程序中至少存在一个可利用的 SQL 注入点,那么就利用它来导出所有数据库中的数据。您应该能够检索到一些非常有趣的信息,使您能够成功登录到 Web 应用程序。

不使用任何凭证登录

测试登录表单,尝试使用 SQL 注入并使用正确的有效负载来绕过身份验证机制。

解决方案

仅在完成实验或遇到问题时,请参考解决方案!在实际尝试课程中学到的概念和技术之前,查看解决方案将大大降低实践实验的效益!

解决方案步骤

探索 Web 应用程序

探索 Web 应用程序

在地址 10.124.211.96 上探索 Web 应用程序,找到所有可能的注入点。

测试和利用注入点

到目前为止,您应该已经找到了一些注入点。使用不同的技术对它们进行测试。

导出数据

既然您知道目标 Web 应用程序中至少存在一个可利用的 SQL 注入点,那么就利用它来导出所有数据库中的数据。您应该能够检索到一些非常有趣的信息,使您能够成功登录到 Web 应用程序。

不使用任何凭证登录

测试登录表单,尝试使用 SQL 注入并使用正确的有效负载来绕过身份验证机制。

解决方案

仅在完成实验或遇到问题时,请参考解决方案!在实际尝试课程中学到的概念和技术之前,查看解决方案将大大降低实践实验的效益!

解决方案步骤

探索 Web 应用程序

为了探索 Web 应用程序,我们只需要在浏览器中输入 IP 地址即可:

现在我们能够访问它了,让我们浏览应用程序以找到所有可能的注入点。

目前,我们不知道任何有效的凭证,所以如果我们登录,我们将会收到类似以下的消息:

如果我们继续深入应用程序,我们可以看到以下地址的一个非常有趣的页面:http://10.124.211.96/news.php

在这里,我们有一个新闻列表,通过点击列表中的任何链接,我们可以看到一个非常有趣的页面:

正如您在浏览器地址栏中所见,应用程序似乎接受一个参数(id)。这可能用于从数据库中检索新闻。

让我们使用这个注入点进行测试!

测试和利用注入点

我们可以对前面步骤中找到的页面运行以下第一个测试:

我们只是在地址栏中添加了一个单引号,如上面的截图所示,我们获得了一个 mysql 错误。现在是时候动手了!让我们创建一些有效负载来测试参数是否容易受到 SQL 注入攻击。

我们想要对它进行布尔条件测试,所以让我们使用以下有效负载:

1
10.124.211.96/newsdetails.php?id=26 and 1=1; -- -

然后,我们尝试以下有效负载(我们将布尔条件从 1=1 改为 1=2):

1
10.124.211.96/newsdetails.php?id=26 and 1=2; -- -

从前面两个截图中可以看到,我们获得了两个不同的结果。当条件为真时,应用程序返回新闻。当条件为假时,页面不返回任何内容。这意味着该参数容易受到 SQL 注入攻击!

导出数据

既然我们知道了一个易受攻击的注入点,让我们使用 sqlmap 来利用它并从应用程序数据库中检索所有数据:

C:\\Users\\Litsnarf\\Desktop\\pts3\\sqlmap.png

从前面的截图中可以看到,sqlmap 将该参数标识为 易受攻击!现在我们只需要获取数据库的结构并导出数据。首先,让我们获取表的列表,如下所示:

然后,使用以下命令从 accounts 表中导出所有数据:

1
sqlmap -u http://10.124.211.96/newsdetails.php?id=1 -D awd -T accounts --dump

正如我们所看到的,现在我们有了一系列用户名和密码,可以用来登录到该 Web 应用程序!让我们尝试其中之一:

太棒了,我们成功登录到了 Web 应用程序!

不使用任何凭证登录

到目前为止,我们将测试重点放在 newsdetails.php 页面及其参数上,但是该 Web 应用程序还有另一个注入点需要测试:登录表单!

让我们运行一些测试,看看是否能够绕过登录!为此,我们将使用以下有效负载:

1
' or 1=1; -- -

正如我们所看到的,登录表单也存在漏洞,实际上出现了 “Welcome!“ 消息!

SQL 注入

在线图书馆 1-3

Poema 读书俱乐部 5-6-7

Arrogant Bank

寻找 SQLi 1-2

描述

在这些 SQL 注入 实验中,学生可以练习发现和利用针对不同数据库管理系统和平台的 SQL 注入攻击技术。

一旦您通过 VPN 连接到实验环境,所有 Web 应用程序将可在以下网址访问:http://info.sqli.site/

每种类型的实验都有三个主要部分:视频实验挑战

  • 视频 部分包含在视频课程中使用的 Web 应用程序。因此,如果您需要有关情节、攻击等方面的任何信息,请参考相应的视频。

  • 实验 部分包含可以练习特定模块技术并提供解决方案的 Web 应用程序。您稍后可以在本手册中找到它们。

  • 挑战 实验没有解决方案;否则,为什么称之为挑战呢?如果您学习课程并像渗透测试员一样思考,您将实现目标!

工具和信息

最好的工具就是您的大脑。然后,您可能需要以下工具:

  • Web 浏览器

  • Burp Suite

  • Sqlmap

实验 DNS 配置

一旦您的虚拟网络准备就绪,请将以下 IP 地址配置为默认 DNS:10.100.13.37

  • WINDOWS:更改 TAP 网络设备的属性,将服务器的 IP 地址添加为第一个 DNS 服务器。

  • LINUX:在 /etc/resolv.conf 文件中添加一条记录,其中包含服务器的 IP 地址。

    凭证

请使用以下凭证登录以下 Web 应用程序:

Web 应用程序 用户名 密码
http://1.challenge.sqli.site giovanni mycoolpass

实验和挑战

实验 #1 - 在线图书馆 - 1

情景

在线图书馆 是一个用于查询图书馆目录的 Web 应用程序。它使用数据库存储有关图书的信息,并且该应用程序易受 SQL 注入攻击。

您知道 DBMS 是 MySQL,并且页面 getBrowserInfo.php 上的参数 Header User-agent 没有被应用程序正确地进行过滤。这意味着它会被 DBMS 处理,并且是可注入的。

这是一个盲 SQL 注入,因此您无法使用 UNION 技术提取数据。

目标

提取数据库结构和任何数据。

您将学到什么

  • 如何使用盲注利用技术

  • 如何手动提取数据

  • 如何使用 sqlmap 自动执行相同的利用

实验 #2 - 在线图书馆 - 2

情景

在线图书馆 是一个用于查询图书馆目录的 Web 应用程序。它使用数据库存储有关已知图书的信息,并且易受 SQL 注入攻击。

您将枚举每个易受 SQL 注入攻击的参数。

目标

找到易受 SQL 注入攻击的参数。

您将学到什么

  • 查找 SQL 注入攻击的方法

  • 如何找到 SQL 注入攻击

  • 如何检测注入类型

  • 如何使用 Burp Suite 查找 SQL 注入攻击

实验 #3 - 在线图书馆 - 3

情景

在线图书馆 是一个用于查询图书馆目录的 Web 应用程序。它使用数据库存储有关图书的信息,并且易受 SQL 注入攻击。

您将检测易受攻击的页面,然后利用它来提取数据库中的任何可用数据。

目标

提取数据库结构和任何数据。

您将学到什么

  • 如何检测基于错误的 SQL 注入攻击

  • 如何手动提取数据(基于错误的技术)

  • 如何使用 sqlmap 自动利用(基于错误的技术)

挑战 #1 - Poema 读书俱乐部 5

情景

Poema 是一个小型读书俱乐部,会员热爱书籍、诗歌和灵性。他们不喝酒,也不参加派对。他们阅读和思考。

他们建立了一个网站,在那里他们可以与世界分享他们的阅读偏好、喜欢的作家和照片。

俱乐部有一个书架副主席和一个俱乐部主席。他们是最智慧和受祝福的成员,过着书籍、内省和禁欲的生活。

目标

您想在该网站中发现 SQL 注入漏洞,确定 SQL 注入的类型和可利用性。您还需要利用漏洞从数据库中提取信息。

  • 找出数据库中 Ruud 的密码

您将学到什么

  • 如何手动查找 SQL 注入漏洞

  • 如何确定 SQL 注入是 “盲注” 还是 “基于错误的注入”

  • 如何使用 sqlmap 从数据库中提取信息

挑战 #2 - Poema 读书俱乐部 6

情景

Poema 是一个小型读书俱乐部,会员热爱书籍、诗歌和灵性。他们不喝酒,也不参加派对。他们阅读和思考。

他们建立了一个网站,在那里他们可以与世界分享他们的阅读偏好、喜欢的作家和照片。

俱乐部有一个书架副主席和一个俱乐部主席。他们是最智慧和受祝福的成员,过着书籍、内省和禁欲的生活。

目标

您想要手动利用基于错误的 SQL 注入漏洞从数据库中导出数据。您需要首先确定远程数据库的版本、当前用户和选择的数据库。然后进行模式枚举和数据导出。

  • 找出数据库中 Ruud 的密码

您将学到什么

  • 如何手动查找 SQL 注入漏洞

  • 如何确定 SQL 注入是 “盲注” 还是 “基于错误的注入”

  • 如何使用基于错误的技术和仅使用 Web 浏览器从数据库中提取信息

挑战 #3 - Arrogant Bank

情景

Arrogant Bank 是一家拥有现代化网页界面的银行,您可以在其中执行一些操作,比如…嗯…了解您账户中有多少钱。您是 Giovanni,一个好人,对生活感到沮丧,并且在该银行有一个账户:

  • 用户名:giovanni

  • 密码:mycoolpass

这家银行特别傲慢,嘲笑穷账户持有人。您碰巧是最穷的账户持有人(因此感到沮丧)。

目标

您想要在该网站中发现 SQL 注入漏洞,确定 SQL 注入的类型和可利用性。您还需要利用漏洞从数据库中提取信息。

  • 找出最富有的账户的密码

  • 成为最富有的账户,以获得尊重

您将学到什么

  • 使用 burp 代理检查应用程序逻辑

  • 发现 SQL 注入漏洞

  • 使用 sqlmap 利用 SQL 注入漏洞

挑战 #4 - Poema 读书俱乐部 7

情景

Poema 是一个小型读书俱乐部,会员热爱书籍、诗歌和灵性。他们不喝酒,也不参加派对。他们阅读和思考。

他们建立了一个网站,在那里他们可以与世界分享他们的阅读偏好、喜欢的作家和照片。

俱乐部有一个书架副主席和一个俱乐部主席。他们是最智慧和受祝福的成员,过着书籍、内省和禁欲的生活。

该网站最近经历了进一步的开发和错误修复,尽管数据库结构没有发生变化。

目标

您想要在该网站中发现 SQL 注入漏洞,确定 SQL 注入的类型和可利用性。

您还需要利用漏洞从数据库中提取信息。这次您要确定是否可以使用工具,以及是否可以使用其他手动和更直接的技术。

  • 找出数据库中 Ruud 的密码

您将学到什么

  • 如何手动查找 SQL 注入漏洞

  • 如何确定在特定情况下使用哪种 SQL 注入技术最佳

  • 如何使用直接查询从数据库中提取信息

解决方案

请继续阅读下一篇