Ret2lib + Printf leak - arm64
Ret2lib - Bypass NX con ROP (sin ASLR)
Compilar sin canario:
Encontrar offset
offset x30
Creando un patrón con pattern create 200
, usándolo y verificando el offset con pattern search $x30
podemos ver que el offset es 108
(0x6c).
Echando un vistazo a la función principal desensamblada, podemos ver que nos gustaría saltar a la instrucción para saltar a printf
directamente, cuyo offset desde donde se carga el binario es 0x860
:
Encontrar la cadena de system y /bin/sh
/bin/sh
Como ASLR está deshabilitado, las direcciones van a ser siempre las mismas:
Encontrar Gadgets
Necesitamos tener en x0
la dirección a la cadena /bin/sh
y llamar a system
.
Usando rooper se encontró un gadget interesante:
Este gadget cargará x0
desde $sp + 0x18
y luego cargará las direcciones x29 y x30 desde sp y saltará a x30. Así que con este gadget podemos controlar el primer argumento y luego saltar a system.
Exploit
Ret2lib - Bypass de NX, ASL y PIE con filtraciones de printf desde la pila
Compilar sin canario:
PIE y ASLR pero sin canario
Ronda 1:
Fuga de PIE desde la pila
Abusar de bof para volver a main
Ronda 2:
Fuga de libc desde la pila
ROP: ret2system
Fugas de Printf
Estableciendo un punto de interrupción antes de llamar a printf, es posible ver que hay direcciones para regresar al binario en la pila y también direcciones de libc:
Probando diferentes offsets, el %21$p
puede filtrar una dirección binaria (bypass de PIE) y el %25$p
puede filtrar una dirección de libc:
Restando la dirección de libc filtrada con la dirección base de libc, es posible ver que el offset de la dirección filtrada desde la base es 0x49c40
.
Offset x30
Ver el ejemplo anterior ya que el bof es el mismo.
Encontrar Gadgets
Al igual que en el ejemplo anterior, necesitamos tener en x0
la dirección de la cadena /bin/sh
y llamar a system
.
Usando rooper, se encontró otro gadget interesante:
Este gadget cargará x0
desde $sp + 0x78
y luego cargará las direcciones x29 y x30 desde sp y saltará a x30. Así que con este gadget podemos controlar el primer argumento y luego saltar a system.
Exploit
Last updated