武大WOJ账户的安全性

不知道为什么,我就想发篇文章

初遇

虽然是人不可貌相,但是这个也夸张了。
看着这么简陋至极(找回密码)的上古世纪网站,漏洞肯定很多吧
WOJ简陋界面
那来看看登录正确的返回格式,顺便破解个密码

细看

哈哈,对吧,果然简陋,jQuery都没有用,还是用原始的提交按钮
咦,传输的密码加密了?MD5破解之,不对,怎么这么久也不行,看看JS处理函数,居然还加盐处理了?还是动态加盐?
有点意思,动态盐值+MD5
通过请求POST方法,获取后台的动态盐值如HENPUM,后端盐的生成与处理未知,初步推断是随机到每个用户的每次请求(但是每次发送把盐给带上是什么鬼!!!
WOJ发送盐
核心构造: encPassword = MD5(MD5(pass) + seed);
这样两层加密之后,基本上就安全了,尤其是对弱密码来说安全性得到了极大的提高(当然是对于传输和存储,可以扛住彩虹表的攻击)

//表单处理函数,获取盐
function fillLoginForm()
{
    //纯天然$函数233
    //后端盐的生成与处理未知,初步
    $('seed').value = LoadURLSync("POST", "/learn/ajax/vcode", '');
    var password    = $('password');
    if (password.value == '')
    {
        alert("Please type in your password..");
        password.focus();
        return false;
    }
    var passEnc     = $('passEnc');
    var seed        = $('seed');
    //加密
    passEnc.value   = encodePass(password.value, seed.value);
    password.value  = '';
    return true;
}
//加密函数
function encodePass(pass, seed)
{
    return hex_md5(hex_md5(pass) + seed);
}
//纯天然$函数233
function $(id) 
{
    return document.getElementById(id);
}

再见

事实上,对于弱密码还是可以通过字典(暴力枚举),不断的尝试登陆,
在服务器没有做限制的情况下,还是可以拿到密码的
所以下一步是写个小脚本?

链接

http://acm.whu.edu.cn/learn/user/do_login

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章