剛到家,正好把前幾天學到的東西總結一下。
大概是這樣的,校園一卡通是用戶名+6位密碼,能夠在網上查看賬戶信息。不由讓我聯想到APR攻擊和登錄暴力窮舉,畢竟校園卡里面都是錢嘛。
打開一卡通網站,登錄的地方只有用戶名和密碼。很常規的作法,F12調出工做臺,本身登錄一次,看看POST上去的數據。抓包結果顯示,用戶名和MD5加密的密碼。因而我試着手動構造用戶名和MD5加密的密碼提交上去,結果提示密碼錯誤。再次抓包,發現每次POST數據中加密的密碼都不同~好奇。。。
查看相關源碼,弄懂了大概的原理。POST以前,MD5加密密碼和一個隨機字符串。前端
password = md5(password+randStr);
這個randStr是每次加載頁面時隨機程序生成的,也就是說web程序首先生成一個randStr,而後把它保存在session裏面,同時輸出到前端。前端用隨機碼加密用戶密碼以後POST給服務器(str1),服務器再取出session中的隨機碼對數據庫中的用戶密碼進行加密(str2),再和POST上來的數據作比較(str1 == str2),就能夠肯定身份了。web
這樣作的好處在於,就算內網出現了ARP欺騙,也不會泄露出用戶密碼。數據庫