| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> PHP知识库 -> PHP伪协议的妙用 -> 正文阅读 |
|
[PHP知识库]PHP伪协议的妙用 |
filter协议的简单利用
首先给出最简单的文件包含的示例代码:
在同目录下有一个flag.php文件:
想要读取flag.php文件,可以利用filter伪协议,传参如下:
这样即可读到flag.php文件base64加密过后的内容
然而,对于filter协议,不只有这一种写法:
除了使用convert.base64-encode过滤器,还可以使用其他的一些过滤器,比如字符编码类型的,payload如下:
得到结果:
将其解码,同样可以得到flag.php原内容
得到结果:
其他有关PHP支持的字符编码官方文档如下:PHP: 支持的字符编码 - Manual filter协议的进阶利用
假设我们有以下代码:
这几行代码允许我们写入文件,但是当我们写入文件的时候会在我们写的字符串前添加exit的命令。这样导致我们即使写入了一句话木马,依然是执行不了一句话的。 分析这几行代码,一共需要我们传两个参数,一个是POST请求的content,另一个是GET请求的filename,而对于GET请求中的filename变量,我们是可以通过php://filter伪协议来控制的,在前面有提到,最常见的方法是使用base64的方法将content解码后传入。 base64编码绕过:假设我们先随便传入一句话木马:
这个时候我们打开1.php文件: 可以发现里面是一堆乱码,原因是不仅我们的加密后的一句话木马进行了base64解码,而且前面的死亡之exit也进行了解码。 我们仔细分析一下死亡之exit的代码:
base64编码中只包含64个可打印字符,而当PHP在解码base64时,遇到不在其中的字符时,会选择跳过这些字符,将有效的字符重新组成字符串进行解码。 例如:
得到结果:Lxxx 如果我们在str变量中添加一些不可见的字符或者是不可解码字符(\x00,?)
得到的结果仍然为:Lxxx 因此,对于死亡之exit中的代码,字符<、?、;、>、空格等字符不符合base64解码范围。最终解码符合要求的只有phpexit这7个字符,而base64在解码的时候,是4个字节一组,因此还少一个,所以我们将这一个手动添加上去。 传payload如下:
content中第一个字符a就是我们添加的 这个时候我们查看1.php的内容如下: 可以看到一句话木马已经成功写入了。 rot13编码绕过:除了使用base64编码绕过,我们还可以使用rot13编码绕过。相比base64编码,rot13的绕过死亡之exit更加方便,因为不用考虑前面添加的内容是否可以用base64解码,也不需要计算可base64解码的字符数量。 同样的还是上面的示例代码:
传payload:
打开1.php文件: 可以看到,一句话木马也成功写入了。 虽然rot13更加的方便,但是还是有缺点,就是当服务器开启了短标签解析,一句话木马即使写入了,也不会被PHP解析。 多种过滤器绕过:再仔细观察死亡之exit的代码:
可以看到死亡之exit的代码其实本质上是XML标签,因此我们可以使用strip_tags函数除去该XML标签 并且,filter协议允许我们使用多种过滤器,所以我们还是针对上面的实例代码:
传payload如下:
查看1.php 这时候可以看到一句话木马干干净净地在1.php文件中,不掺杂任何杂质???? 参考资料 https://www.leavesongs.com/PENETRATION/php-filter-magic.html https://xz.aliyun.com/t/8163 实操推荐
戳“阅读原文”体验免费靶场! |
|
PHP知识库 最新文章 |
Laravel 下实现 Google 2fa 验证 |
UUCTF WP |
DASCTF10月 web |
XAMPP任意命令执行提升权限漏洞(CVE-2020- |
[GYCTF2020]Easyphp |
iwebsec靶场 代码执行关卡通关笔记 |
多个线程同步执行,多个线程依次执行,多个 |
php 没事记录下常用方法 (TP5.1) |
php之jwt |
2021-09-18 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 6:39:39- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |