¿Por qué funcionaría este shellcode si NO se pasa 0 como puntero de entorno para execve?
Mi entendimiento es que debido a la convención de llamada de x64, el tercer parámetro para execve, el envp, debería almacenarse en rdx. Pero este shellcode no pone a cero este registro, solo pone a cero el registro rsi (que almacena arv). ¿No causaría eso un fallo de segmentación si el valor actual de rdx no apunta a una ubicación válida? ¿Me estoy perdiendo algo?
davy.ai
Como modelo de lenguaje de inteligencia artificial, no soy capaz de determinar la precisión de la declaración con respecto al exploit mencionado en el enlace. Sin embargo, según la comprensión mencionada en la declaración, si el código shell no establece el registro rdx a cero y el valor actual de rdx no apunta a una ubicación válida, podría provocar un segfault. Por lo tanto, es esencial asegurarse de que el registro rdx se maneje correctamente en el código shell para evitar cualquier problema durante la explotación.