猿人学web端爬虫攻防大赛赛题解析_第十六题:webpack初体验

一、前言

webpack算是逆向过程中比较常出现的一种加密方式了,本质上是将网页源代码打包进JavaScript ,并对其进行压缩,如果不对其进行其他混淆操作的话还是很好还原的。第十六题虽然标的是简单级别,但对于新手来说,也有一些坑,不注意就会踩到,找不对方法真是头皮要想破。话不多说,开整

二、逆向过程

这题还是老样子,先观察XHR请求,发现有两个加密参数,一个m很明显是主要加密参数,t则看起来是个时间戳:
在这里插入图片描述
跟着请求的调用栈,找一下这个api请求发起的地方,进入webpack.js内:
在这里插入图片描述
一进来就很容易找到了两个参数生成的入口:

在这里插入图片描述
r.t确定就是时间戳,由下面这段代码生成:

Date[e(496)](new Date)[e(517)]()

还原出来实际上就是:

Date['parse'](new Date)['toString']()

另一个复杂点的参数r.m表面看起来是base64加密,但实际用时间戳自己试了下以后发现并不是,这里应该是重写btoa函数,于是顺着调用的地方找到这个函数的实际内容,这里这个window[u(208)]就是btoa函数:
在这里插入图片描述
在这个函数的底部,找到了最终的返回值,也就是下面这个return返回的内容:
在这里插入图片描述经过一番调试,发现最终的加密字符串是由三个部分拼接成,第一部分和第三部分是通过调用d函数实现加密,构成可加密字符串的首尾部分:
在这里插入图片描述
中间部分则是个md5加密,也是对在window[u(208)]内生成的一段字符串进行加密,这里要注意拿待加密的字符串用标准md5加密看看结果跟网站加密的是否一样,经过验证发现网站把md5也重写了,不过不难找,全局搜索一下就找到了具备位置,直接复制粘贴就完事。
在这里插入图片描述到这里主要的加密逻辑就分析完了,但扣代码的时候还是有两个坑把我绊了一下。

第一个坑在这里,这个叫_0x34e7的变量是个数组,里面放的就是后续各个函数内调用的各种参数,直接扣完所有代码跑,会发现生成的加密结果明显不对:
在这里插入图片描述
经过一番摸索,发现这个数组在函数内生效使用时,顺序被打乱了,而直接粘贴代码跑起来的时候不会把顺序打乱,不知道是不是环境问题,所以最后我的解决方案是直接把打乱后的这个数组复制出来:
在这里插入图片描述
上面这个问题解决了以后,满意欢喜的点击运行,成功得出看起来正确的加密字符串,继续满心欢喜的去模拟请求,结果返回了个token无效,当场懵逼。。。心想没道理啊,逻辑上没啥问题,代码也都抠出来了,加密加过看起来跟网站真实的业没啥差别,为啥就不对呢?这里真的是我脑子没转过弯来,才在这死磕了好久。
在这里插入图片描述btoa函数内部最后返回加密结果之前,window.md5加密的字符串是由这个switch循环生成的,在case 1内是有个try catch语句的,浏览器端正常运行不会走到catch报错这里,而自己在nodejs里运行时,走到<

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
引用\[1\]和\[2\]提供了关于解决npm报错的方法。根据这些引用内容,可能的原因是npm版本问或者node、node-sass、sass-loader版本不兼容。解决方法包括更新npm版本、解决依赖冲突、查看官方文档以确定兼容的版本等。具体步骤如下: 1. 首先,检查npm版本是否过低。可以尝试更新npm版本,使用命令`npm install -g npm`来更新npm。 2. 如果报错中提到了依赖冲突,可以尝试使用`--force`或者`--legacy-peer-deps`选项来强制解决依赖冲突。例如,运行`npm install --force`或者`npm install --legacy-peer-deps`。 3. 如果报错中提到了node、node-sass、sass-loader版本不兼容,可以查看官方文档以确定兼容的版本。根据\[3\]中的示例,可以尝试将node-sass和sass-loader的版本与node版本对应起来。例如,将"node-sass"的版本设置为"^6.0.1","sass-loader"的版本设置为"^7.0.3"。 请注意,具体的解决方法可能因项目和环境而异,建议根据具体报错信息和项目需求来选择合适的解决方案。 #### 引用[.reference_title] - *1* [【npm i 报错解决方法】npm ERR! code ERESOLVEnpm ERR!... While resolving: by-web@1.2.2npm ERR!](https://blog.csdn.net/zhangxueyou2223/article/details/127387251)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [ dev webpack@“^3.6.0“ from the root project npm ERR! npm ERR! Could not resolve dependency](https://blog.csdn.net/weixin_57662182/article/details/129475371)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值