JavaScript 异或加密解密实现与 XSS 利用示例
本文展示了使用 JavaScript 实现基于异或(XOR)运算的字符串加密与解密函数。通过固定密钥 0x12 对字符编码进行转换,代码演示了如何将明文转换为点分隔的数字串,以及反向还原过程。示例中包含使用 WScript 执行解密并触发弹窗的测试代码,揭示了该加密方式在 XSS 攻击中用于绕过过滤的潜在风险。
JavaScript 异或解密函数实现
定义名为 MyDecode 的解密函数,接收一个字符串参数 str。
{
初始化局部变量 i 和 k,并将结果字符串 str2 设为空字符串。
使用点号(.)作为分隔符,将输入的字符串 str 分割为数组 k。
启动一个 for 循环,索引 i 从 0 开始,遍历数组 k 的所有元素。
{
在循环体内,获取数组元素 k[i],将其与十六进制值 0x12 进行异或(^)运算,并通过 String.fromCharCode 将结果转换回字符,追加到 str2 中。
}
循环结束后,返回拼接好的解密字符串 str2。
}
定义变量 myrand,赋值为加密后的字符串 "46.97.115"。
调用 WScript 对象的 echo 方法,输出调用 MyDecode 函数解密 myrand 的结果。
JavaScript 异或加密函数实现
定义名为 Encrypt 的加密函数,接收一个字符串参数 str。
{
初始化一个数组 monyer 用于存储处理后的数据。
声明局部变量 i、s 和 str,其中 str 为函数参数。
启动一个 for 循环,索引 i 从 0 开始,遍历字符串 str 的每个字符。
{
在循环体内,获取字符 str[i] 的 Unicode 编码(charCodeAt),与十六进制值 0x12 进行异或运算,并将结果累加到 monyer 数组中。
每次迭代后,在 monyer 末尾追加一个点号(.)作为分隔符。
}
返回拼接完成的加密字符串 monyer。
}
调用 Encrypt 函数对包含脚本标签的字符串 "<script>alert('ok')</script>" 进行加密,使用正则表达式 /.$/ 替换掉末尾多余的字符(实际为移除最后一个点号),并通过 WScript.Echo 输出最终结果。
JS 单例模式会导致内存泄漏吗?闭包引用陷阱与排查方法
2026-11-05 17:29:14
JS reduce实战:数组去重、扁平化与分组统计
2026-11-05 13:05:36
JS代码怎么在线压缩?新手操作指南与工具推荐
2026-11-04 18:07:25
fflate 与 pako.js 性能对比:JS 解压库怎么选
2026-11-03 22:54:05
JS DOM查询性能优化:缓存引用与减少重排重绘
2026-11-03 22:48:27
相关标签:
