0%

php://filter 协议

php://filter 协议

asd

1是格式
2是可选参数,有read和write,字面意思就是读和写(如果不写可选参数2(read或write),那么网页会自动匹配一个合适的read或write)
3是过滤器。主要有四种:字符串过滤器,转换过滤器,压缩过滤器,加密过滤器。filter里可以用一或多个过滤器(中间用|隔开),这也为解题提供了多种方法,灵活运用过滤器是解题的关键。这里的过滤器是把文件flag.php里的代码转换(convert)为base64编码(encode)
4是必选参数,后面写你要处理的文件名
常用过滤器

转base64编码:convert.base64-encode

转大写:string.toupper

php://filter还可以绕过,大概就是把不希望执行的语句先编码,这个编码类型可以破坏语句的正常执行
(比如base64编码只有64个字符,如果被编码的语句字符在64个字符里找不到对应的,就会忽略,略过它继续编码),然后再解码,这样就可以绕过这个语句了。

例题:

ACTF2020 新生赛Include

打开题目后审视代码,发现啥也没有

image-20211205170041509

但看到php文件,可以联想文件包含漏洞,然后我们可以用php://filter协议来查看源文件内容。

构造:php://filter/read=convert.base64-encode/resource=flag.php

image-20211205170421228

这句话的意思是我们用base64编码的方式来读文件flag.php;这时页面会显示出源文件flag.php经过base64编码后的内容

image-20211205170455351

然后经过base64解码就可以看到flag
image-20211205170507361