我正在尝试在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/