Web逆向WebPack结构分析
2025-06-24 11:56:52
来源:新华网
webPack加载器分析JS逆向。
- 一般逆向思维。
- 处理webPack结构。
- 扣除提取相关方法。
- 实践案例。
一般逆向思维。
案例1: 一般web逆向登录某个网站,登录数据,如账号密码,将从前端加密到后端,所以前端会有加密代码。需要找到这个加密代码段来扣除,加密,方便爬虫或采集工具自动登录或其他操作,前端加密代码的一个难点是处理webPack包装结构的代码。
处理webPack结构。
webpack的名字c;事实上,它是一种包装机制,包装多个js文件(也可以是其他类型的文件,比如.png)统一打包js文件,当然,如果是webpack多打包机制,多个js文件的最终目的必须是压缩代码,提高代码执行效率。
webpack完全采用闭包机制(也就是说,通过作用域)避免几个需要压缩的文件中的函数有重名的现象(一人一个功能域可以避免函数重名的问题),也就是:
var jss = [ { 对象1}#xff00c;{ 对象2}#xff00c;{ 对象3} ]。
对象1也可以是函数形式:
{ getInfo:function(){ }。
这样,希望将不同文件的重名函数调用为:
jss[0].func1()。
jss[1].func1()。
这不仅解决了函数名称重名问题(即允许重名),您可以再次调用您想要调用的函数。
但是现在还有一个新的问题,就是有一些私人方法我不想被外界调用,也就是说,访问权限问题就像C+一样;+共有函数和私有函数是一样的。
webpack的解决方案是外部访问的所有共同方法都需要导出,即:
export。:function。(){ 。console。.。log。(。'模块2')。}。,]。)。n。(。0)。
实践案例。
受害者网站:https://m.ctyun.cn/wap/main/auth/login。
首先,通过跟栈法跟踪 password 加密的关键位置。
可以看到调用代码其中一些干扰代码,提取后如下:
encodeURI。(。b。[。"c"]。(。"123456789",b。[。"f"]。(。"[email protected]")。)。)。
ok,找到调用函数,需要下一步,
向上找b的生成位置。
webpack包装了类似o(7f6d)的形式。
如果不确定,将文件翻到顶部,发现它仍然是一种webpack多包装形式,如下图所示。
可见这种结构是webpack包装的。
ok,然后我们确定是webpack结构,然后我们需要扣除webPack加载函数。
下一步是刷新网页控制台输入o,跟进其内部。
这里就知道js是主加载器。
ok.这样,我们就可以得到webpack加载器的代码!!!
将webpack的主文件全部复制到新的js文件中(请注意,这是全部。!!几万行代码,如果是高手可以直接复制要用的代码,那就当我是p话吧。)
输入。webpackJsonp。获取所有子文件。
要调用webpack中的函数,需要导出内部方法。
将u函数导出给hanshu。
windows。.。hanshu。 =u。;
外部调用。
o。 =window。.。hanshu。;b。 =o。(。"7f6d")。;encodeURI。(。b。[。"c"]。(。"123456789",b。[。"f"]。(。"[email protected]")。)。)。;
这就成了!!。这种加密是有时间戳进加密操作的,所以 #xff00不能实时比较c;结果会有所不同,所以不要放对比截图。
下一篇文章将讨论实际操作中的一些问题;!!
喜欢逆向的学生可以关注,免费逆向工具和文章,谢谢支持。