工具 | 链接 |
---|---|
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 |
注:
首先打开工具 Git Bash,使用 cd 命令切换到将用来安装项目文件的目录下。
cd 目标目录(相对路径或绝对路径)
在 Git Bash 中使用如下命令获取 GitHub 中的 sqli-labs 项目文件。
git clone https://github.com/Audi-1/sqli-labs
如果你使用的是 Windows ,那么很可能会出现如下错误提示:
翻译一下,就是:
Windows 的文件系统默认是对文件夹大小写不敏感的,也就是说 Class 文件夹与 class 会被认为是同一个文件夹,不单单是文件夹,对文件也是这样的。
所以刚刚的 Warning 是在提醒我们,GitHub 中的目标项目中的某个文件夹中出现了有大小写之分的同名文件。遇到这种情况 git 程序并不会终止运行,其中的一个文件将被另一个 “同名文件覆盖”。
遇到这种情况有三种解决方法(包括但不限于)。
Linux 操作系统的文件系统对于文件(夹)的命名都是对大小写敏感的,也即区分大小写。所以可以使用 Linux 操作系统通过 git 工具来获取项目文件。
不要使用 Mac OS,因为 Mac OS 与 Windows 都默认对文件名大小写不敏感。
让我们来看一下 Windows 官方(微软)对此的描述:
Windows 文件系统支持使用属性标志按目录设置区分大小写。 虽然标准行为是不区分大小写,但你可以分配属性标志来使目录区分大小写,以便它能够识别可能仅大小写不同的 Linux 文件和文件夹。
在将驱动器装载到适用于 Linux 的 Windows 子系统 (WSL) 文件系统时,尤其如此。 在 WSL 文件系统中工作时,运行的是 Linux,因此默认情况下,文件和目录被视为区分大小写。
还有一个小小的备注:
在过去,如果文件的名称仅大小写不同,则 Windows 将无法访问这些文件,因为 Windows 应用程序将文件系统视为不区分大小写,并且无法区分名称仅大小写不同的文件。 虽然 Windows 文件资源管理器将同时显示这两个文件,但无论你选择哪一个文件,都只会打开一个文件。
注:
若要检查 Windows 文件系统中的目录是否区分大小写,请运行以下命令:
fsutil.exe file queryCaseSensitiveInfo <path>
使用该命令时,可将 fsutil.exe 替换为 fsutil。
使用该命令需要将
更改限制:
更改目录的区分大小写属性(命令均需以管理员身份运行):
3. 激活目录大小写敏感属性
fsutil setCaseSensitiveInfo <path> enable
fsutil setCaseSensitiveInfo <path> disable
Git 版本控制系统还具有一个配置设置,可用于调整处理的文件的区分大小写。
git config core.ignorecase false
git config core.ignorecase true
但是这个选项并似乎并没有起到任何作用。
验证过程如下:
rm -rf sqli-labs
git config core.ignorecase false
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. 我们前往原先发生冲突的文件夹中,结果如下:
是我老眼昏花了。
git 配置起作用了,对大小写不敏感的 Git 只能获取到同文件夹中大小写不同但名称相同的文件(夹)中的一个。但也仅在使用命令激活目录大小写敏感属性的 Windows 系统下生效,在Windows 未激活改属性前,Git配置将不能解决同名大小写不同的文件(夹)之间的碰撞问题。
所以,这个方案能起作用但有点鸡肋。
我们使用方案二获取到完整的 sqli-labs 项目文件。
找到如下界面,并点击修改按钮。
点击 “浏览” 按钮将网站的根目录设置为 sqli-labs 项目文件的安装路径下。
点击确认即可。
在保证 phpstudy 及 Apache 服务未关闭的情况下打开浏览器访问本地回环地址 127.0.0.1 。
让我们先打开第一关,发现 sqli-labs 抛出了如下错误:
我们需要为 sqli-labs 配置一些信息后,它才能正常连接数据库。在 sqli-labs 项目文件下,存在 sql-connections 文件夹,打开它后我们能看到这些文件:
其中的 db-creds.inc 文件就包含了 sqli-labs 连接数据库所需要的信息。
数据库的账号密码我们可以在 phpstudy 中查看:
由于我使用的是 phpstudy 的默认密码(root),所以修改成这样保存就可以了:
刷新页面,发现页面发生了变化,但仍然存在错误:
让我们返回到 sqli-labs 的首页,点击 Setup/reset Database for labs 来进行初始化。
经历一波三折后,再次打开第一关,还是发现了错误:
错误原因是由于,PHP7 和 PHP5 在与 MySQL 交互时使用的函数等的不同导致的。
找到如下页面安装更低的 PHP 版本,这里我将安装 PHP5.6.9。
确认安装完成后,将 phpstudy 使用的 PHP 版本改为 PHP5.6.9.