好得很程序员自学网

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

php变量覆盖经验解说续写(两则) - 网站安全 - 自

上一篇:http://HdhCmsTest2cto测试数据/Article/201212/174596.html 一 :Dedecms 变量覆盖新型绕过 :   请看看文件: include/filter.inc.php   引用一哥话语 :   这是2B的dede再次 变量覆盖漏洞根源 。。  这是过滤或替换非法关键字。正常的。  /* 对 _GET,_POST,_COOKIE 进行过滤 */   foreach(Array('_GET','_POST','_COOKIE') as $_request)   {       foreach($$_request as $_k => $_v)       {           ${$_k} = _FilterAll($_k,$_v);       }   }   等同于重新赋值了,之前做的过滤无效了。 这是过滤或替换非法关键字。正常的。  漏洞关键是主要是下面的代码 :   function _FilterAll($fk, &$svar)  // 这是过滤或替换非法关键字。   {       global $cfg_notallowstr,$cfg_replacestr;       if( is_array($svar) )       {           foreach($svar as $_k => $_v)           {               $svar[$_k] = _FilterAll($fk,$_v);           }       }       else       {           if($cfg_notallowstr!='' && preg_match("#".$cfg_notallowstr."#i", $svar))           {               ShowMsg(" $fk has not allow words!",'-1');               exit();           }           if($cfg_replacestr!='')           {               $svar = preg_replace('/'.$cfg_replacestr.'/i', "***", $svar);           }       }       return $svar;   }   /* 对 _GET,_POST,_COOKIE 进行过滤 */   foreach(Array('_GET','_POST','_COOKIE') as $_request)   {       foreach($$_request as $_k => $_v)       {           ${$_k} = _FilterAll($_k,$_v); // 这里只有过滤或替换非法关键字 , 当 GPC 为 off 的时候可以用注入了 .     }   } 所以在 GPC=OFF 的时候,被转义的变量又会被重新覆盖而变成正常代码。  Eg: typeid=2\' 经过 覆盖 typeid=2' 看他的过滤会把脏话替换成***, 如果我们传如的参数里面有这样的一个字符 /他妈/ 他就会成为/***/,我相信大家已经想到了什么。  我联想到了 XSS  .  <script>/**/alert(1)/**/</script> csse: gainover :http://HdhCmsTest2cto测试数据/Article/201212/174759.html 更多连接 :   https://forum.90sec.org/thread-4228-1-1.html  没 ID 搜索 :[ 【原创】 ] ( 首发 )dedecms 5.7 最新漏洞 ( 绝非网上公布的 )   https://forum.90sec.org/thread-4249-1-1.html  没 ID 搜索 :[ 【原创】 ] 对最近 dedecms 注入的分析   http://HdhCmsTest2cto测试数据/Article/201211/169202.html  二 .boblog 任意变量覆盖漏洞 -----php 内置函数的问题   80vul :http://HdhCmsTest2cto测试数据/Article/201102/84406.html 1. 简单说说流程 : $_SERVER["REQUEST_URI"]; 控制了 $q_url-> 绕过正则 $RewriteRules[] 不够细致 -> 经过一些过程 ->parse_url 出 url-> 最后   parse_str($parsedURL['query']); (parse_str 函数变量覆盖 !)   然后有两个出路 :1. 虽然用了 basename() 来限制 , 但是可以利用 data:// 来执行命令 . 只是这种方式的利用是有限制的   [PHP>5.2.0&allow_url_include=On].   2. 可以变量覆盖绕过系统 global.php 文件中防御变量覆盖的函数 unregister_GLOBALS() 。 程序写得不错^-^ 赞一个! 可惜 我们可以利用 unset() 就让他消失了.从而引发各种漏洞。。。  一些链接 :   php data://   高级 PHP 应用程序 漏洞 审核技术  (百度搜索下) -> 此文章中概括了大量 php 内置函数能引发变量覆盖的问题 !   吐槽WB

查看更多关于php变量覆盖经验解说续写(两则) - 网站安全 - 自的详细内容...

  阅读:44次