js_reverse/猿人学练习/14js加密js_fuck核心代码加密
2023-02-22 15:15:01 +08:00
..
2023-02-22 15:15:01 +08:00
2023-02-22 15:13:18 +08:00
2023-02-22 15:13:18 +08:00
2023-02-22 15:13:18 +08:00

知识点: js fuck和CryptoJS

解题思路

查看请求链接

请求

存在 uc 加密字段

断点进入

请求

call(num)方法触发函数, num是page的页码

call = function(num) {
    window.num = num;
    window.k = 'wdf2ff*TG@*(F4)*YH)g430HWR(*)' + 'wse';
    window.t = Date.parse(new Date())/1000;
    window.m = CryptoJS.enc.Utf8.parse(window.k);
    window.a = function(word){
            var srcs = CryptoJS.enc.Utf8.parse(word);
            var encrypted = CryptoJS.AES.encrypt(srcs, window.m, {
                mode: CryptoJS.mode.ECB,
                padding: CryptoJS.pad.Pkcs7
            });
            return encrypted.toString();
            };

继续调试代码,会发现js fuck乱码

请求

在控制台用.toString()进入虚拟机空间

请求

对比上下文,不难发现 window.t + '|' + window.num 就是加密前的原始值

加密方案是 CryptoJS.mode.ECB CryptoJS.pad.Pkcs7

密钥是 'wdf2ff*TG@*(F4)*YH)g430HWR(*)' + 'wse'

意外点

不知道为什么,翻页请求时会返回 500 错误

<!doctype html>
<html lang="en">
<head>
  <title>Server Error (500)</title>
</head>
<body>
  <h1>Server Error (500)</h1><p></p>
</body>
</html>

但重复再次请求又是可以正常返回的,我这里的解决办法是try.....except