dz6.0的一个sql注入漏洞

今天开始着手分析第一个漏洞,找了一上午靶机,发现一个含有成人内容的违法网站是用dz6.0搭的,今天就看看dz这个版本的洞了

问题函数位置:my.php第623行

if(is_array($descriptionnew)) {//动态初始化$descriptionnew
            foreach($descriptionnew as $buddyid => $desc) {//buddyid=key
                if(($desc = cutstr(dhtmlspecialchars($desc), 255)) != addslashes($buddyarray[$buddyid]['description'])) {
                    $db->query("UPDATE {$tablepre}buddys SET description='$desc' WHERE uid='$discuz_uid' AND buddyid='$buddyid'");//buddyid被带入sql语句,跟踪变量处理过程,发现此变量没有被安全函数过滤。
                }
            }
        }

问题原因:动态生成的数组的key没过滤就传入sql语句中,攻击者可以构造特殊请求为$buddyid赋值,从而构造注入攻击。

 复现过程:(后续补上)

原文地址:https://www.cnblogs.com/Entr0py/p/7139172.html