欢迎转发,请勿抄袭
在某次渗透过程中,发现数据传输过程使用了aes加密。前后多次调试,没有见到明文密钥。后面发现使用了某个方法返回了一串数组方式。再通过数组还原成用于字符串加解密。同时发现惊天开发修复漏洞的逆天行为,每次修复漏洞,只是把密钥更换为更复杂的获取方式。让你解密不了数据包,以此达到你无法复测。那么分享一下如何快速获取密钥~
1
方式一
1、使用CryptoJS.enc.Utf8.stringify();方法能快速还原密钥。
先在js文件下断点到CryptoJS.AES.encrypt()。直接在js文件全搜索encrypt。
2、当到达断点位置时,使用上面的方法还原。构造后得到:
n.enc.Utf8.stringify(n.enc.Utf8.parse(i.get("version1")));
n.enc.Utf8.stringify(n.enc.Utf8.parse(i.get("version2")));
3、通过调试窗口,获取明文。
2
方式二
1、通过
CryptoJS.lib.WordArray.create([]).toString(CryptoJS.enc.Utf8))将数组进行还原。可在外部调试,也是先在js文件下断点到CryptoJS.AES.encrypt()。直接在js文件全搜索encrypt。
2、当到达断点位置时,先调试窗口打印出来,也可以通过右边的变量复制出来。
3、使用上面的方法,拼接得到
n.lib.WordArray.create([1146107734,1987719217,842216501,909588537]).toString(n.enc.Utf8);并在调试窗执行获取明文
3
方式三
1、使用工具进行还原,打开aeskiller,回复aeskiller获取软件
2、根据第二种方式获取数组