zoukankan      html  css  js  c++  java
  • js逆向之 中间人攻击-js注入

     题目是这样的,由于题目要求是计算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>
  • 相关阅读:
    如何在Windows Forms应用程序中实现可组装式(Composite)的架构以及松耦合事件机制
    SQL Server 2008中的CDC(Change Data Capture)功能使用及释疑
    【VSTO】Office开发中遇到的兼容性检查问题
    SQL Server 2008 R2的StreamInsight 【文章转载】
    WCF技术的不同应用场景及其实现分析
    如何利用Interception简化MVVM中的Model和ViewModel的设计
    有关在SharePoint Server中Infopath表单无法呈现的问题及解决方案
    再谈谈ADO.NET Data Service 数据格式(xml和json)
    自定义Domain Service时遇到实体不能更新的问题及其解决方案
    如何在RIA Service中启用身份验证
  • 原文地址:https://www.cnblogs.com/wuxianyu/p/14476168.html
Copyright © 2011-2022 走看看