【JS逆向案列】某看准招聘网站逆向分析

声明

本文中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!

本文未经许可禁止转载,禁止任何形式的修改后进行二次传播,若有侵权,请联系作者删除!

逆向目标

  • 网站:aHR0cHM6Ly93d3cua2Fuemh1bi5jb20vZmlybS9yZWNydWl0LzBueF8zZ35+Lmh0bWw/a2E9Y29tLXJlY3J1aXQtbW9kdWxlLWV4cG9zZQ==

抓包分析

打开开发者工具或者F12,向下滑动页面加载数据接口,发现请求参数响应数据均为密文

逆向分析

kiv参数和b参数

首先刷新页面全局搜索kiv:发现只有一个js文件存在

选中在源面板中打开,ctrl+f搜索kiv:迅速定位,断点调试

发现请求参数bkiv分别由ta生成,观察调试得到如下js代码并删掉其余断点

a = (0, M._A)();
t = (0, M.mA)(n, {iv: a}).replace(/\//g, "_").replace(/\+/g, "-").replace(/=/g, "~");

n控制台打印输出

a = (0, M._A)();
n = '{"encCompanyId":"0nx_3g~~","pageIndex":2}';
t = (0, M.mA)(n, {iv: a}).replace(/\//g, "_").replace(/\+/g, "-").replace(/=/g, "~");

本地运行M未定义

继续向上跟进代码找到M的位置如下,发现是一个webpack,和之前的案列一样扣就完事

刷新页面选中n发现是一个c函数继续跟进,跳到了另一个runtimeXXX.js文件,发现是一个模块为空的webpack

文件代码很少,全扣!然后继续回到断点M处,选中n(12210)不过跳到了当前文件,ctrl+f搜索12210迅速定位,找到如下位置

这时就不能只扣12210的代码了,这里是属于一个加载器的模块会同时涉及到很多其他地方的模块,层层嵌套,如果一个一个的去扣会很麻烦,简单粗暴的方法就是ctrl+a全选该文件代码复制到本地,注意该代码很长,十几万哦

注意这里的第3行的self,在js中不能通过self来进行对象指向,浏览器可以,但本地不行,这里可以替换为window,注意哈十几万的代码有点卡哈

再回到之前扣的空模块的webpack代码那里,最下面也有个self,也给它替换掉

然后全局导出c函数,调用12210模块赋值给M,记得导入12210模块文件,运行 

到此,bkiv参数就逆向完成啦~,还剩下响应密文数据未逆向了

响应数据

不管响应数据如何加密,最终响应密文数据必然会解密加载到网页,这里可以刷新页面搜索decrypt关键字,发现和参数逆向文件一样

直接源面板打开搜索decrypt关键字,快速定位断点调试如下

发现AES加密关键字,多次刷新页面发现n.key不变,t会变化,e为返回的加密密文数据,

n.key = {
    "words": [
        1193550929,
        1635214187,
        1197891916,
        1111046002
    ],
    "sigBytes": 16
}
t = 'WLj4okdRTqIMoa7D' //变化的

 经过断点调试发现变量t就是参数kiv,这里我们不去扣该解密算法,先尝试标准算法库

key = {
        "words": [
            1193550929,
            1635214187,
            1197891916,
            1111046002
        ],
        "sigBytes": 16
    }
    r = Crypto.AES.decrypt(e.toString(), key, {
        iv: Crypto.enc.Utf8.parse(kiv),
        mode: Crypto.mode.CBC,
        padding: Crypto.pad.Pkcs7
    });
    r = r.toString(Crypto.enc.Utf8)

经检验该处算法就是标准的AES,到此全部逆向完毕,结果验证成功!

结果验证

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Red sir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值