题目是这样的,由于题目要求是计算cookie中的sign。所以我们需要把sign删除,进行重新加载
我们用charles对网页进行数据抓取
发现charles里面有个202 ,202表示服务器已经接受请求,但尚未处理,此时网站会进行一个js代码但操作, 生成cookie,最后返回的200的相应数据请求。找到这个生成cookie的js代码,破解js代码内容,即可()
现在我们需要把202加载的 js代码放到一个html文件里面进行编辑
现在我们需要用charles的map local方法去添加本地的html,。从而使202这个页面加载本地的html,不走服务器加载的html
像这样
现在我们打开网页,把之前的cokie删除
会看到网页一直重复加载,就是进不去(原理是:js 文件执行 指向 location, location 又被用本地的js 替换,替换的js又执行,又指向 location,导致反复执行,一直再刷新)
同时,我们也可在js代码里随便加点注释,网页能否正常加载进去
已经加载进去里
现在我们打开f12打开,发现一个无限debugger
一般来说我们只要修改debugger的代码,让他返回为空就可以了
我们在右下角的call stack调用栈里面都点点。里面的的各个代码是执行的顺序,我们找到包含return的函数。
在本地的html文件里给她去掉//
像这样
然后我们刷新,就可以看到不是无限debugger了(如果第一个不对,尝试第二个或者第三个return)
现在你会会发现挂载不了网页,是因为你在加载cookie的时候没有打上断点,这时候我们需要在快加载cookie完成的时候打上断点,进行调试
然后对每个代码进行拆分调试
每做出来一步,刷新一步,看看需要啥参数,有些参数看不懂,就再拆分需要的,一直拆到看懂为止
<script src="/static/boke/js/md5.js"></script>
<script>var _$oa = ['bnpGSnk=', 'SUJucGM=', 'ZnVuY3Rpb24gKlwoICpcKQ==', 'R3Vzd0E=', 'Zk56Rmg=', 'UUNsaUw=', 'T0lBQkI=', 'Zm1meWI=', 'UnJNU3g=', 'SmVwbGs=', 'Y21hQ28=', 'WU94eUk=', 'a2pob1Q=', 'dmFsdWVPZg==', 'Z2FrYng=', 'VnZlU3g=', 'Tnl5Z1k=', 'OyBwYXRoPS8=', 'WUZlVG4=', 'Y291bnRlcg==', 'QnZJSEw=', 'alRXQkg=', 'ZUNucWk=', 'YXBwbHk=', 'ZGVidQ==', 'VFJZTHc=', 'SmR1R1c=', 'cm91bmQ=', 'b2hlamk=', 'c25yTkg=', 'Z1VERGc=', 'YWN0aW9u', 'UGlxY24=', 'UnhVVFY=', 'Umd4V0I=', 'YWlkaW5nX3dpbg==', 'THNjdGU=', 'eHpRaEY=', 'c3RyaW5n', 'YWVhdks=', '5q2k572R6aG15Y+X44CQ54ix6ZSt5LqR55u+IFYxLjAg5Yqo5oCB54mI44CR5L+d5oqk', 'Ym1Sd2s=', 'SXBjdnA=', 'RE1oYkU=', 'QXJJelc=', 'V1BNb0k=', 'VFhJTGc=', 'WUZoUVY=', 'bGVuZ3Ro', 'dGVzdA==', 'YkVRcnA=', 'QllJRng=', 'Z2dlcg==', 'Y29va2ll', 'aW5pdA==', 'eFFlenM=', 'd2hpbGUgKHRydWUpIHt9', 'YnRvYQ==', 'Y2FsbA==', 'WWduVEs=', 'd1BEbFY=', 'ZWhJRm4=', 'cmRtSkY=', 'cmVsb2Fk', 'WlhXWlM=', 'R3RKaGw=', 'bG9n', 'd1R1WXk=', 'UGRIVEs=', 'XCtcKyAqKD86W2EtekEtWl8kXVswLTlhLXpBLVpfJF0qKQ==', 'ektMVW0=', 'aW5wdXQ=', 'UUt0Y1A=', 'dlloSlc=', 'Y29uc3RydWN0b3I='];
(function (a, b) {
var c = function (f) {
while (--f) {
a['push'](a['shift']());
}
};
c(++b);
}(_$oa, 0xca));
var _$ob = function (a, b) {
a = a - 0x0;
var c = _$oa[a];
if (_$ob['PoEjie'] === undefined) {
(function () {
var f;
try {
var h = Function('returnx20(function()x20' + '{}.constructor(x22returnx20thisx22)(x20)' + ');');
f = h();
} catch (i) {
f = window;
}
var g = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
f['atob'] || (f['atob'] = function (j) {
var k = String(j)['replace'](/=+$/, '');
var l = '';
for (var m = 0x0, n, o, p = 0x0; o = k['charAt'](p++); ~o && (n = m % 0x4 ? n * 0x40 + o : o, m++ % 0x4) ? l += String['fromCharCode'](0xff & n >> (-0x2 * m & 0x6)) : 0x0) {
o = g['indexOf'](o);
}
return l;
});
}());
_$ob['ISGrRi'] = function (e) {
var f = atob(e);
var g = [];
for (var h = 0x0, j = f['length']; h < j; h++) {
g += '%' + ('00' + f['charCodeAt'](h)['toString'](0x10))['slice'](-0x2);
}
return decodeURIComponent(g);
};
_$ob['MaggHR'] = {};
_$ob['PoEjie'] = !![];
}
var d = _$ob['MaggHR'][a];
if (d === undefined) {
c = _$ob['ISGrRi'](c);
_$ob['MaggHR'][a] = c;
} else {
c = d;
}
return c;
};
(function () {
var a = {
'YFeTn': function (d) {
return d();
}, 'fIVER': function (d, e) {
return d !== e;
}, 'cGnOm': _$ob('0x1d'), 'aeavK': _$ob('0x3c'), 'oheji': function (d, e) {
return d === e;
}, 'JduGW': _$ob('0x37'), 'nzFJy': 'ZQlmD', 'zNYMn': 'functionx20*x5c(x20*x5c)', 'bEQrp': 'x5c+x5c+x20*(?:[a-zA-Z_$][0-9a-zA-Z_$]*)', 'zKLUm': function (d, e) {
return d(e);
}, 'xQezs': _$ob('0x2'), 'bmRwk': function (d, e) {
return d + e;
}, 'YFhQV': 'chain', 'QCliL': _$ob('0x13'), 'cmaCo': function (d, e) {
return d !== e;
}, 'hFGKP': _$ob('0x1e'), 'GtJhl': _$ob('0x25'), 'DMhbE': function (d) {
return d();
}, 'jTWBH': function (d, e, f) {
return d(e, f);
}, 'TXILg': _$ob('0x3f'), 'ehIFn': _$ob('0x3a'), 'NyygY': function (d, e) {
return d(e);
}, 'RxUTV': function (d, e) {
return d(e);
}, 'Ipcvp': function (d, e) {
return d(e);
}, 'vYhJW': function (d, e) {
return d / e;
}, 'uSRGp': function (d, e) {
return d + e;
}, 'DXAGi': function (d, e) {
return d + e;
}, 'RgxWB': function (d, e) {
return d + e;
}, 'RkSDc': function (d, e) {
return d + e;
}, 'EkYKc': function (d, e) {
return d + e;
}, 'BvIHL': 'sign=', 'eCnqi': _$ob('0x28')
};
var b = function () {
if (a['fIVER'](a['cGnOm'], a[_$ob('0x3e')])) {
var d = !![];
return function (e, f) {
var g = d ? function () {
if (f) {
var h = f['apply'](e, arguments);
f = null;
return h;
}
} : function () {
};
d = ![];
return g;
};
} else {
YZQABU[_$ob('0x29')](_$oc);
}
}();
(function () {
var d = {
'YFztd': function (e, f) {
return a[_$ob('0x12')](e, f);
}
};
a[_$ob('0x2c')](b, this, function () {
if (a[_$ob('0x33')](a[_$ob('0x31')], a[_$ob('0x17')])) {
if (ret) {
return debuggerProtection;
} else {
JJrIvU['YFztd'](debuggerProtection, 0x0);
}
} else {
var e = new RegExp(a['zNYMn']);
var f = new RegExp(a[_$ob('0x49')], 'i');
var g = a['zKLUm'](_$oc, a[_$ob('0x3')]);
if (!e['test'](a['bmRwk'](g, a[_$ob('0x46')])) || !f[_$ob('0x48')](a[_$ob('0x40')](g, a[_$ob('0x1c')]))) {
if (a[_$ob('0x21')](a['hFGKP'], a[_$ob('0xd')])) {
a[_$ob('0x12')](g, '0');
} else {
return debuggerProtection;
}
} else {
a[_$ob('0x42')](_$oc);
}
}
})();
}());
console[_$ob('0xe')](a[_$ob('0x45')]);
var c = new Date()[_$ob('0x24')]();
debugger;
var tok= a['NyygY'](String, c)
var tokenr=a['bmRwk'](a['ehIFn'],tok)
token = window.btoa(tokenr);
var math11= a['Ipcvp'](String, Math['round'](a['vYhJW'](c, 1000)))
var boatdd=a['bmRwk'](a['ehIFn'],math11)
var mddd= window.btoa(boatdd)
md = a[_$ob('0x38')](hex_md5,mddd);
var ccccc=a['RkSDc'](a['EkYKc'](a['BvIHL'], Math[_$ob('0x32')](a['vYhJW'](c, 1000))), '~')
var cccc=a['RgxWB']( ccccc,token)
var ccc=a['RgxWB'](cccc, '|');
var bbb=a['DXAGi'](ccc,md);
var aaa= a['eCnqi'];
document.cookie = a['uSRGp'](bbb,aaa);
location[_$ob('0xb')]();
}());
function _$oc(a) {
var b = {
'mnhaS': function (d, e) {
return d === e;
}, 'wTuYy': _$ob('0x26'), 'WPMoI': _$ob('0x34'), 'YgnTK': function (d, e) {
return d === e;
}, 'kjhoT': _$ob('0x3d'), 'QKtcP': _$ob('0x4'), 'KiHPT': _$ob('0x2a'), 'hoblX': function (d, e) {
return d !== e;
}, 'Jeplk': function (d, e) {
return d + e;
}, 'ntNdt': function (d, e) {
return d / e;
}, 'fNzFh': _$ob('0x47'), 'wPDlV': function (d, e) {
return d === e;
}, 'eFtTi': function (d, e) {
return d % e;
}, 'PdHTK': _$ob('0x2f'), 'ArIzW': _$ob('0x0'), 'rdmJF': _$ob('0x36'), 'oLdDx': 'stateObject', 'TRYLw': function (d, e) {
return d(e);
}, 'wonCH': _$ob('0x19'), 'CHTPC': _$ob('0x11'), 'Lscte': 'init', 'RrMSx': function (d, e) {
return d + e;
}, 'GuswA': 'chain', 'YOxyI': _$ob('0x13'), 'gUDDg': function (d, e) {
return d(e);
}, 'BYIFx': function (d) {
return d();
}, 'ZXWZS': _$ob('0x18'), 'PBCks': function (d, e) {
// return d(e);
}
};
function c(d) {
if (b[_$ob('0x7')](typeof d, b[_$ob('0x23')])) {
return function (e) {
}['constructor'](b[_$ob('0x14')])['apply'](b['KiHPT']);
} else {
if (b['hoblX'](b[_$ob('0x20')]('', b['ntNdt'](d, d))[b[_$ob('0x1b')]], 0x1) || b[_$ob('0x8')](b['eFtTi'](d, 0x14), 0x0)) {
(function () {
return !![];
}[_$ob('0x16')](b[_$ob('0x20')](b[_$ob('0x10')], b[_$ob('0x43')]))[_$ob('0x6')](b[_$ob('0xa')]));
} else {
(function () {
if (b['mnhaS'](b[_$ob('0xf')], b[_$ob('0x44')])) {
if (fn) {
var f = fn['apply'](context, arguments);
fn = null;
return f;
}
} else {
return ![];
}
}['constructor'](b[_$ob('0x20')](b[_$ob('0x10')], b[_$ob('0x43')]))[_$ob('0x2e')](b['oLdDx']));
}
}
b[_$ob('0x30')](c, ++d);
}
try {
if (a) {
return c;
} else {
if (b[_$ob('0x8')](b[_$ob('0xc')], b[_$ob('0xc')])) {
b['PBCks'](c, 0x0);
} else {
var e = new RegExp(b['wonCH']);
var f = new RegExp(b['CHTPC'], 'i');
var g = b[_$ob('0x30')](_$oc, b[_$ob('0x3b')]);
if (!e[_$ob('0x48')](b[_$ob('0x1f')](g, b[_$ob('0x1a')])) || !f[_$ob('0x48')](b['RrMSx'](g, b[_$ob('0x22')]))) {
b[_$ob('0x35')](g, '0');
} else {
b[_$ob('0x4a')](_$oc);
}
}
}
} catch (e) {
}
}</script>