问题发生在   app\controller\user.class.php   146行

public function update() {

$_Obj = M ( 'user' );

if (($_POST ['info'] ['password'] !== $_POST ['password1'])) {

StringUtil::msgbox ( Config::lang ( "PWDNOTTHESAME" ), 'index.php?ac=users_info', 1 );

exit ();

}

$_Obj->create ();

if ($_POST ['info'] ['password'] != "" && ($_POST ['info'] [password] == $_POST ['password1'])) {

$_Obj->password = strlen ( $_POST ['info'] ['password'] ) > 15 ? $_POST ['info'] ['password'] : md5 ( $_POST ['info'] ['password'] );

}

if (empty ( $_POST ['info'] ['area'] )) {

$_Obj->area = "";

}

if (empty ( $_POST ['info'] ['city'] )) {

$_Obj->city = "";

}

//禁止修改管理员

$userObj = get ( "user", $_Obj->id );

if ($userObj->grade == 1) {

self::checkIsAdmin ();

}

//禁止修改别人的

$IsSelfData = Authen::checkIsSelfData ( $_Obj->id );

if (! $IsSelfData) {

$this->setValue ( "error", Config::lang ( "NOTRIGHT" ) );

$this->forward ( "error.html" );

exit ();

}

$_Obj->update ();

StringUtil::msgbox ( Config::lang ( "MODIFYSUCCESS" ), 'index.php?ac=user_info', 1 );

}

 

  这里调用了 $_Obj->create ();   学TP!   然后在看看   $_Obj->create (); 这个里面什么情况      

public function create($datas = '') {

        $data = array();

        $data = $datas;

        if (empty($data)) {

            $data = $_POST['info'];

        } elseif (is_object($data)) {

            $data = get_object_vars($data);

        } elseif (!is_array($data)) {

         $msg = Config::lang("ILLEGALDATA");

            exit($msg);

        }

        if (empty($_POST['info']) && empty($data)) { return false; }

        $fieldsType = $this->types; //字段和默认值

        $fieldsName = $this->fields; //字段和类型

        $formKeyAry = array_keys($data); //post过来的所有$key

        /* @var $key type */

        foreach ($formKeyAry as $key) {

            if (array_key_exists($key, $this->fields)) {

                $val = isset($data[$key]) ? $data[$key] : NULL;

                if (is_scalar($val)) {

                    if (false !== strpos($fieldsType[$key], 'int')) {

                        $val = intval($val);

                    } elseif (false !== strpos($fieldsType[$key], 'float') || false !== strpos($fieldsType[$key], 'double')) {

                        $val = floatval($val);

                    }

                }

                if (!is_null($val)) {

                    $this->$key = $val;

                }

                if (($data[$key] == "" || $data[$key] == NULL || $data[$key] === 0) && $fieldsName[$key] != "") {

                    $this->$key = $fieldsName[$key];

                }



            }

        }

        return $this;

    }

 

    $_POST['info'][xx] xx 直接是 数据库字段 可以成功修改!       在   http://www.teamcen.com/index.php?ac=user_info   页面通过修改表单名称 成功把注册的普通帐号修改为了管理员帐号

    上一篇: Flash XSS 漏洞详解 根治的好办法 - 网站安全 - 自学

    下一篇: 搜狐家居论坛有一个通杀所有子论坛的xss - 网站
本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《TCCMS某处设计缺陷,成功打入官网后台 – 网站安全
   

还没有人抢沙发呢~