phpstudy 搭建 sqli-labs SQL 注入靶场

phpstudy 搭建 sqli-labs SQL 注入靶场

  • 所需工具
  • 获取项目文件
      • Warnning
      • Resolve
          • 1. 使用默认区分大小写的操作系统
          • 2. 使用 PowserShell 启用目录的区分大小写属性
          • 3. 修改 Git 配置属性使其区分大小写(鸡肋)
  • 使用 PHP 集成开发环境 phpstudy 搭建 sqli-lab 靶场
      • 前情
      • 开启 Apache 服务
      • 设置网站根目录
      • 访问 sqli-labs
  • 后续工作
      • 为 sqli-labs 配置数据库的相关信息
      • 修改 PHP7 为 PHP 5

所需工具

工具 链接
phpstudy https://www.xp.cn/download.html
Git https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git

注:

  1. phpstudy 的安装路径中的文件夹名称不能包含空格。
  2. git 工具下载速度较慢可能需要科学上网。

获取项目文件

首先打开工具 Git Bash,使用 cd 命令切换到将用来安装项目文件的目录下。

cd 目标目录(相对路径或绝对路径)

Warnning

在 Git Bash 中使用如下命令获取 GitHub 中的 sqli-labs 项目文件。

git clone https://github.com/Audi-1/sqli-labs

如果你使用的是 Windows ,那么很可能会出现如下错误提示:

phpstudy 搭建 sqli-labs SQL 注入靶场_第1张图片翻译一下,就是:
phpstudy 搭建 sqli-labs SQL 注入靶场_第2张图片Windows 的文件系统默认是对文件夹大小写不敏感的,也就是说 Class 文件夹与 class 会被认为是同一个文件夹,不单单是文件夹,对文件也是这样的。

phpstudy 搭建 sqli-labs SQL 注入靶场_第3张图片所以刚刚的 Warning 是在提醒我们,GitHub 中的目标项目中的某个文件夹中出现了有大小写之分的同名文件。遇到这种情况 git 程序并不会终止运行,其中的一个文件将被另一个 “同名文件覆盖”。

Resolve

遇到这种情况有三种解决方法(包括但不限于)。

1. 使用默认区分大小写的操作系统

Linux 操作系统的文件系统对于文件(夹)的命名都是对大小写敏感的,也即区分大小写。所以可以使用 Linux 操作系统通过 git 工具来获取项目文件。
不要使用 Mac OS,因为 Mac OS 与 Windows 都默认对文件名大小写不敏感。

2. 使用 PowserShell 启用目录的区分大小写属性

让我们来看一下 Windows 官方(微软)对此的描述:

Windows 文件系统支持使用属性标志按目录设置区分大小写。 虽然标准行为是不区分大小写,但你可以分配属性标志来使目录区分大小写,以便它能够识别可能仅大小写不同的 Linux 文件和文件夹。
在将驱动器装载到适用于 Linux 的 Windows 子系统 (WSL) 文件系统时,尤其如此。 在 WSL 文件系统中工作时,运行的是 Linux,因此默认情况下,文件和目录被视为区分大小写。

还有一个小小的备注:

在过去,如果文件的名称仅大小写不同,则 Windows 将无法访问这些文件,因为 Windows 应用程序将文件系统视为不区分大小写,并且无法区分名称仅大小写不同的文件。 虽然 Windows 文件资源管理器将同时显示这两个文件,但无论你选择哪一个文件,都只会打开一个文件。

注:

  1. 某些 Windows 应用程序(假定文件系统不区分大小写)不使用正确的大小写来引用文件。更改属性标志可能会导致应用程序无法正常工作。
  2. 如果 Windows 应用程序在使用区分大小写的文件的目录树中创建新目录,则这些目录不区分大小写(可以通过改变配置实现属性标志的自动继承)。

若要检查 Windows 文件系统中的目录是否区分大小写,请运行以下命令:

fsutil.exe file queryCaseSensitiveInfo <path>

使用该命令时,可将 fsutil.exe 替换为 fsutil。
使用该命令需要将 替换为 需要查询的目录路径,该路径可为相对路径也可为绝对路径。

更改限制:

  1. 系统限制
    自 Windows 10 内部版本 17107 开始,支持按目录区分大小写。 在 Windows 10 内部版本 17692 中,支持已更新,以包括从 WSL 内检查和修改目录的区分大小写标志。 使用名为 system.wsl_case_sensitive 的扩展属性公开区分大小写。 对于不区分大小写的目录,此属性的值为 0;对于区分大小写的目录,此属性的值为 1。
  2. 权限限制
    更改目录的区分大小写需要运行提升的权限(以管理员身份运行)。 更改区分大小写标志还需要对目录具有“写入属性”、“创建文件”、“创建文件夹”和“删除子文件夹和文件”权限。

更改目录的区分大小写属性(命令均需以管理员身份运行):
3. 激活目录大小写敏感属性

fsutil setCaseSensitiveInfo <path> enable
  1. 取消目录大小写敏感属性
fsutil setCaseSensitiveInfo <path> disable
3. 修改 Git 配置属性使其区分大小写(鸡肋)

Git 版本控制系统还具有一个配置设置,可用于调整处理的文件的区分大小写。

  1. 将 Git 设置为区分大小写
git config core.ignorecase false
  1. 将 Git 设置为不区分大小写
git config core.ignorecase true

但是这个选项并似乎并没有起到任何作用。
验证过程如下:

  1. 在 Git Bash 中使用如下命令删除前面下载出错的 sqli-labs 文件夹。
rm -rf sqli-labs
  1. 更改 Git 配置
git config core.ignorecase false
  1. 然后使用 git clone 命令获取 GitHib 中的目标项目文件 sqli-labs。但是,同样的问题再次出现了。
    于是做出猜测:
    是因为 Windows 的操作系统在起作用导致 Git 配置无法生效,毕竟,正常的软件是干不过操作系统的。
    那我们就来为 Git 创建环境,于是就有了下一步。
  2. 通过修改 sqli-labs 文件夹的大小写标志属性来使文件系统对文件名的大小写敏感。
    让我们先进入 sqli-labs 文件夹:
cd ./sqli-labs

删除文件夹中的所有文件:

rm -rf *

使用命令激活目录大小写敏感属性(在 cmd 或 PowerShell 中执行):

fsutil file setCaseSensitiveInfo ./ enable

由于我们要验证第三方案是否起作用,所以修改 Git 配置(使 Git 对大小写不敏感):

git config core.ignorecase true

返回上级目录后,我们再次使用 git clone 命令获取 GitHib 中的目标项目文件 sqli-labs,但是:
奇妙的事情发生了
命令 rm -rf * 仅能清除所有的非隐藏文件及文件夹,由于该文件夹中还存在 .git 文件,故获取项目文件失败。若想清除所有文件(不包括文件夹)则可以使用命令 rm -rf *.*,于是我们再次清理了文件夹 sqli-labs 并返回父目录中。
5. 再次使用 git clone 命令获取 GitHib 中的目标项目文件 sqli-labs。这次执行并没有发生文件名冲突的警告。
6. 我们前往原先发生冲突的文件夹中,结果如下:
phpstudy 搭建 sqli-labs SQL 注入靶场_第4张图片
是我老眼昏花了。

phpstudy 搭建 sqli-labs SQL 注入靶场_第5张图片

git 配置起作用了,对大小写不敏感的 Git 只能获取到同文件夹中大小写不同但名称相同的文件(夹)中的一个。但也仅在使用命令激活目录大小写敏感属性的 Windows 系统下生效,在Windows 未激活改属性前,Git配置将不能解决同名大小写不同的文件(夹)之间的碰撞问题。
所以,这个方案能起作用但有点鸡肋。

使用 PHP 集成开发环境 phpstudy 搭建 sqli-lab 靶场

前情

我们使用方案二获取到完整的 sqli-labs 项目文件。

开启 Apache 服务

phpstudy 搭建 sqli-labs SQL 注入靶场_第6张图片

设置网站根目录

找到如下界面,并点击修改按钮。
phpstudy 搭建 sqli-labs SQL 注入靶场_第7张图片点击 “浏览” 按钮将网站的根目录设置为 sqli-labs 项目文件的安装路径下。
phpstudy 搭建 sqli-labs SQL 注入靶场_第8张图片
点击确认即可。

访问 sqli-labs

在保证 phpstudy 及 Apache 服务未关闭的情况下打开浏览器访问本地回环地址 127.0.0.1
phpstudy 搭建 sqli-labs SQL 注入靶场_第9张图片

后续工作

至此,你以为靶场已经部署成功了吗?
phpstudy 搭建 sqli-labs SQL 注入靶场_第10张图片

为 sqli-labs 配置数据库的相关信息

让我们先打开第一关,发现 sqli-labs 抛出了如下错误:

phpstudy 搭建 sqli-labs SQL 注入靶场_第11张图片
我们需要为 sqli-labs 配置一些信息后,它才能正常连接数据库。在 sqli-labs 项目文件下,存在 sql-connections 文件夹,打开它后我们能看到这些文件:

phpstudy 搭建 sqli-labs SQL 注入靶场_第12张图片
其中的 db-creds.inc 文件就包含了 sqli-labs 连接数据库所需要的信息。
phpstudy 搭建 sqli-labs SQL 注入靶场_第13张图片
数据库的账号密码我们可以在 phpstudy 中查看:

phpstudy 搭建 sqli-labs SQL 注入靶场_第14张图片
由于我使用的是 phpstudy 的默认密码(root),所以修改成这样保存就可以了:
phpstudy 搭建 sqli-labs SQL 注入靶场_第15张图片刷新页面,发现页面发生了变化,但仍然存在错误:

错误信息### 数据库初始化

让我们返回到 sqli-labs 的首页,点击 Setup/reset Database for labs 来进行初始化。

phpstudy 搭建 sqli-labs SQL 注入靶场_第16张图片
初始化完成

phpstudy 搭建 sqli-labs SQL 注入靶场_第17张图片

修改 PHP7 为 PHP 5

经历一波三折后,再次打开第一关,还是发现了错误:
phpstudy 搭建 sqli-labs SQL 注入靶场_第18张图片错误原因是由于,PHP7 和 PHP5 在与 MySQL 交互时使用的函数等的不同导致的。

找到如下页面安装更低的 PHP 版本,这里我将安装 PHP5.6.9。
phpstudy 搭建 sqli-labs SQL 注入靶场_第19张图片

确认安装完成后,将 phpstudy 使用的 PHP 版本改为 PHP5.6.9.

phpstudy 搭建 sqli-labs SQL 注入靶场_第20张图片
更改使用的 PHP 版本后,回到第一关的页面进行刷新即可

phpstudy 搭建 sqli-labs SQL 注入靶场_第21张图片至此 sqli-labs 靶场就部署成功了。

你可能感兴趣的:(Tool,安全,sql,git,github)