第一章 JS逆向新手篇-3DES
提示:以下所有内容仅提供学习!没有任何商业行为。
一、网址
aHR0cHM6Ly9jai5lbG9hbmNuLmNvbS91c2VyL2xvZ2luP3NlcnZpY2U9aHR0cHMlM0ElMkYlMkZjai5lbG9hbmNuLmNvbSUyRnBjZ3dheSUyRmFwcDAwMSUyRnYxJTJGMDIlM0ZyZXQlM0RhSFIwY0hNNkx5OWphaTVsYkc5aGJtTnVMbU52YlElM0QlM0Qmdj0xNzExMDIyNDQ4NjQxCg==
二、需要逆向的字段
password
1.图片展示
登陆页面
需要逆向的字段
2.逆向思路
- 全局搜索
全局搜索就是在控制台中,搜索加密参数。如password这个关键词搜索出来有5个结果。我们只需要看js文件
- js文件内搜索
现在我们只需要对这三个js文件进行搜索,发现第一个文件有password字段数量最多,有很大可能在这里。
- 找到加密入口
这个地方很有可能。因为出现了加密字段 encryptByDES 还有登陆表单提交的的字段 username password service
我们可以验证一下,再此下断点。
- 成功断点已经断到,这个里面的判断是获取service的中有没有包含 jie borrowtest jieuat 这三个字段。[indexOf:获取下标,没有就会返回-1]。所以会走else的分支。
- 进入正确分支
可以看到加密位置已经找到,我们进去看看。
- 进入加密函数内部
进来一看,就是标准的 CryptoJS加密。所以我们直接复现就好
3.JS复现
代码如下(示例):
//先引用加密模块,然后直接复制加密函数所有内容即可。
const CryptoJS = require('crypto-js')
//复现3DES函数
function encryptByDES(t,e){
var a = CryptoJS.enc.Utf8.parse(e);
try {
var s = CryptoJS.DES.encrypt(String(t), a, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
})
} catch (t) {
console.log(t)
}
return s.toString()
}
var t = 123456
var e = "e9284d45-cf2a-4e46-9367-f122413ca6b0"
console.log(encryptByDES(t, e));