文件包含与伪协议
文件包含与伪协议
说明: include()函数对文件后缀名无要求,而对其中的语法有要求,即使后缀名为txt,jpg也会被当做php文件解析,只要文件内是形式就可以执行,但是如果不是php语法的形式,即使后缀为php,也无法执行。
file伪协议
用于访问本地文件系统的文件 条件:allow_url_fopen: off/on allow_url_include: off/on

php伪协议(常用的php://filter 和 php://input)
php://filter:

(参数如图)

(过滤器如图)
使用方法举例:
- php://filter/read=string.toupper/resource=http://www.example.com
php://filter协议头 read=读取形式 这里的string.toupper 是将读出来的字符串大写形式呈现(可以多种形式重叠 中间以“|”链接) resource 接对象
- php://filter/write=string.rot13/resource=example.txt”,”Hello World”
(注:关于为什么我们读数据的时候很多时候用base64编码后再去转码,假如想string.toupper这样的读取方式,结果输出的其实是运行后的代码,而不是php源码,所以我们要加密后再解密去看源码)
php://input:
php://input可以利用post方式传入命令执行,具体做法是将要执行的php代码直接卸载post中提交

Phar伪协议(和其类似的压缩包伪协议)
这个参数是就是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...)}}

浙公网安备 33010602011771号