Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: _RaSH_ en 26 Mayo 2016, 18:01 pm



Título: Overflow en 64bit
Publicado por: _RaSH_ en 26 Mayo 2016, 18:01 pm
Buenas,
la cosa es asi, me tope con un problema que hace dias no puedo resolver y me puse a recordar con nostalgias las epocas de buscar ayuda en foros. A todo esto: sorpresa ! Pese a tener 8 años mi cuenta seguia abierta ! Alegria de estar publicando en este gran foro de nuevo !

Vamos a los bifes. testeando contra una aplicacion, un servidor TFTP de antaño, encontre un lindo Seg. Fault a la hora de ejecutar GET /<nombre de archivo>
Siguiendo la logica comun en estos casos levanto a mi buen gdb y me pongo a jugar con el fuzzer.

Citar
tftp> server 192.168.0.105
tftp> GET archivo_existente.txt // Lo recibo OK !
tftp> GET A x 1000 // Archivo inexistente, pero todo ok !
tftp> GET A x 1535 // Seg. Fault y crash

Hasta todo bien y es ahora donde comienza mi duda. Veamos el gdb.
(http://i.imgur.com/pxFAfLg.png)

Todas las pruebas que hice, despues de los 1535 caracteres sobreescriben el registro RBX.
Mi intencion con todo esto es sobreescribir el RIP para seguir adelante con la shellcode

Es la primera vez que intento explotar bajo 64bit. Veo que tienen sus diferencias con 32bit.

Bueno ahi dejo posteada la duda, si alguno quiere aportar alguna ayuda o critica, genial !
Saludos


Título: Re: Overflow en 64bit
Publicado por: AlbertoBSD en 26 Mayo 2016, 18:46 pm
Hay que ver el tipo de proteccion que tiene el sistema alguna proteccion en la pila u otros.

Que tftp es? para depurar el codigo y ver como llego a sobreescribir el rbx y ver si es controlable otro registro.

Saludos


Título: Re: Overflow en 64bit
Publicado por: _RaSH_ en 26 Mayo 2016, 19:05 pm
Hay que ver el tipo de proteccion que tiene el sistema alguna proteccion en la pila u otros.

Que tftp es? para depurar el codigo y ver como llego a sobreescribir el rbx y ver si es controlable otro registro.

Saludos

Dnsmasq v 2.45 - http://www.thekelleys.org.uk/dnsmasq/

Adicionalmente lo tenes que correr con parametro --enable-tftp --tftp-root=<directory>

Fijate que el fallo se da cuando el tftp-root es extenso, por ejemplo: /var/tftp/incoming/public/0/ como se detalla en: https://www.coresecurity.com/content/dnsmasq-vulnerabilities

Saludos !