分析 KINGOSOFT 青果教务系统登录逻辑
前言
首先,我们学校的教务系统是青果的教务系统,KINGOSOFT 教务系统应该是青果的新版本的教务系统。不知道为什么是英文,也许是英文显得比较厉害一点。
其次,我们学校的教务系统长这个样子
这个样子
以及这个样子的
分析登录流程
0x1
我们要做到模拟登录,那么就应该是模拟真实的用户来进行登录,那么我们就来先分析一下他的登录逻辑。
- 通过元素审查,可以发现,在用户点击登录按钮之后,页面执行了这个
doLogon()
的方法,那么我们就进入这个方法看看,这个方法到底做了些什么事情
- 我们使用调试器查找到这个方法的具体位置
这是 doLogon()
方法的 js 代码
function doLogon() {
// 输入信息验证
if (!validate()) {
return false;
}
// 验证码正确性验证
var username = j$("#yhmc").val();
var password = j$("#yhmm").val();
var randnumber = j$("#randnumber").val();
var passwordPolicy = kutil.isPasswordPolicy(username, password);
var url = _webRootPath + "cas/logon.action";
password = hex_md5(hex_md5(password)+hex_md5(randnumber.toLowerCase()));
/**
var params = {
"yhmc" : username,
"yhmm" : password,
"randnumber": randnumber,
"isPasswordPolicy" : passwordPolicy
};
*/
var p_username = "_u"+randnumber;
var p_password = "_p"+randnumber;
username = base64encode(username+";;"+_sessionid);
var params = p_username+"="+username+"&"+p_password+"="+password+"&randnumber="+randnumber+"&isPasswordPolicy="+passwordPolicy ;
//alert("params="+params);
params = getEncParams(params);
//alert("encparams="+params);
doPreLogon();
kutil.doAjax(url, params, doPostLogon);
function doPreLogon(){
j$("#msg").html("正在登录......");
j$("#login").attr("disabled", true);
j$("#reset").attr("disabled", true);
}
function doPostLogon(response) {
var data = JSON.parse(response);
var status = data.status ;
var message = data.message ;
if ("200" == status) {
var result = data.result ;
window.document.location.href = result ;
} else {
reloadScript("kingo_encypt",_webRootPath+"custom/js/SetKingoEncypt.jsp");
if("407" == status){
alert(message);
showMessage("");
}else{
showMessage(message);
}
j$("#login").attr("disabled", false);
j$("#reset").attr("disabled", false)