代码审计本地包含和远程包含

在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  可以查看任意代码。

 

posted @ 2016-04-05 14:56  平何去何  阅读(484)  评论(0)    收藏  举报