声明
本文章中所有内容仅供学习交流使用,不得用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关。
若擅自使用本文讲解的技术而导致的任何意外,作者均不负责。文中若有侵权内容,请立即联系作者删除!
〇:友情提示
- 本文章已在微信公众号【逆向学习日记】发布,若在【CSDN】中无法全部查看,可以直接点击【js逆向–某公众号平台–登录请求参数pwd逆向分析(脱敏版)】查看。
- 在微信公众号【逆向学习日记】也可以阅读更多文章。
- 感谢关注微信公众号和阅读文章的朋友!
Ⅰ:目标
- 网址:aHR0cHM6Ly9tcC5kZW1vLnh4LmNvbQo=
- 接口:aHR0cHM6Ly9tcC5kZW1vLnh4LmNvbS9jZ2ktYmluL2JpemxvZ2luP2FjdGlvbj1zdGFydGxvZ2luCg==
- 目标:请求参数 pwd
Ⅱ:抓包分析
-
首先我们先进行登录,然后抓包分析。

-
我们可以看到pwd是加密了的,其实经验丰富的大佬,看到密文的时候就知道是什么加密了。但是为了学习,我们还是逐步分析。查看调用栈,同样有经验的大佬,肯定会观察调用栈中包含的js文件,一眼就知道loginpage这个js文件有可能,其他的可能都是打包生成的。我们直接在最开始的调用栈打上断点,并重新登录,触发断点。


-
此时程序断在我们的断点处,观察其右边的作用域,可以看到本地作用域中u对象含有我们的加密参数,此时我们就要看u是如何赋值的,我们向上观察代码。

-
可以看到不管走的哪个分支,对于u的赋值都是和c有关,此时向上观察代码看c的值是如何来的。

-
可以看到c是调用该函数传参进来的,此时我们在调用栈上一层打上断点,并重新登录触发断点,观察其参数。


-
此时程序断在该处,我们再次观察右边的作用域,发现在其中的一个闭包作用域中e对象含有我们的加密参数pwd,当然本地作用m对象也存在加密参数pwd。根据闭包的现象,那么我们直接在其外部函数观察e对象是否存在,可以看到e对象确实存在,此时直接在外部函数打上断点,重新登录触发断点。【之所以在本地观察,是因为最终还是回到外层函数中断点】。

-
此时观察右边本地作用域,发现e对象含有我们的加密参数,此时继续向上观察调用栈并打算断点,重新登录触发断点。

-
同样的还是在闭包的作用域发现加密参数,按照上面的步骤直接在外层函数打上断点,重新登录触发断点。

-
同样的本地作用域arguments接受了所有的参数,继续在上层调用栈断点,重新登录触发断点。

-
观察右边本地作用域可以看到d对象含有加密参数pwd,继续在上层调用栈断点,重新登录触发断点。


-
此时可以看到pwd的加密函数,以及控制台测试,确实是该函数加密的。此时只要分析p函数就行,其中r.pwd是我们输入的明文。其中 substr 是一个字符串方法,用于从字符串中提取子字符串。

-
我们直接单步进入p函数,并单步调试。

-
此时观察x函数是什么,继续单步调试。

-
此时看B函数是什么,仍然进行单步调试。以后就是单步调试,我这里就省略了,只贴关键函数就行,各位可自行调试。


-
可以看到这些关键的数值,通过百度搜索就是MD5的关键数字。

-
我们直接在在线加密工具测试是否为标准的MD5。

-
经过测试确定是标准的MD5算法,到此pwd的算法分析结束。同时有些同学也看到 fingerprint 是加密的,他就是浏览器的指纹,这里就暂时不分析了,后续有时间和大家再进行分析探讨。
Ⅲ:总结
以上就是整个逆向分析过程,只要大家逆向的案例多了,有些就能一眼看出大概是什么加密以及关键加密函数位置的调用栈。需要具体调试网页,公众号【逆向学习日记】回复【某公众平台】获取地址。
&spm=1001.2101.3001.5002&articleId=146230798&d=1&t=3&u=47955c6bbe4641188254e18dd458963b)
1580

被折叠的 条评论
为什么被折叠?



