本次分析的网站:aHR0cHM6Ly9tLmN0eXVuLmNuL3dhcC9tYWluL2F1dGgvbG9naW4/cmVkaXJlY3Q9JTJGbXk=
1. 抓包
本次需要分析的是 password 参数。所以,在控制台全局搜索 `password:`,结果如下:
只有两个js文件,并且第一个文件看起来是登录相关的js操作。点进去看下,并且在js文件中搜索 `password:`,如下:
只有两处匹配结果,其中一处匹配结果中看起来像是加密的地方。废话不多说,打上断点,重新点击登录按钮,
页面成功断住了,并在控制台中输出如下内容,打印出来的结果跟password加密后的结果一致。加密位置定位成功。
2. 分析加密逻辑
Object(l["r"])({
userName: Object(u["g"])(r.value),
password: encodeURI(Object(u["c"])(s.value, Object(u["f"])(Object(u["g"])(r.value))))
});
在控制台分别输出如下内容:
其中 `s.value` 和 `Object(u["g"])(r.value)` 都是定值密码和账号。Object(u["c"]) 和 Object(u["f"]) 都是函数。
所以最终的加密,可以替代为:
encodeURI(Object(u["c"])(s.value, Object(u["f"])(Object(u["g"])(r.value))))
替换为如下:
encodeURI(T(pwd, F(username)))
3. 扣js代码
简化了加密代码,接下来就把关键代码扣下来,补全运行环境即可。该站点的加密方式为des加密。Object(u["c"]) 函数可以替换成如下代码: