如何提取脚本标记中的所有字符串。我想提取每个字符串并查找是否存在任何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()中定义,我如何识别每个字符串。
答案 0 :(得分:1)
这是一个非常复杂的问题,没有简单的解决方案。
你可以使用parser generator和ECMAScript语言的BNF定义(当然你可以在网上找到它)从目标源代码中提取字符串。
[编辑] 由于链接的解析器生成器是用JavaScript编写的,并且支持Web浏览器作为平台,因此您可以生成自定义ECMAScript解析器,将其嵌入页面中,并获取所有嵌入式脚本源(例如$('script').map(function(){return $(this).text();})
)。请注意,您的自定义解析器可以简单地回显已解析的字符串,例如通过console.log(...)
。