diff --git a/猿人学练习/11js加密人均会解jsl/img/1.png b/猿人学练习/11js加密人均会解jsl/img/1.png new file mode 100644 index 0000000..0532736 Binary files /dev/null and b/猿人学练习/11js加密人均会解jsl/img/1.png differ diff --git a/猿人学练习/11js加密人均会解jsl/img/2.png b/猿人学练习/11js加密人均会解jsl/img/2.png new file mode 100644 index 0000000..a74637e Binary files /dev/null and b/猿人学练习/11js加密人均会解jsl/img/2.png differ diff --git a/猿人学练习/11js加密人均会解jsl/img/3.png b/猿人学练习/11js加密人均会解jsl/img/3.png new file mode 100644 index 0000000..1f287b9 Binary files /dev/null and b/猿人学练习/11js加密人均会解jsl/img/3.png differ diff --git a/猿人学练习/11js加密人均会解jsl/img/4.png b/猿人学练习/11js加密人均会解jsl/img/4.png new file mode 100644 index 0000000..e94997d Binary files /dev/null and b/猿人学练习/11js加密人均会解jsl/img/4.png differ diff --git a/猿人学练习/11js加密人均会解jsl/img/5.png b/猿人学练习/11js加密人均会解jsl/img/5.png new file mode 100644 index 0000000..43cf865 Binary files /dev/null and b/猿人学练习/11js加密人均会解jsl/img/5.png differ diff --git a/猿人学练习/11js加密人均会解jsl/img/6.png b/猿人学练习/11js加密人均会解jsl/img/6.png new file mode 100644 index 0000000..9c4b6f0 Binary files /dev/null and b/猿人学练习/11js加密人均会解jsl/img/6.png differ diff --git a/猿人学练习/11js加密人均会解jsl/img/7.png b/猿人学练习/11js加密人均会解jsl/img/7.png new file mode 100644 index 0000000..8cee7c6 Binary files /dev/null and b/猿人学练习/11js加密人均会解jsl/img/7.png differ diff --git a/猿人学练习/11js加密人均会解jsl/readme.md b/猿人学练习/11js加密人均会解jsl/readme.md new file mode 100644 index 0000000..16c7ae7 --- /dev/null +++ b/猿人学练习/11js加密人均会解jsl/readme.md @@ -0,0 +1,64 @@ +# 知识点:js生成cookie,js事件断点 + +## 解题思路 + +模拟请求地址,发现返回的是一串js + +![请求](./img/1.png) + +既然返回是js,那么直接事件断点 + +![请求](./img/2.png) + +断点调试下一步,下一步,下一步,直到`https://www.python-spider.com/challenge/11`停下来 + +![请求](./img/3.png) + +这里的会发现如下这段代码 + + try { + eval(y.replace(/\b\w+\b/g, function(y) { + return x[f(y, z) - 1] || ("_" + y) + })); + break + } catch ( + +把`eval`替换成`a = `,并在底部打印`a`函数 + + try { + a = (y.replace(/\b\w+\b/g, function(y) { + return x[f(y, z) - 1] || ("_" + y) + })); + break + } catch ( + +发现返回的是一串js, + +![请求](./img/4.png) + +复制出来执行一下试试,发现格式报错 + +![请求](./img/5.png) + +继续执行,报错`document`不存在 + +![请求](./img/6.png) + +开始补环境,缺啥补啥 + + function createElement(){ + return { + 'innerHTML':'', + 'firstChild':{ + 'href':'http://www.python-spider.com/challenge/11' + } + } + } + function setTimeout (){ } + document = { + 'attachEvent' : function(){}, + 'addEventListener':function(){}, + 'createElement':createElement, + }; + +![请求](./img/7.png) diff --git a/猿人学练习/11js加密人均会解jsl/test.js b/猿人学练习/11js加密人均会解jsl/test.js index 95d708c..67eb1d7 100644 --- a/猿人学练习/11js加密人均会解jsl/test.js +++ b/猿人学练习/11js加密人均会解jsl/test.js @@ -12,17 +12,54 @@ document = { 'addEventListener':function(){}, 'createElement':createElement, }; -var _N=function(){setTimeout('location.href=location.pathname+location.search.replace(/[\?|&]captcha-challenge/,\'\')',1500);document.cookie='__jsl_clearance=1677835884.807|0|'+(function(){var _t=[function(_N){return _N},function(_t){return _t},(function(){var _N=document.createElement('div');_N.innerHTML='_1H';_N=_N.firstChild.href;var _t=_N.match(/https?:\/\//)[0];_N=_N.substr(_t.length).toLowerCase();return function(_t){for(var _1H=0;_1H<_t.length;_1H++){_t[_1H]=_N.charAt(_t[_1H])};return _t.join('')}})(),function(_N){for(var _t=0;_t<_N.length;_t++){_N[_t]=parseInt(_N[_t]).toString(36)};return _N.join('')}],_N=['clD',[(-~~~{}<<-~~~{})+(-~~~{}<<-~~~{})],'V',[(-~[]+[]+[[]][0])+[-~-~{}]],'fq',[(-~[]+[]+[[]][0])+[-~[]-~[]-~!/!/+(-~[]-~[])*[-~[]-~[]]],(-~[]+[]+[[]][0])+(-~[-~-~{}]+[[]][0]),(-~[]+[]+[[]][0])+[(+!![[][[]]][1])]],'LBWywKW',[(2-~[-~-~{}]+[]+[[]][0])],'%2FZyf',[(-~[]+[]+[[]][0])+(-~[-~-~{}]+[[]][0])],'6',[(-~[]+[]+[[]][0])+(-~[-~-~{}]+[[]][0])],'_149ed88728a08a812738bdc16856de74',(-~[-~-~{}]+[[]][0]),'D'];for(var _1H=0;_1H<_N.length;_1H++){_N[_1H]=_t[[1,0,1,2,1,3,1,2,1,2,1,3,1,0,1][_1H]](_N[_1H])};return _N.join('')})()+';Expires=Tue, 12-Dec-30 09:50:26 GMT;Path=/;'};if((function(){try{return !!window.addEventListener;}catch(e){return false;}})()){document.addEventListener('DOMContentLoaded',_N,false)}else{document.attachEvent('onreadystatechange',_N)} -function get_cookie(jsStr) { - eval(jsStr); - _N(); - return document.cookie; + + +var _N = function () { + setTimeout('location.href=location.pathname+location.search.replace(/[\?|&]captcha-challenge/,\'\')', 1500); + document.cookie = '__jsl_clearance=1677949245.576|0|' + (function () { + var _t = [function (_N) { + return _N + }, function (_t) { + return _t + }, (function () { + var _N = document.createElement('div'); + _N.innerHTML = '_1H'; + _N = _N.firstChild.href; + var _t = _N.match(/https?:\/\//)[0]; + _N = _N.substr(_t.length).toLowerCase(); + return function (_t) { + for (var _1H = 0; _1H < _t.length; _1H++) { + _t[_1H] = _N.charAt(_t[_1H]) + } + ; + return _t.join('') + } + })(), function (_N) { + for (var _t = 0; _t < _N.length; _t++) { + _N[_t] = parseInt(_N[_t]).toString(36) + } + ; + return _N.join('') + }], + _N = ['clD', [(-~~~{} << -~~~{}) + (-~~~{} << -~~~{})], 'V', [(-~[] + [] + [[]][0]) + [-~-~{}]], 'fq', [(-~[] + [] + [[]][0]) + [-~[] - ~[] - ~!/!/ + (-~[] - ~[]) * [-~[] - ~[]]], (-~[] + [] + [[]][0]) + (-~[-~-~{}] + [[]][0]), (-~[] + [] + [[]][0]) + [(+!![[][[]]][1])]], 'LBWywKW', [(2 - ~[-~-~{}] + [] + [[]][0])], '%2FZyf', [(-~[] + [] + [[]][0]) + (-~[-~-~{}] + [[]][0])], '6', [(-~[] + [] + [[]][0]) + (-~[-~-~{}] + [[]][0])], '_5f9f264ddd0bc5c81baf5167fb285724', (-~[-~-~{}] + [[]][0]), 'D']; + for (var _1H = 0; _1H < _N.length; _1H++) { + _N[_1H] = _t[[1, 0, 1, 2, 1, 3, 1, 2, 1, 2, 1, 3, 1, 0, 1][_1H]](_N[_1H]) + } + ; + return _N.join('') + })() + ';Expires=Tue, 12-Dec-30 09:50:26 GMT;Path=/;' +}; +if ((function () { + try { + return !!window.addEventListener; + } catch (e) { + return false; + } +})()) { + document.addEventListener('DOMContentLoaded', _N, false) +} else { + document.attachEvent('onreadystatechange', _N) } -// console.log(get_cookie()); - - -module.exports = - { - get_cookie - }; +_N(); +console.log(document); \ No newline at end of file