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

相关推荐
ShineWinsu2 分钟前
对于Qt:QTableWidget常见属性以及QTableWidgetItem类的解析
开发语言·c++·qt·gui·客户端·表格·qtablewidget
ShineWinsu1 小时前
对于Qt:QListWidget常见属性以及QListWidgetItem类的解析
开发语言·c++·qt·客户端·列表·qlistwidget·qlistwidgetitem
吴名氏.1 小时前
Java转AI Agent教程(第十二周)检索与切分
java·开发语言·人工智能·ai·ai agent
瑞雪兆丰年兮2 小时前
JavaWeb-day10-SpringBootWeb案例
java·开发语言·javaweb·web
Elastic 中国社区官方博客2 小时前
更少的位数,相同的召回率:DiskBBQ 更保守的自动校准扫描
大数据·运维·开发语言·人工智能·elasticsearch·搜索引擎
三雷科技3 小时前
第6章第4节:自定义分词器
开发语言·c#
Adellle3 小时前
设计模式指南 (Java 版) ㊁
java·开发语言·设计模式
Delightrs4 小时前
Rust LeetCode238 算法题解
开发语言·算法·rust
爱和冰阔落4 小时前
【Linux网络】JsonCpp 怎么实现序列化?从 Request/Response 到网络计算器消息设计
linux·运维·网络·php
云上工程笔记4 小时前
SRT字幕一键转手绘动画:srt-whiteboard-animation的复刻实录
大数据·开发语言·javascript·人工智能·机器学习