好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

anwsion缺陷大结合 - 网站安全 - 自学php

foreach处理不当爆路径,程序设置缺陷,绕过全局变量的包含----变量覆盖

 

(1).foreach处理不当爆路径

 

http://wenda.anwsion测试数据/search/ajax/search_result/

 

 

 

 

缺陷:

<?php foreach ($this->search_result AS $key => $val)

 

 

代码没有检测$this->search_result是否为空,是否没数组....

 

\wenda\views\default\inbox\read_message.tpl.htm

 

<?php foreach($this->list AS $key => $val) {

 

 

缺陷一样.

 

 

 

2)程序设置缺陷.

 

当你直接点击桌面zip下载需需要注册.

 

在源码中看见:

file/download/file_name-5qGM6Z2iLnppcA==__url-aHR0cDovL3dlbmRhLmFud3Npb24uY29tL3VwbG9hZHMvcXVlc3Rpb25zLzIwMTIwNjA3L2JkMGFhY2FhNjg2YzEyNDlkOTY1YzZjZWM5ZDEwY2Y1LnppcA==

 

 

其中:

aHR0cDovL3dlbmRhLmFud3Npb24uY29tL3VwbG9hZHMvcXVlc3Rpb25zLzIwMTIwNjA3L2JkMGFhY2FhNjg2YzEyNDlkOTY1YzZjZWM5ZDEwY2Y1LnppcA==

我们base64解码下.

 

最终连接;

http://wenda.anwsion测试数据/uploads/questions/20120607/bd0aacaa686c1249d965c6cec9d10cf5.zip

 

 

= =不用登陆能下载了,如果对方指定为VIP用户或者得注册(要邀请码)才能下载的话呢??

 

 

3)绕过全局变量的包含----变量覆盖

 

wenda\system\init.php 中

 

if (@ini_get('register_globals'))

{

if ($_REQUEST)

{

foreach ($_REQUEST AS $name => $value)

{

unset($$name);

}

}

}

 

 

此段代码程序是当全局开启全局时销毁变量,防止恶意代码赋值导致严重的后果.

 

但是程序员没了解,unset()默认只会销毁局部变量.

 

我们测试下:

 

<?php

 

 

 

 

 

if (@ini_get('register_globals'))

{

if ($_REQUEST)

{

foreach ($_REQUEST AS $name => $value)

{

unset($$name);

}

}

}

 

print $a."<br>";

print $_GET[b];

 

?>

 

 

 

 

 

 

 

a变量被销毁,达到程序目的.

 

可是:....

 

 

 

 

 

 

GLOBALS[a]以覆盖全局变量时,则可以成功控制变量$a的值~~~~

 

还有思路突破: http://HdhCmsTest2cto测试数据/Article/201212/174596.html

 

为什么超全局变量$_REQUEST没有读取到$_COOKIE的参数呢?这个是php 5.3以后php.ini默认设置

request_order = "GP",所以你懂的!如果你修改request_order = "GPC",$_REQUEST应该就可以接受到参数了!

所以如果php是大于5.3的,变量覆盖 漏洞 应该可以再次利用!

 

 

修复方案:

检查是否数组,是否空. 逻辑严格点? 变量覆盖这个我想不出好点子,你写好了我再看看。。

查看更多关于anwsion缺陷大结合 - 网站安全 - 自学php的详细内容...

  阅读:53次