最近比较忙,可能补题的速度慢一些些~
签到题
首先进入界面发现如下代码
然后就知道用==弱匹配,构造一个纯数字串和一个纯字母串,让他们的MD5值形如0exxx且0e后面全是纯数字。就构成科学记数法0==0,payload
Username:QNKCDZO
password:240610708
进去后发现还有一个简单的绕过
我们看到又是==,有一个参考表,大家一看便知~
post的payload构造如下
message={
"key":0}
抽抽奖
看到这题首先想到转盘模板,应该是js,然后看源代码的时候发现了jQurey.js这个函数有点特别,因为有一段jother加密的代码,而且相当大,没法直接运行。
然后我们在下面可以看到控制转盘的函数,通过chrome中的console调试可以发现这个可以控制转盘的方向等等。而其中的jsctf0 还是jsctf1变量也好都是我们可以更改的。
$(_$[0]).rotate({
bind: {
click: function() {
var jsctf0 = [0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8];
jsctf0 = jsctf0[Math.floor(Math.random() * jsctf0.length)];
console.log(jsctf0);
if (jsctf0 == 0x0) {
timeOut()
} else {
var jsctf1 = [0x0];
jsctf1 = jsctf1[Math.floor(Math.random() * jsctf1.length)];
if (jsctf1 == 0x1) {
rotateFunc(0x1, 0x9d, _$[1])
}
;if (jsctf1 == 0x2) {
rotateFunc(0x2, 0xf7, _$[2])
}
;if (jsctf1 == 0x3) {
rotateFunc(0x3, 0x16, _$[3])
}
;if (jsctf1 == 0x0) {
var jsctf2 = [0x43, 0x70, 0xca, 0x124, 0x151];
jsctf2 = jsctf2[Math.floor(Math.random() * jsctf2.length)];
rotateFunc(0x0, jsctf2, 0x0)
}
}
}
}
});
然后我们理所应当的揭秘那个jother加密后的代码,但是那个玩意儿实在是太大了!大概7000万字节,很难弄,但是我们可以利用chrome浏览器啊!console是一个很强大开发工具!我们可以输入指令。比如说如下!!!猜测flag?
浏览器已经帮你解决好了,但是这一步多少还是蒙的,其实分析刚刚看的代码知道调用功能的关键函数是rotateFunc函数,那我们在console中看一下rotateFunc函数也能得到关键函数getFlag~
得到代码如下
直接一搞就看到了
(function() {
window.getFlag=function(text){ if(text=='1'){ alert("你最厉害啦!可惜没flag") } if(text=='2'){ alert("你太厉害了,竟然是二等奖") } if(text=='3'){ alert("你好厉害,三等奖啊") } if(text=='flag')