freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

JavaScript黑暗技巧:变异的Eval
w2sfoot 2022-03-09 08:57:45 98691
所属地 山西省

在JavaScript开发中,Eval常用在黑暗的领域,隐密执行一些不希望被别人看到的代码。但Eval特征明显,无论实现什么功能,都很容易被直接观察到,引起人们警觉。

eb1ae40b125d4b638fbb0c254239525f.jpeg

但Eval也可以有变异的形式,比如下面这句,也是Eval,但你能看出它是Email吗?

变异的Eval:

window[(14).toString(32)+(31).toString(32)+(10).toString(32)+(21).toString(32)]

执行效果:

1ac21bfd6d7740e2a76a316493fac218.png

这么奇怪的字符串怎么会是Eval呢?

且看变异Eval的技术原理:

1、Eval()等于window.eval(),

2、Window.eval()等于window["eval"],

3、“eval”这个字符可分解为:window["e"+"v"+"a"+"l"],

4、"e"+"v"+"a"+"l"又可写为:(14).toString(32)+(31).toString(32)+(10).toString(32)+(21).toString(32)

5、4中的字符是怎么得来的呢?如下:

parseInt("e",36) = 14;
parseInt("v",36) = 31;
parseInt("a",36) = 10;
parseInt("l",36) = 21;

6、最终eval就变形成了:

window[(14).toString(32)+(31).toString(32)+(10).toString(32)+(21).toString(32)]

还能正常使用吗?当然。

试用:

变形之后的Eval()跟之前使用完全一样,例程:

例1:

window[(14).toString(32)+(31).toString(32)+(10).toString(32)+(21).toString(32)]("console.log('test');");

例2:

window[(14).toString(32)+(31).toString(32)+(10).toString(32)+(21).toString(32)]("var a=1;var b=2;var c=3;console.log(a+b+c);");

执行效果如图:

5feb811e63294dfeb7cb295084e00074.png

更进一步变异:

以上,都是手动操作,如果使用专业的手段,如:JShaman,可以得到更好的效果。

来到JShaman官网平台,对上面的代码进一步混淆:

235f80b9576f474a89cfd4360a318332.png

注意:配置中,选择“成员函数加密”、“数值常量加密”:

3cf0da78586246ec879c5ac10f9fcd35.png

然后得到更加变异的代码:

f1a3117b62d44fbcbbb2262348a4d8dd.png

这时的Eval变成了:

window[(771383 ^ 771385)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](130148 ^ 130116) + (992937 ^ 992950)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](495187 ^ 495219) + (252852 ^ 252862)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](708261 ^ 708229) + (319087 ^ 319098)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](455467 ^ 455435)];

de58b2b7d58740f2935a38dae6ad84df.png

谁能认出这竟是个Eval呢?这下,可以放心地用它来做一些不可描述的事情。

# eval
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 w2sfoot 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
w2sfoot LV.5
山西沃奇德格科技有限公司
  • 29 文章数
  • 31 关注者
JavaScript奇技淫巧:隐形字符
2023-01-05
奇思妙想之用JS给图片加口令
2022-12-31
JavaScript黑魔法:不可阻止的“自动下载”
2022-12-31