文件包含漏洞是"代码注入"的一种,包含即执行。- PHP包含漏洞结合上传漏洞;
 - PHP包含读文件;
 - PHP包含写文件;
 - PHP包含日志文件;
 - PHP截断包含;
 - PHP内置伪协议利用。
 
 
  
PHP中文件包含函数有以下四种: - require()
 - require_once()
 - include()
 - include_once()
 
 
 include和require区别主要是,include在包含的过程中如果出现错误,会抛出一个警告,程序继续正常运行;而require函数出现错误的时候,会直接报错并退出程序的执行。 而include_once(),require_once()这两个函数,与前两个的不同之处在于这两个函数只包含一次,适用于在脚本执行期间同一个文件有可能被包括超过一次的情况下,你想确保它只被包括一次以避免函数重定义,变量重新赋值等问题。 最简单的漏洞代码:<?php include($_GET[file]);?> 当使用这4个函数包含一个新的文件时,该文件将作为PHP代码执行,PHP的内核并不会在意被包含的文件是什么类型。即你可以上传一个含shell的txt或jpg文件,包含它会被当作PHP代码执行(图马)。 下面是一个简单的php包含漏洞 index.php [mw_shl_code=php,true]<?php 
        include "flag.php"; 
        $a = @$_REQUEST['hello']; 
        eval( "var_dump($a);"); 
        show_source(__FILE__); 
?>[/mw_shl_code] flag.php [mw_shl_code=php,true]<?php 
        $flag = 'Too Young Too Simple'; 
        # echo $flag; 
        # flag{xxxxxxxxxxxxxxx}; 
?>[/mw_shl_code] payload:?hello=show_source("flag.php")                  ?hello=show_source(flag.'.'.php)  
 show_source可以高亮代码  
 
 |