来源:自学PHP网 时间:2015-04-17 14:47 作者: 阅读:次
[导读] php 的include结构可以用于包含并运行指定文件,不过文件的路径在一些情况下会被截断,比如路径中包含ascii值为0的字符。先上一段演示代码:?php$s=$_GET[#39;s#39;];$path = demo/$s/;include($pat...
php 的include结构可以用于包含并运行指定文件,不过文件的路径在一些情况下会被截断,比如路径中包含ascii值为0的字符。先上一段演示代码:
<?php 这是很普通的一段代码,根据用户输入的$s值,包含demo目录下的$s目录下的style.css文件(O(∩_∩)O,示例代码,别管有什么实际用处)。 看到这段代码,首先就想到 $s可以随意伪造,不过无论我们怎么伪造,似乎都没有多大利用价值,因为 include(“demo/../upload/1.jpg/style.css")或者是 include("demo/../upload/1,jpg?/style.css")等等构造出来的,都不符合include的路径规定,都会抛出异常。 不过事实上,因为include的路径可以被截断,所以有了下面的利用方式: include("demo/../upload/1.jpg".chr(0)."/style.css") 在chr(0)处会发生截断,上面这句就等效于include("upload/1.jpg"),漏洞爆出来了^_^,接下来,就是怎么让$s成为我们希望的值(假设开始的那段演示代码保存在test.php里) http://www.2cto.com /test.php?s=../upload/1.jpg%00 后面的%00就是我们要的,这样路径就会被截断了 文章作者:荆棘鸟 本文地址:http://www.classover.com.cn/?p=3092 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com