我正在尝试在jint中运行以下代码:

Jint.Engine engine = new Jint.Engine();
var result = engine.SetValue("data", data).Execute("(/\\n(.+)/.exec(eval(data.replace(/\\s+/, \"\").slice(0, -2)))[1]);").GetCompletionValue();


不转义时,它正在执行以下javascript:

(/\n(.+)/.exec(eval(data.replace(/\s+/, "").slice(0, -2)))[1]);


data变量对应于JSfuck字符串,类似于:https://pastebin.com/vmGAebW5

问题是,即使在浏览器中运行JavaScript时,我总是会收到“索引超出数组范围”的异常。关于导致问题的原因有什么想法?

最佳答案

windows.location在Jint中不可用,因为window对象由浏览器提供。如果您希望能够运行这种代码,则需要模拟所有浏览器公开的对象,这是一项艰巨的任务。

另外,您正在使用SetValue('window.location', ""),我认为这不是有效的呼叫。属性名称不应包含点。

关于javascript - Jint + JSfuck-'索引超出了数组的范围',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43185381/

10-11 13:32