desbordamiento de búfer en el script python

3

Estoy desarrollando un script para realizar un desbordamiento de búfer para una tarea en la escuela. Sin embargo, estoy atascado en un punto en el que mi carga útil se inyecta a través de la línea de comandos, pero no se inyecta a través de mi script de Python.

Cuando inyecto mi carga útil desde la línea de comandos:

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

La dirección de retorno

\xa0\xf4\xff\xbf

Es la dirección de mi sled NOP en una variable de entorno.

Ahora, ejecuto el mismo comando completo a través de mi script de python:

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

Sin embargo, cuando ejecuto mi script de Python, aparece un error de segmentación:

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

2 respuestas

2

Entiendo que es un poco tarde para tu tarea;) pero para otros estudiantes que pueden estar buscando a tientas en la oscuridad con un problema similar, aquí va ...

Python está escrito en C, y el ejecutable C está lanzando el error de falla de segmentación. Para comprender la falla de segmentación, debe ejecutar Python en gdb (GNU Debugger suponiendo que está en Linux / Unix) y luego pasar su script como parámetro y luego pasar por el código C escrito para Python.

Es muy posible que haya causado un desbordamiento del búfer dentro del intérprete de python que haya causado un fallo de segmentación (¡eso es bueno!). Aunque no puedo decir con seguridad en el caso de que esté ejecutando aquí.

He estudiado en detalle una de las vulnerabilidades de Python y he publicado un blog al respecto. Afecta a versiones anteriores de Python 2 y 3. Descargué la fuente de Python y construí la fuente con la depuración activada.

A continuación, descubrí cómo funciona Python y ejecuté los scripts de Python en el intérprete creado y los pisé en GDB.

He subido mi trabajo en mi Blog ( enlace ) - aunque tengamos en cuenta que estábamos buscando específicamente programas de C que tuvieran disponible un desbordamiento de búfer en la naturaleza y que elegí Python, que está escrito en C.

Espero que esto te brinde una idea básica de lo que tú o cualquier otra persona está tratando de lograr.

    
respondido por el Yazad Khambata 14.12.2014 - 18:11
fuente
1

La dirección en su entorno puede haber cambiado porque el entorno es diferente.

Puede mirar el volcado central para averiguar la dirección correcta que debe usar (no tiene que usar un trineo nop a continuación)

    
respondido por el Tohmaxx 19.03.2014 - 11:26
fuente

Lea otras preguntas en las etiquetas