Descargo de responsabilidad: estoy haciendo esta pregunta únicamente con fines educativos.
Estoy tratando de encadenar algunas llamadas de función usando programación orientada al retorno, explotando un binario vulnerable que usa strcpy() . Una de estas llamadas de función debe ser una llamada a system() (para ejecutar algún comando de shell). Desafortunadamente, la dirección de system() contiene un byte NULL que llevará a strcpy() a dejar de copiar la carga útil una vez que se observe este byte.
Por lo tanto, mi pregunta es: ¿cuál es el mejor enfoque para resolver este problema?
Ya he revisado libc para funciones similares a system() , pero no he encontrado nada. Otra idea mía sería llamar a fork() , exec() y wait() posteriormente. Sin embargo, esto aumentaría la complejidad de la carga útil.