php5构造无字母数字的webshell实现任意命令执行

目录

引言

如果是在php7

如果是在php5

现在我们来上传文件

最后的结果:


看本篇前可以先看这一篇:利用异或、取反、自增bypass_webshell_waf-CSDN博客

引言

上一篇介绍了如何构造出一个无字母数字的webshell,但是如果后端的代码变成了这样:

<?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__);
}

这里过滤了大小写字母、数字、_、$,因此我们上一篇介绍的利用$和_的方式都无法实现了,那么应该怎么构造webshell呢?

如果是在php7

php7中这个问题并不是很难解决,PHP7前是不允许用($a)();这样的方法来执行动态函数的,但PHP7中增加了对此的支持。

所以,我们可以通过('phpinfo')();来执行函数,第一个括号中可以是任意PHP表达式。

所以很简单了,构造一个可以生成phpinfo这个字符串的PHP表达式即可。

因为有大小写字母的限制,我们首先需要将phpinfo这个字符串转换为URL编码:

<?php
$a = "phpinfo";
echo urlencode(~$a);

 

那么就可以构造一个如此的payload了:

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

如果是在php5

此时,如果我们尝试用PHP7的payload,将会得到一个错误:

原因就是php5并不支持这种表达方式。

那么这个问题现在呢应该怎么解决呢?

操作系统里包含的最重要的两个功能就是“shell(系统命令)”“文件系统”,很多木马与远控其实也只实现了这两个功能。

PHP自然也能够和操作系统进行交互,“反引号”就是PHP中最简单的执行shell的方法。

那么,在使用PHP无法解决问题的情况下,为何不考虑用“反引号”+“shell”的方式来getshell呢?

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

好像问题又回到了原点:无字母、数字、$,在shell中仍然是一个难题。

此时还有两个有趣的Linux shell知识点需要理解:

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

它的作用和source一样,就是用当前的shell执行一个文件中的命令。

比如:当前运行的shell是bash,则. file的意思就是用bash执行file文件中的命令。

可以尝试编辑这样一个文件:

vim id.txt 

echo id

然后使用.来执行一下

. id.txt 
id

 可以看到确实是执行了

. file执行文件,是不需要file有x权限的。

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

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

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

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

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

  • ?可以代表1个任意字符

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

但我们尝试执行. /???/?????????,却得到如下错误:

这是因为,能够匹配上/???/?????????这个通配符的文件有很多,我们可以列出来:

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

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

我们再来看看之前列出可能干扰我们的文件,发现所有文件名都是小写,只有PHP生成的临时文件包含大写字母。

那么答案就呼之欲出了,我们只要找到一个可以表示“大写字母”的glob通配符,就能精准找到我们要执行的文件。

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

那么,我们可以利用[@-[]来表示大写字母:

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

现在我们来上传文件

web.html

<!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="web1.php" method="post" enctype="multipart/form-data"><input type="file" name="upload_file" id=""><input type="submit" value="submit"></form>
</body></html>

 

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__);
}

web1.php

这是是用来显示文件的上传信息的

<?php var_dump($_FILES);

注意,php生成临时文件名是随机的,最后一个字符不一定是大写字母,不过多尝试几次也就行了。

首先我们编写一个文件来用作测试:

现在我们可以尝试在上传文件后进行抓包:

web1.php包:

web.php包:

然后我们将web1.php包中post的值移动到web.php文件中,构造出一个上传文件

还有将Content-Type: multipart/form-data;增加到web.php包中

现在我们就可以在这里使用POST构造出临时文件,使用GET匹配临时文件

GE传入的T参数:

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

最后的结果:

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

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

相关文章

采购业务中的主数据

目录 一、维护BP主数据业务伙伴BP的概念业务伙伴涉及的表业务伙伴维护操作一次性客商数据 二、维护物料主数据三、维护采购信息记录四、与FI相关集成点物料主数据的价格控制评估类与科目确定 一、维护BP主数据 业务伙伴BP的概念 在S/4HANA中&#xff0c;SAP引入了BP(Business…

使用 Java 来完成高德地图开发平台解决定位和解析问题

三军可夺帅也&#xff0c;匹夫不可夺志也 1、高德开发平台&#xff1a;平台地址 2、注册高德开发平台账号 3、导入SDK J版 import java.net.URL; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.alibaba.fastjson.JSONObject;public class main {priva…

SpringBoot整合Activiti7——消息事件(十)

文章目录 消息事件开始事件中间事件边界事件代码实现xml文件测试流程流程执行步骤 消息事件 消息事件只有一个接收者&#xff0c;消息具有名字与载荷。 信息会储存在 act_ru_event_subscr 表中。 <!-- 定义消息 --> <message id"msgId1" name"msgName…

聊聊什么是IO流

目录 Java IOIO 基础Java IO 流了解吗&#xff1f; IO 设计模式1、装饰器模式2、适配器模式适配器模式和装饰器模式有什么区别呢&#xff1f;3、工厂模式4、观察者模式 IO 模型有哪些常见的 IO 模型&#xff1f;BIO(Blocking I/O)NIO (Non-blocking/New I/O)AIO (Asynchronous …

51单片机的智能加湿器控制系统【含proteus仿真+程序+报告+原理图】

1、主要功能 该系统由AT89C51单片机LCD1602显示模块DHT11湿度传感器模块继电器等模块构成。主要适用于智能自动加湿器、湿度保持、湿度控制等相似项目。 可实现基本功能: 1、LCD1602液晶屏实时显示湿度信息 2、DHT11采集湿度 3、按键可以调节适宜人体湿度的阈值范围&#xff0…

西南科技大学模拟电子技术实验三(BJT单管共射放大电路测试)预习报告

一、计算/设计过程 说明:本实验是验证性实验,计算预测验证结果。是设计性实验一定要从系统指标计算出元件参数过程,越详细越好。用公式输入法完成相关公式内容,不得贴手写图片。(注意:从抽象公式直接得出结果,不得分,页数可根据内容调整) 二、画出并填写实验指导书上…

京东数据运营-京东数据开放平台-鲸参谋10月粮油调味市场品牌店铺销售数据分析

鲸参谋监测的京东平台10月份料油调味市场销售数据已出炉&#xff01; 根据鲸参谋数据显示&#xff0c;今年10月份&#xff0c;京东平台粮油调味市场的销量将近4600万&#xff0c;环比增长约10%&#xff0c;同比降低约20%&#xff1b;销售额将近19亿&#xff0c;环比增长约4%&am…

Apache Flink(一):Apache Flink是什么?

&#x1f3e1; 个人主页&#xff1a;IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 &#x1f6a9; 私聊博主&#xff1a;加入大数据技术讨论群聊&#xff0c;获取更多大数据资料。 &#x1f514; 博主个人B栈地址&#xff1a;豹哥教你大数据的个人空间-豹…

五、ZooKeeper的shell操作

目录 1、客户端连接 2、shell基本操作 2.1 操作命令

力扣225-用队列实现栈

文章目录 力扣225-用队列实现栈示例代码实现总结收获 力扣225-用队列实现栈 示例 代码实现 class MyStack {Queue<Integer>queue1;Queue<Integer>queue2;public MyStack() {queue1new LinkedList<Integer>();queue2new LinkedList<Integer>();}public…

【LeetCode:1094. 拼车 | 差分数组】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

【高效开发工具系列】Hutool Http工具类

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

PDF转WORD

无环境的&#xff0c;windows可下载可执行文件&#xff1a;https://download.csdn.net/download/shfei10100/88588106 有python运行环境的&#xff0c;可自行运行&#xff1b; 代码如下&#xff1a; from pdf2docx import Converterimport tkinter as tk from tkinter impor…

Windows11系统下内存占用率过高如何下降

. # &#x1f4d1;前言 本文主要是win11系统下CPU占用率过高如何下降的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &#x1f304;每日…

每日一题:NowCower-JZ64.求1+2+3+...+n

每日一题系列&#xff08;day 10&#xff09; 前言&#xff1a; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f50e…

Git and solve the problem denied to xx

创建仓库 配置Git git config user.name git config user.email git config MINGW64 /e/GithubCode $ git config --global user.name "name"MINGW64 /e/GithubCode $ git config --global user.email "mailxx.com" 生产ssh ssh-keygen -t rsa -C “xx…

选择排序以及改进方案

选择排序以及改进方案 介绍&#xff1a; 选择排序是一种简单直观的排序算法&#xff0c;它的基本思想是在未排序序列中选择最小&#xff08;或最大&#xff09;的元素&#xff0c;然后将其放在已排序序列的末尾。选择排序的过程就像是每次从待排序的元素中选择最小的一个&…

Linux:锁定部分重要文件,防止误操作

一、情景描述 比如root用户或者拥有root权限的用户&#xff0c;登陆系统后&#xff0c;通过useradd指令&#xff0c;新增一个用户。 而我们业务限制&#xff0c;只能某一个人才有权限新增用户。 那么&#xff0c;这个时候&#xff0c;我们就用chattr来锁定/etc/passwd文件&…

六、ZooKeeper Java API操作

目录 1、引入maven坐标 2、节点的操作 这里操作Zookeeper的JavaAPI使用的是一套zookeeper客户端框架 Curator ,解决了很多Zookeeper客户端非常底层的细节开发工作 。 Curator包含了几个包:

使用K-means把人群分类

1.前言 K-mean 是无监督的聚类算法 算法分类&#xff1a; 2.实现步骤 1.数据加工&#xff1a;把数据转为全数字&#xff08;比如性别男女&#xff0c;转换为0 和 1&#xff09; 2.模型训练 fit 3.预测 3.代码 原数据类似这样(source&#xff1a;http:img-blog.csdnimg.cn…