参考博客:
文件包含 [SWPUCTF 2021 新生赛]include-CSDN博客
NSSCTF | [SWPUCTF 2021 新生赛]include-CSDN博客
考点:php伪协议和文件包含
PHP伪协议详解-CSDN博客
php://filter
php://filter可以获取指定文件源码。当它与包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,让其不执行。从而导致 任意文件读取。
过滤器
字符串过滤器
该类通常以string开头,对每个字符都进行同样方式的处理。
string.rot13
一种字符处理方式,字符右移十三位。
string.toupper
将所有字符转换为大写。
string.tolower
将所有字符转换为小写。
string.strip_tags
这个过滤器就比较有意思,用来处理掉读入的所有标签,例如XML的等等。在绕过死亡exit大有用处。
我们直接去访问flag.php
你会发现是空白的,我们访问不到
那么我们通过文件包含,把整个php文件给dump下来,就可以看见源码了~
在源代码中,我们看见了allow_url_include函数,我们知道这涉及到文件包含。
一般默认allow_url_fopen是on的,那在这里告诉了我们allow_url_include也是on的,那我们就可以对url的文件当作代码执行。
那我们用php伪协议读取一下flag
php伪协议
http://node7.anna.nssctf.cn:29631//?file=php://filter/read=convert.base64-encode/resource=flag.php