网站的页脚什么做,烟台官网首页,网页制作基本步骤,网络品牌推广策划文章目录 一、文件包含概述二、low2.1 源码分析2.2 通关分析 三、medium3.1 源码分析3.2 通关思路 四、high4.1 源码分析4.2 通关思路 五、impossible 一、文件包含概述 文件包含是指当服务器开启allow_url_include选项时#xff0c;就可以通过php的某些特性函数#xff08;i… 文章目录 一、文件包含概述二、low2.1 源码分析2.2 通关分析 三、medium3.1 源码分析3.2 通关思路 四、high4.1 源码分析4.2 通关思路 五、impossible 一、文件包含概述 文件包含是指当服务器开启allow_url_include选项时就可以通过php的某些特性函数include()require()和include_once()require_once()利用url去动态包含文件此时如果没有对文件来源进行严格审查就会导致任意文件读取或者任意命令执行。文件包含漏洞分为本地文件包含漏洞与远程文件包含漏洞远程文件包含漏洞是因为开启了php配置中的allow_url_fopen选项选项开启之后服务器允许包含一个远程的文件。 与文件包含有关的函数
include()只有代码执行到该函数时才会包含文件进来发生错误时只给出一个警告并继续向下执行。include_once()和 include()功能相同区别在于当重复调用同一文件时程序只调用一次。require()只要程序执行就包含文件进来发生错误时会输出错误结果并终止运行。require_once()和 require()功能相同区别在于当重复调用同一文件时程序只调用一次。 相关的 php.ini 配置参数
allow_url_fopen on 默认开启allow_url_include on 默认关闭
二、low
2.1 源码分析
?php// The page we wish to display
$file $_GET[ page ];? 分析用 GET 方法接收文件路径然后将其包含进来。服务器包含文件时无论文件是否是 PHP 文件都会尝试当做 PHP 文件来执行。如果文件内容确实是 PHP 文件则会正常执行并返回结果如果不是则会将文件内容回显到网页中所以文件包含漏洞常常会导致任意文件读取与任意命令执行。
2.2 通关分析
1查看页面服务器期望用户的操作是点击下面的三个链接服务器会包含相应的文件并将结果返回。 知识点服务器包含文件时不管文件后缀是否是php都会尝试当做php文件执行。 2尝试点下面三个链接看看出现什么情况。可见确实是点击三个文件页面会显示不同的内容同时注意到使用GET传参。 3既然page参数可以被控制直接用相对路径访问上两级文件夹下的 fi.php 文件构造出 payloadhttp://192.168.92.1:32769/vulnerabilities/fi/?page../../hackable/flags/fi.php 三、medium
3.1 源码分析
?php// The page we wish to display
$file $_GET[ page ];// Input validation
$file str_replace( array( http://, https:// ), , $file );
$file str_replace( array( ../, ..\ ), , $file );? 分析代码增加了 str_replace 函数对 page 参数进行了过滤。将 http://、https://替换为空阻止远程包含漏洞将../、..\ 替换为空阻止用相对路径访问文件。 知识点使用str_replace函数是极其不安全的因为可以使用双写绕过替换规则。例如pagehtthttp://p://时str_replace函数会将http://删除于是pagehttp://成功执行远程命令。 3.2 通关思路 直接双写绕过payloadhttp://192.168.92.1:32769/vulnerabilities/fi/?page..././..././hackable/flags/fi.php
四、high
4.1 源码分析
?php// The page we wish to display
$file $_GET[ page ];// Input validation
if( !fnmatch( file*, $file ) $file ! include.php ) {// This isnt the page we want!echo ERROR: File not found!;exit;
}? 分析使用 fnmatch 根据指定的模式来匹配文件名或字符串。该函数将检查 page 参数开头必须是否是 file若是服务器才会去包含相应的文件。 知识点只能包含file开头的文件看似安全我们依然可以利用file协议绕过防护策略。 4.2 通关思路 使用file协议绕过貌似file协议只支持绝对路径。
五、impossible
?php// The page we wish to display
$file $_GET[ page ];// Only allow include.php or file{1..3}.php
if( $file ! include.php $file ! file1.php $file ! file2.php $file ! file3.php ) {// This isnt the page we want!echo ERROR: File not found!;exit;
}? 分析Impossible级别的代码使用了白名单机制进行防护page参数必须为“include.php”、“file1.php”、“file2.php”、“file3.php”之一彻底杜绝了文件包含漏洞。