<script>alert(1)</script>
11
本文章是某项目前端js解密 后续。
一、前言
前文写到,报文密文如何解密。但是我们在测试过程当中,发现生产密文的秘钥是随机生成的。所以下面会讲述如何固定秘钥。
首先,我要看下如何生成秘钥的。
前文我们知道,加密是使用AES,CBC模式加密,偏移量“1234567812345678”,16位。
从代码看到,最终秘钥t的值。所以我们想要固定秘钥,只需要修改js文件,在秘钥生成后,重新给它赋值一个固定的值。
如下图
然后在让浏览器加载修改后的js文件,这样就可以实现固定的秘钥。解密也比较容易。
我讲一下我常用的三种固定秘钥的方法。
第一种,通过chrome浏览器调试工具,替换加载的js。
源代码-替换,添加替换文件夹。
打开前面网页,找到对应的js,有单机,保存并覆盖。然后在返回替换,就可以看到我们替换的js了。同时我们修改js,固定秘钥。
下面是关键的一步,需要重新硬性加载网站使替换生效。方法如下:
输入信息抓包:
抓包后用我们的固定秘钥解密,成功。
第二种,我们已经知道了修变量t,就可以固定秘钥。
所以,我们用burpsuite抓js的responses报文,直接在返回包里面修改。
修改完会缓存在本地。
bp设置,【proxy】-【Options】-Intercept Sever Responses选项打勾
取消浏览器的调试的js替换功能。
在清空缓存硬性加载一下,抓js返回包,并修改js,固定t的值,我们这次把t值固定为【8888999988889999】16位。
输入手机号抓包
抓包后通过我们固定的秘钥进行解密,成功。
第三种,通过浏览器插件的方式,插件名【ReRes】,Chrome浏览器上的。
替换加载的js文件。操作比较简单,不细说。但macOS上有问题,实现不起来,win系统上可以。如果有谁知道啥原因,可以告诉我。