【JS逆向】天安财险登录AES | 每日JS

已迁移平台:segmentfault,搜索 erma0
换平台了,简书发什么都锁定,广告一堆,趁早倒闭吧。

发个库存,以后不玩了


第七天

JavaScript逆向练习7

0x01 目标网址

https://tianaw.95505.cn/tacpc/#/login

0x02 定位JS

1. 随便输入账号密码,滑动验证码,点击登录后,查看提交的参数,可以看到,在登录包里有一个jsonKey,是一串加密过的参数。

2. Ctrl+Shift+F调出搜索面板,搜索jsonKey,看到只有一个js结果。

点进第一个结果,点花括号格式化一下,Ctrl+FjsonKey,只有两个结果,而且第一个是赋值,所以在上面下断点。

4. 重新输入账号密码验证码,点击登录,JS被断了下来。

控制台输出一下参数看看:

1.png

可以看到加密参数是账号密码相关的一个对象。

跟进Encrypt发现是一个标准的AES

5. 再跟进去,发现进入了一个超级卡的JS,等半天加载出来之后,发现有8w+行,这个JS将近2M大小,实在没办法调试,所以直接引用外部(调试器自带)的Crypto算了。

严格来说再次不算成功逆向,因为并没有把JS从目标网站上拿下来,算是投机取巧了,因为如果这个网站引用的不是标准加密库(但凡有一点修改),我们就无法模拟出加密算法了。

0x03 改写JS

1. 先把调用函数拿过来。

Encrypt = function (l) {
    var n = c.enc.Utf8.parse("t171420100302rsa")
        , t = c.enc.Utf8.parse("t171420100302rsa")
        , e = c.enc.Utf8.parse(l)
        , a = c.AES.encrypt(e, n, {
            iv: t,
            mode: c.mode.CBC,
            padding: c.pad.Pkcs7
        });
    return c.enc.Base64.stringify(a.ciphertext)
}

function test() {
    return Encrypt('{"body":{"loginMethod":"1","name":"15555555555","password":"11111111"},"head":{"userCode":null,"channelCode":"101","transTime":1576301342700,"transToken":"","customerId":null,"transSerialNumber":""}}')
}

2. 再引用下Crypto

var c = new CryptoJS;
function CryptoJS (root, factory) {
  //代码块
}
2.调试结果

0x04 代码

省略

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容