大哥大 发表于 2023-1-31 20:03:29

Discuz 手动 修改管理员密码

Discuz 用户的密码,加密密码存储在pre_ucenter_members, 验证密码公式:uc 用户表中的password == md5(md5(用户明文密码). uc用户表中密钥salt)所以更新用户密码可以这样
$uid = 1;
$password = 'xxxxxx;
$salt = $mysql->resultOne("SELECT salt FROM {$tablepre}ucenter_members WHERE uid=$uid");
$password = md5(md5($password). $salt);
$result = $mysql->query("UPDATE {$tablepre}ucenter_members SET password='$password' where uid='$uid'");
var_dump($result);Uc_server 创始人加密密码和密钥是存储在配置文件uc_server/data/config.inc.php中的。define('UC_FOUNDERPW', '245386430f4ab01e8478cbf7b9xxxxxc');
define('UC_FOUNDERSALT', 'ssx773');

看看这句就很明了了UC_FOUNDERPW == md5(md5($oldpw).UC_FOUNDERSALT)uc_server/control/admin/admin.php   function onls 更多
if(UC_FOUNDERPW == (($oldpw).UC_FOUNDERSALT)) {
                $configfile = UC_ROOT.'./data/config.inc.php';
                if(!($configfile)) {
                  $status = -4;
                } else {
                  if($newpw != $newpw2) {
                        $status = -6;
                  } else {
                        $config = ($configfile);
                        $salt = ((()), 0, 6);
                        $md5newpw = (($newpw).$salt);
                        $config = ("/define('UC_FOUNDERSALT',s*'.*?');/i", "define('UC_FOUNDERSALT', '$salt');", $config);
                        $config = ("/define('UC_FOUNDERPW',s*'.*?');/i", "define('UC_FOUNDERPW', '$md5newpw');", $config);
                        $fp = @($configfile, 'w');
                        @($fp, $config);
                        @($fp);
                        $status = 2;
                        $this->writelog('admin_pw_edit');
                  }
                }
            }
页: [1]
查看完整版本: Discuz 手动 修改管理员密码