原文中文,约2700字,阅读约需7分钟。
📝
内容提要
本文介绍了还原包含页面状态信息的动态数据 __dyn 参数的方法,通过全局搜索找到 StaticSiteData 模块,进而找到 jsmod_key 的赋值方式,最终得到了 __dyn 参数的值。同时,作者还介绍了如何收集模块的标识或者索引,并随机生成伪造参数。
🎯
关键要点
-
__dyn 是一个动态数据,包含页面状态信息。
-
通过全局搜索找到 StaticSiteData 模块,__dyn 对应的键名是 jsmod_key。
-
jsmod_key 的赋值方式是 c('ServerJSDefine').getLoadedModuleHash()。
-
使用 require 调用 ServerJSDefine 模块,验证结果是否与 __dyn 参数一致。
-
getLoadedModuleHash 调用 toCompressedString 函数,进一步查找其实现。
-
toCompressedString 的计算依赖于 $1 变量,但该变量为空数组。
-
在网页模块中找到模块的标识或索引,筛选出有效的标识。
-
通过正则表达式从 body 和 head 中提取模块标识,合并成一个数组。
-
遍历数组,生成 bitMap,表示数字存在性。
-
将 bitMap 压缩并转换为二进制数据。
-
最后将二进制数据转换为 base64,得到 __dyn 参数的值。
-
在收集模块标识时,可以随机生成伪造参数,长度在 115 到 265 之间。
🏷️