您的位置:首页 > Web前端

16年6月查询四六级的成绩页面问题

2016-08-19 14:43 267 查看

16年6月查询四六级的成绩页面问题

–绕过window.onload

缘由

8月18号的下午,听闻是工作人员手滑,导致四六级成绩可以提前查询。后来修复方式不正确,使之依然可以绕过弹窗查询。

代码分析

第一次修改

程序员发现错误后,第一次采取的方法是这样的

<div id="Content"><div id="Content1">
<script src="./全国大学英语四、六级考试成绩查询 - 中国教育考试网_files/jsencrypt.min.js" type="text/javascript"></script>
<script src="./全国大学英语四、六级考试成绩查询 - 中国教育考试网_files/query.js" type="text/javascript"></script>
<script src="./全国大学英语四、六级考试成绩查询 - 中国教育考试网_files/query_cet.js" type="text/javascript"></script><div style="display:none"><iframe name="_ajax" onload="try{t=contentWindow.location.host}catch(e){return}p=parentNode;if(t&&p.style.display)p.innerHTML=p.innerHTML"></iframe><form name="form1" method="POST" action="http://www.baidu.com/" target="_ajax"><input type="hidden" name="tp" value=""><input type="hidden" name="czn" value=""><input type="hidden" name="v" value=""></form></div>


分析代码,其中引入了query_cet.js,查看js文件发现一个不够谨慎的问题,程序员把弹窗写在了window.onload里面,导致了在页面加载完毕之后再弹窗。这样的操作只要想办法把弹窗弄掉就可以了。这里有个小技巧,在点击弹窗的“确定”后,按下ctrl+s便可以打断跳转操作,之后就可以正常操作了。

window.onload = function() {

if(!checkTime()){
alert("对不起,请于2016年8月19日上午9:00再来查询!");
location.href = "/";
}
……


如下图:



点击取消后即可。

第二次修改

8月18号晚上11点左右,发现加载后显示的弹窗不一样了,页面元素并没有全部加载出来再弹窗,于是猜测代码被修改。


第二日查看query_cet.js源码如下:

if(self!=top)window.open(self.location,'_top');
function checkTime(){
var t = new Date("2016/08/19 09:00:00").getTime();
var d=new Date().getTime();
if(d>=t){
return true;
}
return false;
}
if(!checkTime()){
alert("对不起,请于2016年8月19日上午9:00再来查询!");
location.href = "/";
}

var result = new Object();

result.publicKey = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMFBIs6VqyyxytxiY6sHocThOKoJWNSY8BuKXMilvKUsdagv44zFJvMXnV2E7ZbdjpNS1IY/uRoJzwUuob3sme0CAwEAAQ==";

document.write("<div style=display:none><iframe name=_ajax onload=try{t=contentWindow.location.host}catch(e){return}p=parentNode;if(t&&p.style.display)p.innerHTML=p.innerHTML></iframe>"+
"<form name='form1' method='POST' action='http://www.baidu.com' target='_ajax'><input type='hidden' name='tp' value='' /><input type='hidden' name='czn' value='' /><input type='hidden' name='v' value='' /></form></div>");

var tp;
window.onload = function() {

if(get("sn"))
……


checktime()写在js前面,这下就没辙啦,服务器上的js文件并不能修改(?),也没有找到一些数据库相关的漏洞,所以就没有继续研究下去了。

一些想法

因为公钥和一些相关信息写在头部,猜测应该可以通过burpsuite等工具,自行修改post的信息,这样的话就可以避免被弹窗。不过加密方式应该也是难点,再研究一番看有没有可能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  四六级 页面 前端