webpack逆向-中远海运
本帖最后由 小陈 于 2021-8-25 01:34 编辑# 目标网站:
今天我们的目标就是这个aHR0cHM6Ly9zeW5jb25odWIuY29zY29zaGlwcGluZy5jb20v网站的登录加密。
# 第一步:抓包
来到网站之后,我们输入一下测试的账号密码,抓取登录包来看一下数据的格式。
如下图:
!(data/attachment/forum/202108/25/004101zn4mwzbczonz8tdr.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")
可以明显的看到密码的参数是加密的,接下来我们就要去源码里面寻找加密的位置,进行分析。
# 第二步:加密分析
首先,我们全局搜索password,在文件中找一下加密的位置。
!(data/attachment/forum/202108/25/004656b114gk1ir09s4s4s.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")
没有混淆,我们通过几次简单的定位来到提交参数的这个位置,这里显示:
```
var a = {
username: e,
password: Object(o.a)(t),
captcha: n
};
```
password也就是我们提交的密码这一参数,在这个位置的时候,加密是已经完成了的。我们在此之前下一个断点。
下断点刷新当前页面,可以看到成功在当前位置断下。
!(data/attachment/forum/202108/25/005117ed327zhrer1zgexr.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")
`n("MuMZ");`这种格式,上次在jdj里面提到webpack的基本形式,此时我们需要去到n这个函数内部。
!(data/attachment/forum/202108/25/005246bi9lskvl3ppv0imm.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")
直接跳转过来,我们寻找头部和尾部将这个函数扣下来放入编辑器中。如图:
!(data/attachment/forum/202108/25/005529f0vsvzu1jyw1swjs.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")
回到网页中来,我们看到这个函数的这个位置
!(data/attachment/forum/202108/25/005719pnrbsbhwl1sazp0s.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")
这是webpack的常见形式,在我们扣出来的代码中,我们想让程序正常的执行这个函数,我们定义一个全局变量 get_sign,在函数内部进行赋值。
!(data/attachment/forum/202108/25/010012s1k8wmm110jk8lji.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")
定义之后我们简单的测试一下这个函数,提示window未定义,那我们在全局定义一下window。
!(data/attachment/forum/202108/25/010106am1te1yyj2ieg1g0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")
此时,可以正常调用,那我们回过头来继续分析。
!(data/attachment/forum/202108/25/010248vrg89mmt6zbb4rwi.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")
从password的加密我们直接跳转过来,发现跳转到o这个函数这个位置,o这个函数又处于“MuMZ”这一模块里面,现在我们已经扣出来了webpack基本结构的代码,我们对其模块进行补充,首先补充的就是“MuMZ”这一模块,我们直接拿出来放在我们的编辑器中。
!(data/attachment/forum/202108/25/010620vafade4l834c7fc1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")
在“MuMZ”这一模块中有调用了这个东西,因为代码没有混淆 我们直接全局搜索,定位一下调用的这个模块。
!(data/attachment/forum/202108/25/010716j5aoroohctaraoto.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")
定位过来之后我们发现,这个模块里面调用了很多其他的东西,我们简单的看了一下,发调用的东西都在整个文件夹中,同时这个文件没有关于浏览器的一些元素,我们直接把这个文件的代码全部拿下来进行调用就可以了。
!(data/attachment/forum/202108/25/011102yc5ls1dsd21ss7l0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")
如上图所示,现在我们来测试一下程序是否可以正常运行。
!(data/attachment/forum/202108/25/011704cyy9wd9yk6jwpdfz.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")
正常运行,没有报错。接下来我们就看一下如何进行调用完成加密。
# 函数调用
## 方法一
将密码设置为window的一个属性进行传递。
!(data/attachment/forum/202108/25/012640t0cf0jg7088h878w.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")
## 方法二
直接设置为全局变量,进行传递。
!(data/attachment/forum/202108/25/012753lb4qb16b06bo6rb1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")
## 方法三
设置get函数进行包裹调用。
!(data/attachment/forum/202108/25/013150wh2asfw82mmzlh0c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")
## 方法四
函数包裹password当作参数传递。
!(data/attachment/forum/202108/25/013311u1v3qmll4cy322aa.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")
# 结束
至此,加密就已经搞定啦!可以通过python或者其他方式进行调用!
哥哥们晚安!
哥哥,执行到最后window.btoa的时候总是报window.btoa is not a function 哥哥上次给我说改对象,呜呜,我还没搞懂,望指教 安全的登录,现在都TM是,手机号+短信验证码,不给前端留机会,无解 webpack居然还能逆向 向大佬学习! gg为什么这么喜欢逆向呢
页:
[1]