【发布时间】:2017-04-11 17:16:06
【问题描述】:
我的客户忘记了登录网站后端的密码,该网站由其他拒绝提供帮助的开发人员开发。因此,我去 SQL 数据库查看是否可以直接从那里检索密码,但似乎密码已加密。见下文
3a0606b25e75eb6c1fed61886844832e
如果我知道密码是如何加密的会更容易,这样我就可以加密新密码并添加到 SQL 但是当我查看代码时(在密码更改 PHP gile 中)有一个叫做 salt_pass 的东西可以加密密码本网站的。见以下代码:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$db = new database();
$option_uw = array(
"table" => "users",
"fields" => "password",
"condition" => "id='{$_POST['id']}'"
);
$query_uw = $db->select($option_uw);
$rs_uw = $db->get($query_uw);
if ($rs_uw['password'] == trim(salt_pass($_POST['oldpassword']))) {
$value_pw = array(
"password" => trim(salt_pass($_POST['pass']))
);
$query_pw = $db->update("users", $value_pw, "id='{$_POST['id']}'");
if ($query_pw == TRUE) {
header("location:" . $baseUrl . "/back/user");
}
}else{
$_SESSION[_ss . 'msg_result'] = TRUE;
header("location:" . $baseUrl . "/back/user/changepassword");
}
mysql_close();
}
这里是salt_pass 函数
function salt_pass($pass) {
return md5("supapongherb.com" . $pass);
}
有人知道我如何根据此代码重新生成或加密新密码吗?
PS。该网站是用 MVC 编程开发的,我真的有能力。如果您想查看更多文件,请告诉我。
提前谢谢你!
【问题讨论】:
-
查看
insert语法,您应该能够弄清楚密码是如何生成的。它可能已被散列,您将无法对其进行去散列处理,因为散列不加密,它只是一种方式。 -
我刚刚发现了这个功能,不知道接下来要做什么。函数 salt_pass($pass) { return md5("supapongherb.com" . $pass); }
-
现在您可以生成新密码,因为您知道(过时的)散列算法和使用的盐。你甚至不需要做PHP。
update users set password = md5(concate("supapongherb.com", 'NEWPASSWORD')) where userid = ??。类似的东西 -
你不应该只给用户密码,除非你确定是他们。只需向他们发送重置链接即可。
-
您应该花时间将它们从 MD5 升级到实际上也安全的东西。