Tengo un programa con un desbordamiento de búfer basado en la pila. Ejecuta PIE con ASLR y DEP, sin embargo, hay una sección de código ejecutable que se encuentra en una ubicación fija.
Sin embargo, esta región no contiene un int 0x80; gadget de ret Puedo controlar eax, ebx, ecx y edx. ¿Cómo puedo ejecutar syscalls arbitrarios para, por ejemplo, llamar a mprotect y leer en shellcode? Parece que cada syscall requiere un int 0x80, y no estoy seguro de cómo omitir esto.
Hay un gadget int 0x80 en el código relevante, sin embargo, sigue una instrucción jmp.
Por lo tanto, estoy buscando una manera de hacer syscalls sin 0x80, o una forma de hacer dos syscalls a la vez (para establecer protecciones de memoria, leer y ejecutar shellcode)