RCE与SQL漏洞的复现

news/2024/9/23 15:39:34/

eval长度限制突破


php eval函数参数限制在16个字符的情况下,如何拿到webshell呢

首先,我们还是先把环境搭好(此次的所有漏洞环境我都部署在Ubuntu下,我的Ubuntu下的环境是nginx+php,至于Ubuntu下的nginx+php环境我也有博客也写到,希望可以帮助到到家。在这里,我建议nginx下的html文件夹最好的用户组和用户都设置为www-data,否则之后的创建一句话木马可能不能创建,我的环境在最开始的时候用户组和用户为root,所以我在这吃了点亏,望大家引以为戒。)

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

在这里,我们分析代码,这个PHP代码片段存在严重的安全漏洞。它接收用户输入,通过eval()函数执行输入的代码。尽管代码对输入进行了部分过滤,但这种保护并不完全有效,可能导致代码执行攻击(例如,代码注入或远程代码执行)。

这个语句从用户的请求中获取 param 参数。$_REQUEST 包含了 $_GET, $_POST, 和 $_COOKIE 的混合数据。

if
strlen($param)<17 && stripos($param,=== false && stripos($param,'eval')'assert')
false
  • 这个条件语句检查 $param 的长度是否小于17个字符,并且 $param 中不包含 "eval" 和 "assert" 字符串。
  • 通过这种方式,它试图阻止一些明显的危险输入,如包含 eval 或 assert 关键字的代码。
{
eval($param);
}

 eval() 函数会将传入的字符串当作PHP代码执行。
这意味着如果用户的输入通过了上述条件检查,输入的内容会直接在服务器上执行。

第一种方法
尽管代码中试图过滤掉 "eval" 和 "assert",以及限制了输入的长度,但这并不能阻止所有可能的攻击。例如,攻击者可以尝试绕过这些过滤条件,输入一些看似无害但实际上可以执行任意代码的内容。例如 phpinfo();

但是我们该如何生成一句话木马呢,由于他限制了eval和assert,突发奇想,因为这个环境部署在linux下,那我们可以使用``包裹代码执行啊

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

数一下16个字符,刚好限制在了17个字符以内,而我们可以传参给1,那么问题不就解决了吗

试试吧

 

这个时候,我们看了之后权限只是www-data,那我们可以创建文件

echo `$_GET=[1]`;&1=touch /tmp/111.txt

 

 

我们既然可以创建这个,那么webshell不也可以吗,只做到这里,剩下的一句话木马的生成可以自行研究下。


http://www.ppmy.cn/news/1512591.html

相关文章

二、什么是Vue中的响应式?Vue的响应式原理

什么是Vue中的响应式 Vue中的响应式&#xff0c;简而言之就是当数据发生变化时&#xff0c;页面跟随变化。使用过Vue的v-model都有比较深刻的感受&#xff0c;我们在代码中修改双向绑定的数据后&#xff0c;页面上的数据也会自动更新&#xff0c;页面跟随变化 我们看个例子&am…

《深入浅出多模态》(八)多模态经典模型:MiniGPT4

&#x1f389;AI学习星球推荐&#xff1a; GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料&#xff0c;配有全面而有深度的专栏内容&#xff0c;包括不限于 前沿论文解读、…

TypeScript学习笔记(二)——TypeScript 高级类型

目录 1. class 类 1.1 class 关键字的基本使用 1.2 类继承 1.3 类成员可见性 1.4 类成员只读修饰符 2. 类型兼容性 2.1 类型兼容性 2.2 接口兼容性 2.3 函数兼容性 3. 交叉类型 4. 泛型 4.1 创建泛型函数 4.2 泛型约束 4.3 多个泛型的类型变量约束 4.4 泛型接口…

搭建内网开发环境(二)|Nexus安装及使用

引言 上一篇教程中按照了 docker 作为容器化工具&#xff0c;在本篇教程中将使用 docker-compose 安装 nexus。 搭建内网开发环境&#xff08;一&#xff09;&#xff5c;基于docker快速部署开发环境 什么是 Nexus Nexus是一个强大的仓库管理器&#xff0c;主要用于搭建和管…

如何将列数据转换为行数据——SQL和EF Core(C#)两种实现方式

文章目录 前言一、使用UNPIVOT将列转换为行1. UNPIVOT的基本语法2. 实际应用场景3. 使用UNPIVOT将列转换为行4. UNPIVOT的注意事项 二、在EF Core中实现列转行1. 创建用于存储转换后数据的模型2. 使用 LINQ 进行数据转换3. 结果示例 总结 前言 在数据处理的过程中&#xff0c;…

墙裂推荐!云上机密计算,阿里云上体验了一下海光内存加密和远程认证

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 机密计算目录 前言1、构…

MySQL范围分区分区表

什么是范围分区分区表&#xff1f; 范围分区是一种根据某个列的范围值来分割表数据的分区方式。在范围分区中&#xff0c;每个分区都有自己的范围条件&#xff0c;当插入数据时&#xff0c;MySQL会根据指定的范围条件将数据分配到相应的分区中。这种分区方式可以使得表的数据按…

【ubuntu24.04】docker安装

安装docker sudo apt install apt-transport-https curlsudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin安装的组件包括:docker-ce:Docker Engine。 docker-ce-cli:用于与 Docker 守护进程通信的命令行工具。 containe…