本文参考公众号 QLU Security
原文链接:click me
一、漏洞依附
-
allow_url_fopen()打开文件->通常设置为On,使得可以访问 URL 对象文件等。
-
allow_url_include()引用文件->通常设置为off,包含URL 对象文件等
均可在配置文件,php.ini中查看(通常位置:/usr/local/php/lib)
二、常见协议
- data:
访问本地文件系统
实例:1.?file=data:text/plain, #GET数据
2.?file=data:text/plain;base64,PD9waHAgcGhwaW5mbygpPz4= #后面的base64字符是需要传入的字符串的base64编码
- phar:
可以查找指定压缩包内的文件,说通俗点就是php解压缩包的一个函数,解压的压缩包与后缀无关。
实例:filename=phar://test.[zip/jpg/png…]/file.txt
可以将任意后缀名的文件(必须要有后缀名),只要是zip格式压缩的,都可以进行解压,因此上面可以改为phar://test.test/file.txt也可以运行。
-
temp:
一个类似文件 包装器的数据流,允许读写临时数据.会在内存量达到预定义的限制后(默认是 2MB)存入临时文件中。 -
php://filter:
(1) 一般用于任意文件读取,有时也可以用于getshell.在双OFF的情况下也可以使用.
(2) 参数设置:read用于include()和file_get_contents(),write用于file_put_contents()中。

①实例用法:php://filter/[read/write]=string.[rot13/strip_tags/……]/resource=xxx
②php://filter/convert.base64-[encode/decode]/resource=xxx
这是使用的过滤器是convert.base64-encode.它的作用就是读取upload.php的内容进行base64编码后输出。可以用于读取程序源代码经过base64编码后的数据
- php://input:
可以访问请求的原始数据的只读流,将post请求的数据当作php代码执行。当传入的参数作为文件名打开时,可以将参数设为php://input,同时post想设置的文件内容,php执行时会将post内容当作文件内容。enctype=”multipart/form-data时,php://input是无效的。
实例:file=php://input hackbarPost数据

-
memory:
是一个类似文件 包装器的数据流,允许读写临时数据,总是把数据储存在内存中 -
file:f在双OFF的时候也可以用,用于本地文件包含注:file://协议必须是绝对路径
实例:file:// [文件的绝对路径和文件名]
Linux:http://127.0.0.1/FI/LFI.php?file=file:///etc/passwd
Windows:http://127.0.0.1/cmd.php?file=file://D:/soft/phpStudy/WWW/phpcode.txt
8.zip:
压缩流。
9.Expect:
处理交互式的流
总的来说就是:

三,常见漏洞函数
include、
require、
include_once、
require_once、
highlight_file 、
show_source 、
readfile 、
file_get_contents 、
fopen 、
file
四,常见绕过过滤方法

2005

被折叠的 条评论
为什么被折叠?



