PHP include*的小BUG

本来还以为挖到金矿了,跟黑哥交流后发现只能应用于Win32平台,使这个BUG的威力暴减,基本没有太大危害了,因为在WIN32平台使用PHP的实在太少了。

include $_GET[file].”.php”;

以前我们使用%00来截断,现在的PHP版本基本上已经失效了。挖掘思路是黑哥之前提到的结合多个环境下的条件,触发漏洞。操作系统对文件名有长度的限制,如果我们的$_GET[file]超过这个长度限制,那么PHP代码中最后面的.”.php”就会失效,这里的截断与%00的截断原理上应该不一样。

利用方法:index.php?file=some.txt/////////////////////….[超过一定数量的/]

LINUX平台下目前尚不知如何利用,呜呼

  • Ryat

    01月 20th, 2008

    部分Linux主机下也可以,只是/的数量要更多些(要使文件路径名长度大于4096字节),看看下面的代码片断:
    复制内容到剪贴板代码:

    在Linux环境下测试,你会发现’.php’被截断了,成功的包含了test.txt:)

  • axis

    02月 6th, 2007

    win下的MaxPath是260字节

    linux下好象也有限制,似乎是512??

  • 傲少

    02月 5th, 2007

    要构造数据包了,纯手工的去测试,那会累死的。
    试用了resin下的读一些代码的漏洞。蛮好玩的。可惜读到class,有乱码,需要反编译。试了几个工具都不能正确反编译。有些郁闷。

  • cloie

    02月 5th, 2007

    PS,resin下的jsp的include只需要一个/即可

  • [...] 其实以前就有人提到过用一定数量的/突破操作系统对文件名的长度限制来截断后面的字符串,详见:http://cloie.it580.com/?p=51 [...]

  • [...] 其实以前就有人提到过用一定数量的/突破操作系统对文件名的长度限制来截断后面的字符串,详见:http://cloie.it580.com/?p=51 [...]

Leave a Comment

You must be logged in to post a comment.