1

如何提取脚本标签中存在的所有字符串。我想提取每个字符串并查找是否存在任何 shellcode。但是 javascript 在声明一个字符串时使用了几种方法,例如一个字符串可以是

 var y="Some text";
 var x1 = "3+4";
 eval("\144\157\143\165\155\145\156\164"); //string given in eval();

它可以是串联的格式

var x1 = "te ActiveX Co"; var x2 = "ntrol"; var x3 = x1 + x2; 
var x4 = "Execu" + x3;

即使使用简单的 javacript 代码在 eval() 或 document.write() 中定义,我如何识别每个字符串。

4

1 回答 1

1

这是一个非常复杂的问题,没有简单的解决方案。

您可以使用解析器生成器和 ECMAScript 语言的 BNF 定义(当然您可以在网络上的某个地方找到它)从目标源代码中提取字符串。

[编辑]由于链接解析器生成器是用 JavaScript 编写的,并且支持 Web 浏览器作为平台,因此您可以生成自定义 ECMAScript 解析器,将其嵌入页面中,并获取所有嵌入的脚本源(例如$('script').map(function(){return $(this).text();}))。请注意,您的自定义解析器可以简单地回显已解析的字符串,例如 via console.log(...)

于 2012-05-10T04:54:32.930 回答