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

相关推荐
Hello World . .1 小时前
Linux:线程间通信
linux·开发语言·vscode
liliangcsdn1 小时前
深入探索TD3算法的推理过程
开发语言·php
谁刺我心1 小时前
qt源码、qt在线安装器镜像下载
开发语言·qt
jllllyuz1 小时前
实际气体状态方程:Peng-Robinson(P-R)方程计算指南
开发语言·matlab
LYS_06182 小时前
C++学习(8)(文件输入输出,类和对象(1))
开发语言·c++·学习
历程里程碑2 小时前
26信号处理一:从闹钟到进程控制的奥秘
linux·运维·服务器·开发语言·c++·算法·排序算法
jghhh012 小时前
基于C# WinForm实现自动在线升级的方案
开发语言·c#
Gofarlic_OMS2 小时前
LS-DYNA许可证全局状态及集群计算资源使用可视化监控大屏
运维·开发语言·算法·matlab·自动化
阿里嘎多学长2 小时前
2026-02-25 GitHub 热点项目精选
开发语言·程序员·github·代码托管