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.