武大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

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