2017-04-03 16 views
1

'인덱스 배열의 범위를 벗어난'jint를 + JSfuck 내가 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(); 

어느, 다음과 같은 자바 스크립트를 실행하는 경우 이스케이프 :

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

data 변수는이 유사한 JSfuck 문자열에 해당 https://pastebin.com/vmGAebW5

문제는 내가 항상 '색인이 (가)의 범위를 벗어난 얻을 수 있다는 것입니다 rray '예외, 자바 스크립트 브라우저에서 실행할 때 잘 작동합니다. 문제의 원인은 무엇입니까?

+0

deobfuscated 버전이 작동합니까? – Ryan

+0

문자열 선언을 @ infront, 특히 이스케이프 문자의 크기로 변경하는 것이 좋습니다. 그것은 당신의 문자열을 읽을 수 없게 만든다. 예 :'.Execute (@ "당신의 이스케이프 된 문자열 - 여기"); ' – Svek

+0

@ 라이언 나는 난독 화 된 버전에 접근 할 수 없지만 다음과 같이 가정해야한다. 도구는 그것을 deobfuscate 할 수 있습니다 : https://enkhee-osiris.github.io/Decoder-JSFuck/ – user2950509

답변

0

windows.location은 브라우저에서 제공하는 window 개체이므로 Jint에서 사용할 수 없습니다. 이런 종류의 코드를 실행할 수 있기를 원한다면 모든 브라우저 노출 객체를 조롱해야 할 필요가 있습니다. 이는 큰 작업입니다.

또한 SetValue('window.location', "")을 사용하고 있으며 유효한 호출이 아닙니다. 속성 이름은 점을 포함하면 안됩니다.

+0

잊어 버리면 '인덱스가 배열의 경계를 벗어났습니다'라는 원인을 어떻게 알 수 있습니까? – user2950509