js逆向tips-某思录登录
0. 写在最前
- 现在很多时候我们再网页上进行操作时都是用http协议进行一个交流,前端后也是如此,现在的开发模式大部分都是前后端分离的一个交互模式,那就意味着前端发送请求时也是和我们点击按钮一样去向后端发送一个请求,那这种请求就可以被模拟。 甚至是被一些自动化程序模拟以达到批量获取数据的目的。
- 因此为了防止被程序模拟,前端一般都会设置加密函数对正常用户在浏览器传来的数据进行加密,然后后端也会有一样的加密函数进行加密然后进行对比,即反爬虫技术,这些函数一般都设置在复杂的js代码里面,让破密者难以模拟复现
- 而js逆向要做的就是就是复现这些前端加密代码,然后伪装成正常用户与后端程序沟通以拿到返回体的正常的数据
- 此专栏是记录以下一些破解的有意思的验证,仅仅用作学习为目的,绝不会有任何盈利,如果损害到了网站开发者的利益,请立即联系我进行删除,本人邮箱:
zh00612@126.com
1. 触发登录抓包
2. 找到加密点下断点
首先随便输入一些错误的账号和密码,可以抓包发现登录后提交的参数有password和username均是在前端做了一些加密后再请求后端
再搜索栏找到加密位置
按照经验,有一个jsencode的加密函数名,大概了就是它了,我们加断点分析
3. 重复点击触发断点分析
我们找到加密函数
jsencode
后点击进定义点,我们可以发现jsencode
这个函数只有text
和aes_key
这两个参数,而text
传入的是我们的username
和passowrd
,而aes_key
是一个定值,因此我们只要复现加密对象Cryptojs
就可以了
可以观察到,
Cryptojs
是一个对象里面包含有很多的方法,因此我的思路是直接复现整个对象,直接复制整个js文件到本地进行调试
为了导出对象,我们定义了一个全局变量root对象,将Cryptojs赋值给他,这样我们可以达到复现加密的一个形式
加密后输出
console.log
的加密字符串和返回体一样,这样我们就成功模拟了前端加密,可以和后端进行交互
以上就是我的js逆向技术的分享,js文件在这个链接,欢迎评论与我交流: