代码审计本地包含和远程包含
在PHP中,有四个包含文件的函数,当使用这些函数包含文件时,文件包含的PHP
代码就会被执行
include()/include_once()
require()/require_once()
i.多了一个_once区别就是当重复调用同一文件时,程序只调用一次
ii.include()当使用include包含文件时,只有代码执行到include()函数时才
将文件包含进来
iii.require(),如果出现错误,立刻终止函数,程序一执行,立刻调用文件
普通文件包含
一.本地包含
受到GPC影响
有以下代码
<?php if(isset($_GET['file'])) { $file=$_GET['file']; echo $file; include $file.".php"; } ?>
在GPC没有开启的情况下,可以使用%00截断
访问以下url
http://localhost/1.php?file=1.txt%00(可以截断ur中的.php)
二.远程包含
在Allow_url_fopen和allow_url_include都为on的情况下
我们处理可以利用刚才的%00截断,还可以增加?使得后面变为参数
伪协议包含
一.php://input

二.用于本地的伪协议包含
Php://filter/read=convert.base64-encode/resource=index.php 可以查看任意代码。


浙公网安备 33010602011771号