说明:
本文只针对新手入门了解,高手绕道。
只做技术性研究,请勿用于非法渠道。
目标
https://www.gm99.com/
前言
1、首先准备Chrome内核浏览器,我用的360极速版浏览器。
2、打开目标网址,按F12或者网页空白处右键审查元素(有的浏览器叫检查),打开开发者调试工具。
3、基础不好的看下之前简单得文章,这里不做过多描述。
正式开始
1、随意输入账号密码,点击登录,查看登录请求发现password:被加密。如下图:
2、懂一点前端应该可以看到这个用的jquery里面有个ajax请求,鼠标放到juqury-1.7.1.js上可以看到,这个发表的函数调用顺序,也就是栈。
3、点击函数后面提示可以跟到函数调用位置,一般情况如果能看到ajax发包,进上一步,基本就是组包位置。如果调用比较复杂就需要跟栈了,这里ajax上一个s.login看字面意思大概率就是了。点进去看看。
4、可以看出明显ajax请求data就是传输的数据。这里可以看到,data=p 往上看p是一个对象其中包含password,等于r,再去看r等于g.encode(t.password, s)。大概率就是这个位置加密。
5、下断点,重新登录,断到183行,可以看到g.encode(t.password, s)第一个参数就是明文,第二参数时间戳。
控制台输出可以看到直接返回加密后的密文。
至此加密位置算是找到了,其实用之前几篇文章简单搜索关键词也是可以定位到这里。本次主要知识点是如何抠webpack模式代码。
webpack区分以及简要讲解。
当前断点位置是 g.encode(t.password, s)加密函数调用g对象,这个函数根本没有定义,肯定是对象中其他地方定义。往上翻如下图,g是new出来的,再看大方法, function(t, e, n) 前面是个逗号。
再往上看,这个函数是被括号+中括号包裹起来的说明,是一个数组,可以理解pytohn中一个列表中包含多个def函数。最外层的括号,是执行函数传参,一直翻到上面函数开始位置。发现是一个自执行函数。
为了方便查看复制整个代码到本地notepad++语言选择javascript,视图中折叠所有。展开第一个函数,和函数自执行括号中参数如下图。
这个就是webpack的结构体。
本地模拟下大概这个样子:
!function(x){
function xxx() {
//构造函数,使用call方法或者apply 加载模块
return