关于解决本地部署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-connectionssql-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(* ̄▽ ̄*)ブ

相关推荐
geovindu19 分钟前
go: Visitor Pattern
开发语言·设计模式·golang·访问者模式
宣宣猪的小花园.21 分钟前
C语言重难点全解析:内存管理到位运算
c语言·开发语言·单片机
方安乐4 小时前
python之向量、向量和、向量点积
开发语言·python·numpy
小小小米粒6 小时前
Collection单列集合、Map(Key - Value)双列集合,多继承实现。
java·开发语言·windows
czhc11400756637 小时前
C# 428 线程、异步
开发语言·c#
:1217 小时前
java基础
java·开发语言
SilentSamsara8 小时前
Python 环境搭建完整指南:从下载安装到运行第一个程序
开发语言·python
小短腿的代码世界8 小时前
Qt文件系统与IO深度解析:从QFile到异步文件操作
开发语言·qt
合天网安实验室8 小时前
记录一个免杀的php webshell demo
渗透测试·php·webshell·免杀
AnalogElectronic9 小时前
linux 测试网络和端口是否连通的命令详解
linux·网络·php