加速乐Cookie – Cloudflare升级版

  • 2018-10-17
  • 2,754
  • 4
  • 8

加速乐Cookie破解

还是那句话 严禁用于非法用途

完整JS在 文末 建议读完本文


在看公示系统

http://www.gsxt.gov.cn/index.html 的时候

我用charles抓包发现

第一个请求返回的状态码是521的 在这个页面

var x="createElement@fromCharCode@0@@https@5@@18@@Oct@toLowerCase@search@g@3@captcha@setTimeout@a@@@href@chars@8@addEventListener@@match@rOm9XFMtA3QKV7nYsPGT4lifyWwkq5vcjH2IdxUoCbhERLaz81DNB6@GMT@@onreadystatechange@@@WsAkM@charAt@length@@@@@@@@function@reverse@Array@@479@Path@@@replace@wH@var@tCX@DOMContentLoaded@attachEvent@Wed@location@28@catch@@if@String@@HY@return@try@D@while@@cookie@eval@@pathname@else@1@RegExp@split@@1539775703@6@@@innerHTML@@d@challenge@B@Expires@JgSe0upZ@1500@0xEDB88320@for@document@div@@join@@@17@12@f@@@@@parseInt@toString@@23@@charCodeAt@0xFF@mT@new@@E@__jsl_clearance@@36@@@window@2@false@firstChild@e@@substr".replace(/@*$/,"").split("@"),y="1l 21=1b(){g('1q.k=1q.2b+1q.c.1j(/[\\?|&]f-2o/,\\'\\')',2s);30.28='3o=2h.1f|3|'+(1b(){1l 3h=[1b(21){23 21},1b(3h){23 3h},(1b(){1l 21=30.1('31');21.2l='<h k=\\'/\\'>43</h>';21=21.41.k;1l 3h=21.p(/5?:\\/\\//)[3];21=21.44(3h.13).b();23 1b(3h){2u(1l 43=3;43<3h.13;43++){3h[43]=21.12(3h[43])};23 3h.33('')}})(),1b(21){2u(1l 3h=3;3h<21.13;3h++){21[3h]=3d(21[3h]).3e(3q)};23 21.33('')}],21=[[(-~(+[])+[]+[])+[-~!/!/+((+!-[])<<(+!-[]))+6]],'3k',[(-~(+[])+[]+[])+[(-~{}|3u)]],'1k',[[2i]],[(-~(+[])+[]+[])+[-~[-~!/!/+((+!-[])<<(+!-[]))-~!/!/+((+!-[])<<(+!-[]))]]],'3n%',[-~!/!/-~!/!/],'2p',[(-~(+[])+[]+[])+[3u+3u],(-~(+[])+[]+[])+(-~[]+((+!-[])<<-~!/!/+((+!-[])<<(+!-[])))+[]+[[]][3])],'11',[~~''],'1m',[((-~!/!/-~!/!/^-~(+[])))/~~''+[]+[]][3].12(~~!{}),[(-~(+[])+[]+[])+(-~[]+((+!-[])<<-~!/!/+((+!-[])<<(+!-[])))+[]+[[]][3])],'22',[(-~{}+[~~{}])/[3u]]+[3u+3u],'%',[(-~{}|3u)],'25'];2u(1l 43=3;43<21.13;43++){21[43]=3h[[e,2d,3u,2d,3u,e,2d,3,2d,e,2d,3,2d,3,e,2d,3,2d,3,2d][43]](21[43])};23 21.33('')})()+';2q=1p, 36-a-8 37:1r:3g r;1g=/;'};1u((1b(){24{23 !!3t.n;}1s(42){23 40;}})()){30.n('1n',21,40)}2c{30.1o('t',21)}",f=function(x,y){var a=0,b=0,c=0;x=x.split("");y=y||99;while((a=x.shift())&&(b=a.charCodeAt(0)-77.5))c=(Math.abs(b)<13?(b+48.5):parseInt(a,36))+y*c;return c},z=f(y.match(/\w/g).sort(function(x,y){return f(x)-f(y)}).pop());while(z++)try{eval(y.replace(/\b\w+\b/g, function(y){return x[f(y,z)-1]||("_"+y)}));break}catch(_){}

代码类似这一团, 不带上Cookie

是无法快乐地访问了 那么既然有JS 就拿他来玩玩咯

如图 我们对它进行分析

上面是还原代码 那么下面呢

try {
    eval(y.replace(/\b\w+\b/g, function (y) {
        return x[f(y, z) - 1] || ("_" + y)
    }));
    break
} catch (_) {
}

这段代码可以说是相当具有想象力了

一次又一次不断地试错代码 直到出现可以执行的

我们看下怎么构造他 让他能输出正常代码

以下有两种思路

根据加速乐需要的对象构造函数

用特征判断eval是否成功

此处我用的第二种

通过运行我们可以推断出 正常代码如下

var _1u=function(){setTimeout('location.href=location.pathname+location.search.replace(/[\?|&]captcha-challenge/,\'\')',1500);document.cookie='__jsl_clearance=1539695410.624|0|'+(function(){var _u=[function(_1u){return eval('String.fromCharCode('+_1u+')')},(function(){var _1u=document.createElement('div');_1u.innerHTML='<a href=\'/\'>_2z</a>';_1u=_1u.firstChild.href;var _u=_1u.match(/https?:\/\//)[0];_1u=_1u.substr(_u.length).toLowerCase();return function(_u){for(var _2z=0;_2z<_u.length;_2z++){_u[_2z]=_1u.charAt(_u[_2z])};return _u.join('')}})()],_2z=[[((2^-~{})+[])+(2-~(+[])+(-~(+[])<<(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})]))+[[]][0]),(((+!-{})+[(+!/!/)])/[-~-~!![{}][(+!-{})]]+[]+[])+[~~!{}],[((+!-{})+[(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})])])/[(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})])]]+[((+!-{})+[(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})])])/[(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})])]],[-~[-~(+[])-~(+[])]+((+!-{})+[(+!/!/)])/[-~-~!![{}][(+!-{})]]]+[-~[-~(+[])-~(+[])]+((+!-{})+[(+!/!/)])/[-~-~!![{}][(+!-{})]]],((2^-~{})+[])+(2-~(+[])+(-~(+[])<<(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})]))+[[]][0]),(((+!-{})+[(+!/!/)])/[-~-~!![{}][(+!-{})]]+[]+[])+[~~!{}],[((+!-{})+[(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})])])/[(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})])]]+[((+!-{})+[(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})])])/[(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})])]],[-~[-~(+[])-~(+[])]+((+!-{})+[(+!/!/)])/[-~-~!![{}][(+!-{})]]]+[(+!-{})],[-~[-~(+[])-~(+[])]+((+!-{})+[(+!/!/)])/[-~-~!![{}][(+!-{})]]]+[(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})])],(2-~(+[])+(-~(+[])<<(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})]))+[[]][0])+(2-~(+[])+(-~(+[])<<(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})]))+[[]][0]),[((+!-{})+[(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})])])/[(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})])]]+[-~(((-~!![{}][(+!-{})]<<-~!![{}][(+!-{})]))*[(-~-~!![{}][(+!-{})]<<-~{})])],[((+!-{})+[(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})])])/[(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})])]]+(2-~(+[])+(-~(+[])<<(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})]))+[[]][0])],[[~~!{}]],[(((+!-{})+[(+!/!/)])/[-~-~!![{}][(+!-{})]]+[]+[])+[~~!{}],(((+!-{})+[(+!/!/)])/[-~-~!![{}][(+!-{})]]+[]+[])+((-~(+[])<<(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})]))+[]),[(+!-{})]+[~~!{}]+[(+!-{})],[(+!-{})]+[(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})])]+[(+!-{})],(2-~(+[])+(-~(+[])<<(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})]))+[[]][0])+[(+!-{})],(2-~(+[])+(-~(+[])<<(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})]))+[[]][0])+((2^-~{})+[]),[-~[-~(+[])-~(+[])]+((+!-{})+[(+!/!/)])/[-~-~!![{}][(+!-{})]]]+[-~(((-~!![{}][(+!-{})]<<-~!![{}][(+!-{})]))*[(-~-~!![{}][(+!-{})]<<-~{})])],((2^-~{})+[])+(2-~(+[])+(-~(+[])<<(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})]))+[[]][0]),(((+!-{})+[(+!/!/)])/[-~-~!![{}][(+!-{})]]+[]+[])+[~~!{}],(2-~(+[])+(-~(+[])<<(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})]))+[[]][0])+[~~!{}]],[(((+!-{})+[(+!/!/)])/[-~-~!![{}][(+!-{})]]+[]+[])],[[-~[-~(+[])-~(+[])]+((+!-{})+[(+!/!/)])/[-~-~!![{}][(+!-{})]]]+[-~[-~(+[])-~(+[])]+((+!-{})+[(+!/!/)])/[-~-~!![{}][(+!-{})]]],[(+!-{})]+[(+!-{})]+(2-~(+[])+(-~(+[])<<(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})]))+[[]][0]),[-~[-~(+[])-~(+[])]+((+!-{})+[(+!/!/)])/[-~-~!![{}][(+!-{})]]]+((2^-~{})+[])],[[(+!-{})]+[(+!-{})]],[(((+!-{})+[(+!/!/)])/[-~-~!![{}][(+!-{})]]+[]+[])+((-~(+[])<<(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})]))+[]),(2-~(+[])+(-~(+[])<<(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})]))+[[]][0])+[(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})])],[-~(((-~!![{}][(+!-{})]<<-~!![{}][(+!-{})]))*[(-~-~!![{}][(+!-{})]<<-~{})])]+[-~[-~(+[])-~(+[])]+((+!-{})+[(+!/!/)])/[-~-~!![{}][(+!-{})]]],[-~[-~(+[])-~(+[])]+((+!-{})+[(+!/!/)])/[-~-~!![{}][(+!-{})]]]+((2^-~{})+[])],[[(+!-{})]+((2^-~{})+[])],[((2^-~{})+[])+(2-~(+[])+(-~(+[])<<(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})]))+[[]][0]),(((+!-{})+[(+!/!/)])/[-~-~!![{}][(+!-{})]]+[]+[])+[(+!-{})],[((+!-{})+[(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})])])/[(-~!![{}][(+!-{})]<<-~!![{}][(+!-{})])]]+[-~[-~(+[])-~(+[])]+((+!-{})+[(+!/!/)])/[-~-~!![{}][(+!-{})]]]]];for(var _1u=0;_1u<_2z.length;_1u++){_2z[_1u]=_u.reverse()[[(+!-{})]](_2z[_1u])};return _2z.join('')})()+';Expires=Tue, 16-Oct-18 14:10:10 GMT;Path=/;'};if((function(){try{return !!window.addEventListener;}catch(e){return false;}})()){document.addEventListener('DOMContentLoaded',_1u,false)}else{document.attachEvent('onreadystatechange',_1u)}

我们将 __jsl_clearance=15 作为特征 构造代码如下

function getJSL(){
    var data="";
    while(data.indexOf('__jsl_clearance=15') === -1 && z++){
        data = y.replace(/\b\w+\b/g, function(y){return x[f(y,z)-1]||("_"+y)});
    }
    return data;
}

通过这串代码我们可以还原出正确执行的代码

但是

What??? 还有层加密? 人家Cloudflare只有一层 而且你们这也太相似了吧 用的同一种加密法

不管了 我们往下面看

var _21 = function () {
    setTimeout('location.href=location.pathname+location.search.replace(/[\?|&]captcha-challenge/,\'\')', 1500);
    document.cookie = '__jsl_clearance=1539775703.479|0|' + (function () {
        var _3h = [function (_21) {
                return _21
            }, function (_3h) {
                return _3h
            }, (function () {
                var _21 = document.createElement('div');
                _21.innerHTML = '<a href=\'/\'>_43</a>';
                _21 = _21.firstChild.href;
                var _3h = _21.match(/https?:\/\//)[0];
                _21 = _21.substr(_3h.length).toLowerCase();
                return function (_3h) {
                    for (var _43 = 0; _43 < _3h.length; _43++) {
                        _3h[_43] = _21.charAt(_3h[_43])
                    }
                    ;
                    return _3h.join('')
                }
            })(), function (_21) {
                for (var _3h = 0; _3h < _21.length; _3h++) {
                    _21[_3h] = parseInt(_21[_3h]).toString(36)
                }
                ;
                return _21.join('')
            }],
            _21 = [[(-~(+[]) + [] + []) + [-~!/!/ + ((+!-[]) << (+!-[])) + 5]], 'mT', [(-~(+[]) + [] + []) + [(-~{} | 2)]], 'wH', [[6]], [(-~(+[]) + [] + []) + [-~[-~!/!/ + ((+!-[]) << (+!-[])) - ~!/!/ + ((+!-[]) << (+!-[]))]]], 'E%', [-~!/!/ - ~!/!/], 'B', [(-~(+[]) + [] + []) + [2 + 2], (-~(+[]) + [] + []) + (-~[] + ((+!-[]) << -~!/!/ + ((+!-[]) << (+!-[]))) + [] + [[]][0])], 'WsAkM', [~~''], 'tCX', [((-~!/!/ - ~!/!/ ^ -~(+[]))) / ~~'' + [] + []][0].charAt(~~!{}), [(-~(+[]) + [] + []) + (-~[] + ((+!-[]) << -~!/!/ + ((+!-[]) << (+!-[]))) + [] + [[]][0])], 'HY', [(-~{} + [~~{}]) / [2]] + [2 + 2], '%', [(-~{} | 2)], 'D'];
        for (var _43 = 0; _43 < _21.length; _43++) {
            _21[_43] = _3h[[3, 1, 2, 1, 2, 3, 1, 0, 1, 3, 1, 0, 1, 0, 3, 1, 0, 1, 0, 1][_43]](_21[_43])
        }
        ;
        return _21.join('')
    })() + ';Expires=Wed, 17-Oct-18 12:28:23 GMT;Path=/;'
};
if ((function () {
    try {
        return !!window.addEventListener;
    } catch (e) {
        return false;
    }
})()) {
    document.addEventListener('DOMContentLoaded', _21, false)
} else {
    document.attachEvent('onreadystatechange', _21)
}

可以马上定位到我们需要的代码片段

'__jsl_clearance=1539775703.479|0|' + (function () {
        var _3h = [function (_21) {
                return _21
            }, function (_3h) {
                return _3h
            }, (function () {
                var _21 = document.createElement('div');
                _21.innerHTML = '<a href=\'/\'>_43</a>';
                _21 = _21.firstChild.href;
                var _3h = _21.match(/https?:\/\//)[0];
                _21 = _21.substr(_3h.length).toLowerCase();
                return function (_3h) {
                    for (var _43 = 0; _43 < _3h.length; _43++) {
                        _3h[_43] = _21.charAt(_3h[_43])
                    }
                    ;
                    return _3h.join('')
                }
            })(), function (_21) {
                for (var _3h = 0; _3h < _21.length; _3h++) {
                    _21[_3h] = parseInt(_21[_3h]).toString(36)
                }
                ;
                return _21.join('')
            }],
            _21 = [[(-~(+[]) + [] + []) + [-~!/!/ + ((+!-[]) << (+!-[])) + 5]], 'mT', [(-~(+[]) + [] + []) + [(-~{} | 2)]], 'wH', [[6]], [(-~(+[]) + [] + []) + [-~[-~!/!/ + ((+!-[]) << (+!-[])) - ~!/!/ + ((+!-[]) << (+!-[]))]]], 'E%', [-~!/!/ - ~!/!/], 'B', [(-~(+[]) + [] + []) + [2 + 2], (-~(+[]) + [] + []) + (-~[] + ((+!-[]) << -~!/!/ + ((+!-[]) << (+!-[]))) + [] + [[]][0])], 'WsAkM', [~~''], 'tCX', [((-~!/!/ - ~!/!/ ^ -~(+[]))) / ~~'' + [] + []][0].charAt(~~!{}), [(-~(+[]) + [] + []) + (-~[] + ((+!-[]) << -~!/!/ + ((+!-[]) << (+!-[]))) + [] + [[]][0])], 'HY', [(-~{} + [~~{}]) / [2]] + [2 + 2], '%', [(-~{} | 2)], 'D'];
        for (var _43 = 0; _43 < _21.length; _43++) {
            _21[_43] = _3h[[3, 1, 2, 1, 2, 3, 1, 0, 1, 3, 1, 0, 1, 0, 3, 1, 0, 1, 0, 1][_43]](_21[_43])
        }
        ;
        return _21.join('')
    })()

这一块代码我们扔进v8肯定是无法执行的, 因为涉及到了document操作,

(当然,伪造document也不是不行 只是 我们前文提到 这次不使用)

其中不能直接执行的如下

(function () {
    var _21 = document.createElement('div');
    _21.innerHTML = '<a href=\'/\'>_43</a>';
    _21 = _21.firstChild.href;
    var _3h = _21.match(/https?:\/\//)[0];
    _21 = _21.substr(_3h.length).toLowerCase();
    return function (_3h) {
        for (var _43 = 0; _43 < _3h.length; _43++) {
            _3h[_43] = _21.charAt(_3h[_43])
        }
        ;
        return _3h.join('')
    }
})()

这一段返回的结果是

www.gsxt.gov.cn/

OK, that’s fine, 替换就行了

于是乎加速乐就被爆菊了

对下文data进行一波骚操作就结束了

data.slice(data.indexOf("'__jsl_clearance"), data.indexOf("+';Expires")).replace(/document(.*?)toLowerCase\(\)/g, function(y){return '"www.gsxt.gov.cn/"'})

Github地址: 加速乐

评论

  • zhao回复

    大佬你好,我想知道 这一段返回的结果是 http://www.gsxt.gov.cn/ 这个你是怎么知道这个结果的?怎么测试运行出来的呐?这个地方往下看不懂了

  • Dania Tupin回复

    What’s Taking place i’m new to this, I stumbled upon this I’ve discovered It absolutely helpful and it has aided me out loads. I hope to give a contribution & aid different users like its aided me. Great job.

  • lengyue回复

    不是啊 前文有说的

  • 创可贴回复

    大佬 data是不是传过来的js代码啊