刚到家,正好把前几天学到的东西总结一下。
大概是这样的,校园一卡通是用户名+6位密码,可以在网上查看帐户信息。不禁让我联想到APR攻击和登陆暴力穷举,毕竟校园卡里面都是钱嘛。
打开一卡通网站,登陆的地方只有用户名和密码。很常规的做法,F12调出工作台,自己登陆一次,看看POST上去的数据。抓包结果显示,用户名和MD5加密的密码。于是我试着手动构造用户名和MD5加密的密码提交上去,结果提示密码错误。再次抓包,发现每次POST数据中加密的密码都不一样~好奇。。。
查看相关源码,弄懂了大概的原理。POST之前,MD5加密密码和一个随机字符串。
password = md5(password+randStr);
这个randStr是每次加载页面时随机程序生成的,也就是说web程序首先生成一个randStr,然后把它保存在session里面,同时输出到前端。前端用随机码加密用户密码之后POST给服务器(str1),服务器再取出session中的随机码对数据库中的用户密码进行加密(str2),再和POST上来的数据做比较(str1 == str2),就可以确定身份了。
这样做的好处在于,就算内网出现了ARP欺骗,也不会泄露出用户密码。