代码审计笔记①任意文件删除漏洞

任意文件删除漏洞

思路①:因为post传进来值之后还会和后面的$file['savename']进行拼接,所以需要把

尝试:通过seay审计系统查找出了漏洞,构造post请求抓包尝试,最终失败,原因是 post 请求的数据最终是不会被带入执行的,

下面是源代码:

                    //删除原图
                    //unlink('./Upload/'.session('gongsiid').'/'.$_POST['fybh'].'/'.$file['savename']   );
                    //echo $_POST['fybn'];
                    unlink('./Upload/'.session('gongsiid').'/'.'../../../../../../../../../../../../../../../../../2/3.txt');
                    rename($newpathbig,'./Upload/'.session('gongsiid').'/'.$_POST['fybh'].'/'.$file['savename']);
                    //返回给AJAX

 思路②:直接全局查找unlink和 @unlink 函数        必须查找到没有过滤的,并且在句尾拼接的才可以

比如说这种就可以
@unlink('$filename'.$_GET['a']);
下面这种它就不可以,因为你无论传什么值,你也没法把后面的 $filename 过滤掉,即使你传
?a = ../../../../../../../C/windows/windows.ini ); # 这种也不行,具体传进来为什么不能执行我也没弄懂,可能是传进来的是字符串,如果都能执行的话,仔细想想,可能就乱套了
@unlink($_GET['a'].'$filename');

 

posted @ 2020-11-12 11:39  链宁区块链安全服务  阅读(199)  评论(0)    收藏  举报