overflow del buffer in script python

3

Sto sviluppando uno script per eseguire un buffer overflow per un compito a scuola. Tuttavia, sono bloccato in un punto in cui il mio carico utile viene iniettato attraverso la linea di comando, ma non viene iniettato attraverso il mio script python.

Quando inietto il mio carico dalla linea di comando:

 user@ubuntu:~/Documents/$ /home/user/Documents/easy $(python -c 'print"AAAAAAAAAAAAAA"\xa0\xf4\xff\xbf"')
 $ exit  //I get the shell.... 

L'indirizzo di ritorno

\xa0\xf4\xff\xbf

È l'indirizzo della mia slitta NOP in una variabile di ambiente.

Ora eseguo lo stesso comando completo attraverso il mio script python:

 path = "/home/dvddaver/Documents/easy AAAAAAAAAAAAAA\xa0\xf4\xff\xbf"
 os.system(path);

Tuttavia, quando eseguo il mio script python, ottengo un errore di segmentazione:

 user@ubuntu:~/Documents$ python bruteforcer.py
 Segmentation fault (core dumped)
    
posta user1090614 18.03.2014 - 20:43
fonte

2 risposte

2

Capisco che è un po 'tardi per il tuo incarico;) ma per gli altri studenti che potrebbero fare a tentoni al buio con problemi simili, ecco qui ...

Python è scritto in C, e l'eseguibile C sta lanciando l'errore di errore di segmentazione. Per capire l'errore di segmentazione è necessario eseguire Python stesso in gdb (GNU Debugger supponendo che tu sia su Linux / Unix) e quindi passare il tuo script come parametro e quindi scorrere il codice C scritto per Python.

È abbastanza probabile che tu abbia causato un overflow del buffer nell'interprete Python per aver causato un errore di segmentazione (quindi va bene!). Anche se non posso dirlo con certezza nel caso tu stia eseguendo qui.

Ho studiato in dettaglio una delle vulnerabilità di Python e ne ho parlato in modo blogger. Colpisce le versioni precedenti di Python 2 e 3. Ho scaricato il sorgente Python e ho creato il sorgente con il debugging.

Successivamente ho capito come funziona Python ed eseguito gli script Python sull'interprete costruito e li abbiamo passati in GDB.

Ho caricato il mio lavoro sul mio blog ( link ) - anche se pensavamo che stavamo cercando in modo specifico i programmi C che avevano buffer overflow disponibile in natura e mi è capitato di scegliere Python che è scritto in C.

Spero che questo ti fornisca alcune informazioni di base su ciò che tu o chiunque altro stai cercando di ottenere.

    
risposta data 14.12.2014 - 18:11
fonte
1

L'indirizzo nel tuo ambiente potrebbe essere cambiato perché l'ambiente è diverso.

Potresti vedere il coredump per trovare l'indirizzo corretto da usare (non devi usare una slitta per nop quindi :))

    
risposta data 19.03.2014 - 11:26
fonte

Leggi altre domande sui tag