Closed Colorsssss closed 8 months ago
这是一个使用特定版本的obfuscator混淆的代码(>=2.15.4 javascript-obfuscator/javascript-obfuscator@5683e75a9148585c7efc0d3f48ea225b83cc1e3e, <2.19.0 javascript-obfuscator/javascript-obfuscator@9da81caf3d2dbba50ad57a42fe4f60415933f4c2)。此时StringArray仍使用简单的数组定义,但StringArrayCallsWrapper使用了两层函数的形式。
对于这种StringArray
没有明确特征的版本,应该使用Fallback模式通过匹配StringArrayRotateFunction
定位。
但是这个脚本的StringArrayRotateFunction
与后续业务代码合并到了一个表达式中,导致将业务代码错误的识别为了混淆代码。
以上是第一个问题。
这个脚本应该是在obfuscator基础上的魔改版本(或者说在使用另一个工具混淆后,使用了obfuscator二次混淆),有些string-array的编码格式和obfuscator的任何版本都对不上。
在解完第一次混淆后,你会发现代码中还会有数十处(局部的)string-array方式混淆,我并不觉得这是手动提取了一段段代码分别混淆的产物,应该是有专门的工具全自动操作。
因此,你需要反复调用obfuscator插件,直到出现Cannot find string list!
,表示已经找不到更多的string-array。
脚本链接在这 https://72f8db0415fd.7d36e417.ap-northeast-2.token.awswaf.com/72f8db0415fd/4027e7a6d188/d88522192a3d/challenge.js
lost输出了一下是window