Estoy haciendo una pregunta de práctica de examen, supongo que tengo una función como;
void func(char* arg)
{
char buf[32];
strcpy(buf, arg);
}
command break func:
-buf begins at 0xbffebfb0
-(gdb) x/2wx $ebp
0xbfebfd8: 0xbffec068 0x08048fe1
machine is 32 bit little endian, no defenses like aslr or dep
c) Desea ejecutar una carga útil / código de shell de 24 bytes de longitud, escriba hexadecimal ¿Los bytes que deben copiarse en el búfer para un exploit de desbordamiento? yo no sé realmente cómo crear desbordamientos de búfer.
Sin embargo, me gustaría escribir en '\ x90', pero no sé cuánto escribir y dónde te deja
d) Suponiendo que ASLR está habilitado, lo que hace que la pila se compense con 0-15 cada vez que se ejecuta. Describe una carga útil en forma de una impresión de python declaración que siempre obtendrá el código de shell de la parte c para ejecutar? ( Supongamos que la condición de la pila de la parte c se mantiene cuando el desplazamiento es 0).
Creo que la declaración impresa se vería como una pitón a continuación;
print shellcode + '\bytes filled in' + pack("<I", shellcode_addr) + pack("<I", return_addr)
Pero no puedo hacer mucho en la parte d sin saber la parte c, necesito ayuda sobre cómo resolvería c y d.