说明: include()函数对文件后缀名无要求,而对其中的语法有要求,即使后缀名为txt,jpg也会被当做php文件解析,只要文件内是形式就可以执行,但是如果不是php语法的形式,即使后缀为php,也无法执行。
用于访问本地文件系统的文件 条件:allow_url_fopen: off/on allow_url_include: off/on
? (参数如图)
(过滤器如图)
使用方法举例:
php://filter协议头 read=读取形式 这里的string.toupper 是将读出来的字符串大写形式呈现(可以多种形式重叠 中间以“|”链接) resource 接对象
(注:关于为什么我们读数据的时候很多时候用base64编码后再去转码,假如想string.toupper这样的读取方式,结果输出的其实是运行后的代码,而不是php源码,所以我们要加密后再解密去看源码)
php://input可以利用post方式传入命令执行,具体做法是将要执行的php代码直接卸载post中提交
这个参数是就是php解压缩包的一个函数 ,不论文件后缀是什么,都会被当成压缩包来解压
这就可以让我们写shell后压缩成zip,然后将后缀改成jpg等格式 它一样会被当做压缩包
类似的还有zip://,只不过zip://要用#分隔压缩包和压缩包里的内容,并且#要用url编码%23
Data伪协议
data和input伪协议差不多都是可以传入用户想要执行的php代码
具体做法:
http://127.0.0.1/dvwa/vulnerabilities/fi/?page=data://text/plain,<?php phpinfo(); ?>
http://127.0.0.1/dvwa/vulnerabilities/fi/?page=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOyA/Pg==
http://127.0.0.1/dvwa/vulnerabilities/fi/?page=data:text/plain,<?php phpinfo(); ?>
http://127.0.0.1/dvwa/vulnerabilities/fi/?page=data:text/plain;base64,PD9waHAgcGhwaW5mbygpOyA/Pg==
{{uploading-image-591425.png(uploading...)}}
原文:https://www.cnblogs.com/cjz12138/p/13672527.html