From 00aa30b5b1495e94233883515c0a9decb1c2a82f Mon Sep 17 00:00:00 2001 From: luzhisheng Date: Thu, 23 Feb 2023 18:03:13 +0800 Subject: [PATCH] =?UTF-8?q?63js=E5=8A=A0=E5=AF=86=E4=BC=A0=E8=BE=93?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=B8=8E=E8=BF=94=E5=9B=9E=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E4=BA=8C=E8=BF=9B=E5=88=B6-RC4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../63js加密传输数据与返回数据二进制-RC4/readme.md | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 猿人学练习/63js加密传输数据与返回数据二进制-RC4/readme.md diff --git a/猿人学练习/63js加密传输数据与返回数据二进制-RC4/readme.md b/猿人学练习/63js加密传输数据与返回数据二进制-RC4/readme.md new file mode 100644 index 0000000..93e2ba4 --- /dev/null +++ b/猿人学练习/63js加密传输数据与返回数据二进制-RC4/readme.md @@ -0,0 +1,40 @@ +# 知识点:返回数据二进制 atob btoa crypto + +## 解题思路 +查看请求结果,发现是乱码 + +![请求](./img/1.png) + +请求体也是乱码 + +![请求](./img/2.png) + +打断点找到请求体加密点发现 + +![请求](./img/3.png) + +代码是 + + code = s(J['lzaCv'](J['qromH'](j, -0xb31 + 0x53 * -0x42 + 0x4b1 * 0x7), y['toString']())) + +改写 + + code = s(j(64) + 1); + +进入j函数 + +![请求](./img/4.png) + +发现是 `window['crypto']['getRandomValues']` 进行的加密这里需要用到 + + const crypto = require('crypto').webcrypto; + +得到一串加密字段 + +![请求](./img/5.png) + +接下来就是s函数。通过s函数能得到请求体中乱码值 + +![请求](./img/6.png) + +这里用的是 `crypto-js` 的`RC4`加密, \ No newline at end of file