关于解决本地部署sqli-labs无法安装低版本php环境问题

前言:本文是对phpstduy(版本8.1.3)集成环境下部署sqli-labs时会因兼容性问题产生报错的解决方案,方法较为繁琐,但确实可以解决问题。

1.如何配置环境

相信大家在根据网上教程下载低版本php时会遇到如下情况:

而如果改成其他版本又会显示网络不稳定,我网上查找了但依旧找不到相应的解决方案,这里采用低版本环境其实涉及到一个函数问题,如果我们最开始不部署低版本环境直接进会遇到如下报错:

php 复制代码
Fatal error: Uncaught Error: Call to undefined function mysql_connect() in 
D:\phpstudy_pro\WWW\sql\sql-connections\setup-db.php:29 Stack trace: #0 {main} thrown in 
D:\phpstudy_pro\WWW\sql\sql-connections\setup-db.php on line 29

遇到这个错误,是因为我们使用的 PHP 版本过高(PHP 7.0 及以上),而 sqli-labs 靶场原先的代码是基于 PHP 5 版本编写的,使用了已被高版本 PHP 移除的 mysql_connect() 函数 。

因为此时我们无法切换低版本的php环境,那么就需要手动将代码中所有旧的 mysql_* 函数替换为新的 mysqli_* 函数 。这需要修改多个文件,稍微复杂一些。

可以参考下面的对照表,将报错文件(setup-db.php)以及 sql-connections 和 sql-connect 文件夹下相关文件中的数据库操作函数进行替换 :

废弃的 mysql 函数 对应的 mysqli 函数(面向过程) 修改说明
mysql_connect() mysqli_connect() 连接数据库,需要传入服务器、用户名、密码等参数
mysql_select_db() mysqli_select_db() 选择数据库,需要在连接成功后调用
mysql_query($sql) mysqli_query($conn, $sql) 执行SQL语句,必须把数据库连接对象 $conn 作为第一个参数传进去
mysql_error() mysqli_error($conn) 获取错误信息,同样需要传入数据库连接对象 $conn
mysql_fetch_array() mysqli_fetch_array() 从结果集中取得一行作为数组,用法基本一致

其实这里面如果装了vscode的话很好看出来的,如果是以前的mysql这样的话会标注出来,如下图所示:

我们只要根据提示进行相应修改就行了。

然后这里面首先要改的是最基本的配置文件夹即sql-connections,我这里的文件路径如下:

D:\phpstudy_pro\WWW\sql\sql-connections

进入之后我们要对如下文件都进行相应修改:

完成后我们再回到sqli-labs主界面点击Setup DB,如果看到如下内容且无报错则证明修改完成:

这时候我们进入第一关可以看到页面看起来很正常:

但是我们下一步进行?id=1'时,页面不会有任何回显,这是因为每一关使用的mysql函数都是低版本的,这就导致了在高版本下无法有任何输出,因此我们在每一关中也要修改index.php中已经被高版本弃用的mysql函数:

完成相应修改之后再回到我们的第一关,开始相应测试:

2.实战试水

首先找列数:

4显示未知,3正常,则此处无问题。

union查询找回显位:

然后这里有一个比较难绷的:

我这里用的php环境是默认的7.3.4,但可能是数据库的配置文件里面写的是5.7.26所以就显示了这个

然后是爆表:

接着爆字段:

最后脱个库:

3.总结

整套流程做下来没问题的话那后续应该也正常,后面做的时候记得把index.php里面的mysql都改成mysqli,要不然做着做着还以为是盲注(bushi)。如果这篇文章对你有帮助的话,劳烦点个赞支持一下o(* ̄▽ ̄*)ブ

相关推荐
布吉岛的石头4 小时前
Java 程序员第 50 阶段2:预训练的目标函数:自回归语言建模本质
java·开发语言·人工智能·深度学习·回归·transformer
JaguarJack5 小时前
PHP 紧急修复两项严重 RCE 漏洞,8.2 至 8.5 用户应立即升级
后端·php·服务端
小羊没烦恼!5 小时前
铁道部新客票系统设计(二)
开发语言·前端·数据库·python·oracle·c#·php
BingoGo5 小时前
PHP 紧急修复两项严重 RCE 漏洞,8.2 至 8.5 用户应立即升级
后端·php
quantdash_cc5 小时前
从实时行情到价格观察表:用 Python 和 Pandas 构建策略输入数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
昂好的day6 小时前
VisionMaster 通信模块实战(上):Modbus、TCP 收发、协议组装解析
开发语言·网络·网络协议·tcp/ip·c#
努力实干7 小时前
面向对象设计原则——C++
开发语言·c++·数码相机
NetX行者9 小时前
四语言 Hello World 背后:编译模型与运行时对比
开发语言
Pin_Qing10 小时前
账单没超,请求先被拒了
大数据·开发语言·人工智能
2601_9628857210 小时前
如何用 Python 计算 VaR 和 CVaR(在险价值)?
开发语言·python