2017-04-03 4 views
1

私はJINTに次のコードを実行しようとしている:JINT + JSfuck - 「インデックスが配列の境界外です」

次のJavaScriptを実行され、時にエスケープされていない、
Jint.Engine engine = new Jint.Engine(); 
var result = engine.SetValue("data", data).Execute("(/\\n(.+)/.exec(eval(data.replace(/\\s+/, \"\").slice(0, -2)))[1]);").GetCompletionValue(); 

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

data変数は次のようにJSfuck文字列に対応:https://pastebin.com/vmGAebW5

問題は、私はいつも「インデックスはAの境界外だっ得るということですrray '例外は、javascriptがブラウザで実行されているときに正常に動作します。何が問題を引き起こしているかに関する任意のアイデア?

+0

deobfuscatedバージョンは機能しますか? – Ryan

+0

私はあなたの文字列宣言を@ infrontのように変更することを強く勧めます。特に、このようなエスケープ文字の場合、それはあなたの文字列を読むことができなくなります...例: '.Execute(@"あなたのエスケープ文字列 - ここに ");' – Svek

+0

@Ryan私は難読化されたバージョンにアクセスできませんが、ツールは、それをdeobfuscateすることができます:https://enkhee-osiris.github.io/Decoder-JSFuck/ – user2950509

答えて

0

windows.locationは、オブジェクトがブラウザによって提供されているため、Jintではご利用いただけません。この種のコードを実行できるようにするには、ブラウザーで公開されているすべてのオブジェクトをモックする必要があります。これは大きな課題です。

SetValue('window.location', "")また、私は有効な呼び出しではないと想定しています。プロパティ名にはドットを使用しないでください。

+0

それを忘れて、「インデックスは配列の境界外でした」原因を突き止めるにはどうすればいいですか? – user2950509

関連する問題