尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Web Spider 某渣渣企业平台 表单参数逆向 Webpack

Web Spider 某渣渣企业平台 表单参数逆向 Webpack 文章目录一、login表单参数epass1.1 逆向分析1.2 Webpack逆向注意事项二、滑块验证文字点选验证参数w2.1 逆向分析知识点介绍协议头参数逆向表单参数逆向Webpack扣代码调试技巧nodejs调试Webpack打包代码的bug一、login表单参数epass1.1 逆向分析1、POST https://www.qcc.com/api/auth/pass-login2、下面是login表单需要逆向出来的epass参数3、根据url的部分后缀在资源面板下一个XHR断点以便堆栈跟值4、重新发起一个login请求让XHR断点断住请求可以发现数据已经全部生成完毕了下面需要继续通过堆栈来跟值5、epass: o.default.encrypt(a, qcc)来到了epass参数加密处继续跟进去看看里面的具体加密代码6、可以看到o是由[t, n(251115), n(211163)]创建出来的然后调用了o.default.encrypt(e, t).toString()加密方法7、在o [t, n(251115), n(211163)]打下断点进入至n(251115)看看重点是mian主文件标红的方法体(webpack加载器)8、如何扣下webpack的代码方法1复制main主文件的全部代码然后继续跟入mian主文件需要调用的所有代码文件中复制该文件全部代码main.f571e618.jsvendor.76803501.js共14w行代码9、如何扣下webpack的代码方法2复制main主文件的全部代码然后继续跟入mian主文件需要调用的任意代码文件中在控制台打印一个关键词webpackChunkpc_web该关键词在不同的网站可能会发生变化一般前面都包含webpack10、方法1复杂点需要去调试跟入不一定能解决问题方法2比较稳但是代码量比较多下面带着两个源码文件(main.f571e618.jsvendor.76803501.js)中的14w行代码去浏览器调试windowthis;// 现在头部定义一个window// 通过这段代码找到加载器 return r[e].call(a.exports, a, a.exports, d),// 下边是加载器的代码需要将该方法导出window.xiaozhou d;functiond(e){vartl[e];if(void0!t)returnt.exports;varal[e]{id:e,loaded:!1,exports:{}};returnr[e].call(a.exports,a,a.exports,d),a.loaded!0,a.exports}window.xiaozhoud;// 这行代码是核心导出11、调试成功创建对象调用加密方法12、其实到了上面这一步还得脱离浏览器环境中调试这里我推荐fiddler工具加入编程猫的插件这里调试报错了需要把self改成this13、代码修改好了加载成功调用加密方法其实到了这一步除了代码量有点大其他的都到位了14、下面我说一下如何压缩代码需要增加在加载器方法体中增加一条代码window.xiaozhou_code \ e \: r[e] ,;functiond(e){vartl[e];if(void0!t)returnt.exports;varal[e]{id:e,loaded:!1,exports:{}};window.xiaozhou_code\e\:r[e],;// 注意这条代码其实就是把方法体以字符串的形式累加起来returnr[e].call(a.exports,a,a.exports,d),a.loaded!0,a.exports}window.xiaozhoud;15、添加好了就在fiddler的编程猫工具中去打印(window.xiaozhou_code)输出复制打印出来的代码16、压缩(累加了调用到的代码)将webpack的子包7w行代码压缩了1k行并且同样可以运行成功这里推荐一个工具(Notepad)分析代码用1.2 Webpack逆向注意事项二、滑块验证文字点选验证参数w2.1 逆向分析1、GET https://gcaptcha4.geetest.com/verify2、下面是验证时提交的参数除了w参数其他的参数都能通过请求url(https://gcaptcha4.geetest.com/load)得到3、由于不是Fetch/XHR请求所以不能下XHR断点我这边通过启动器进入代码中下断点进行堆栈跟值4、通过堆栈跟值来到了参数加密处5、核心加密代码就是下面这几行vars(0,d[$_DGAHz(186)])();varui[a][$_DGAHz(1243)][$_DGAIj(1288)](s);varci[a][$_DGAIj(1260)][$_DGAHz(1288)](e,s);varw(0,d[$_DGAIj(130)])(c)u;6、接下来就是把当前文件的所有代码2w行扣下来然后再浏览器里面调试运行把需要创建的对象导出来即可windowthis;// 现在顶部创建一个window对象window.xiaozhou_nr;// 在184行左右添加此代码window.xiaozhou_ss;// 在10932行左右添加此代码// 最后自定义一个方法创建导出的对象然后调用加密方法functionget_w(){vare{passtime:2700,userresponse:[[4598,5208],[2747,1830],[1218,5691]],device_id:05c041505610c5f2ed1270b81ef83af6,lot_number:a6c174b9470943fc9b6811144487f420,pow_msg:1|0|md5|2023-07-29T13:38:42.52046108:00|8daf8b2d78f74aea6a77c0d10da77d41|a6c174b9470943fc9b6811144487f420||10e9da824855c9e4,pow_sign:3a768ce0d0d0608e716f9e5280f551da,geetest:captcha,lang:zh,ep:123,uzfw:433775853,yeg6:d6w9,em:{ph:0,cp:0,ek:11,wd:1,nt:0,si:0,sc:0}};varhwindow.xiaozhou_s(window.xiaozhou_n(33));varlwindow.xiaozhou_s(window.xiaozhou_n(34));vardwindow.xiaozhou_n(0);vari{1:{symmetrical:h[default],asymmetric:newl[default]()},};vars(0,d[guid])();varui[1][asymmetric][encrypt](s);varci[1][symmetrical][encrypt](e,s);varw(0,d[arrayToHex])(c)u;console.log(w);returnw;}7、在浏览器调试运行成功后还得在无浏览器环境中调试成功这里推荐fiddler插入编程猫的插件8、这里说一次调试的注意事项如果无环境中调试出现报错说某个属性不存在可以根据报错的代码位置去浏览器环境定位打断点查看浏览器环境给的属性是什么然后复制浏览器的值去补环境如果无环境中调试出现比较复杂的值可以选择赋值一个{}或者把该代码删掉补环境需要耐心和时间这个2w行的代码大概需要补10处的环境代码有耐心就能调试成功windowthis;document{documentElement:}location{protocol:https:}navigator{userAgent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36}window.document{createElement:function(a){returncanvas/canvas}}is[$_IBIm(310)]||s[$_IBIm(273)]($_IBIm(310))[0];// 大概1850行改为 i ;s$_DEGHh(724)ins[$_DEGHh(115)]($_DEGIw(443))?functionp(){// 大概10470行改为 s false ? function p() {varuesetTimeout// 大概在9854行 改成var ue function(){};
返回列表