2017-04-03 73 views
1

我試圖運行jint下面的代碼:Jint + JSfuck - 「指數數組的邊界之外」

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

的問題是,我總是一個人指數是一個超出界限rray'異常,即使JavaScript在瀏覽器中運行也能正常工作。任何想法是什麼導致這個問題?

+0

去混淆版本是否工作? – Ryan

+0

我強烈建議你改變你的字符串聲明,使其具有@ infront,特別是對於這種大小的轉義字符。它使你的字符串不可讀...例如:'.Execute(@「your-escaped-string-here」);' – Svek

+0

@Ryan我無法訪問去混淆版本,但我認爲它必須如下工具可以反混淆它:https://enkhee-osiris.github.io/Decoder-JSFuck/ – user2950509

回答

0

windows.location在Jint中不可用,因爲window對象由瀏覽器提供。如果你想能夠運行這種類型的代碼,那麼你需要模擬所有瀏覽器暴露的對象,這是一項艱鉅的任務。

此外,您正在使用SetValue('window.location', ""),我認爲這不是一個有效的電話。屬性名稱不應包含點。

+0

忘記了,我怎麼才能找出是什麼原因導致'索引超出數組範圍'? – user2950509

相關問題