1

我一直在 JS 混淆方面进行大量培训,开始了解所有高级概念的方法,但我最近发现了一个混淆代码,我相信它是某种形式的“本机 Javascript 代码”,我只是找不到任何关于这种类型的混淆:

这是一个小摘录:

'\141\75\160\162\157\155\160\164\50\47\105\156\164\162\145\172\40'

它是这样称呼的:

eval(eval('\141\75\160\162\157\155\160\164\50\47\105\156\164\162\145\172\40'))

由于代码是另一个人的工作,我在 JS 挑战中遇到了它,所以我没有发布完整的代码,所以我给出的示例不起作用,但完整的代码确实有效。


所以这是我的问题: 这是什么类型的代码?我在哪里可以了解更多信息?


任何建议表示赞赏:)

4

3 回答 3

6

它只是一个字符转义的字符串。您可以在任何浏览器的 JavaScript 控制台中阅读它:

console.log('\141\75\160\162\157\155\160\164\50\47\105\156\164\162\145\172\40')

将打印:

"a=prompt('Entrez "
于 2013-04-04T08:41:41.707 回答
1

它只是转义字符,一部分输出查询字符串,另一部分实际运行返回的字符串 - 尝试在控制台中调用它。

eval('\160\162\157\155\160\164\50\47\105\156\164\162\145\172\47\51')

可能有帮助?

于 2013-04-04T08:42:33.027 回答
0

这些数字是字符的 ascii 代码 ( http://www.asciitable.com/index/asciifull.gif )(八进制表示)。您可以将其转换为字符。当有人想要制作一个XSS attack,或者想要隐藏 js 代码时使用它。

所以你写的字符串代表:

 a=prompt('Entrez 

js 引擎,浏览器可以将八进制格式转换为“真实”字符串。有了eval功能,它可以运行。(如果“翻译”的代码没有语法错误)

于 2013-04-04T08:47:17.047 回答