Quiero entender cómo se explota un proceso vulnerable de Internet en algunas computadoras para ejecutar código binario arbitrario.
Comprendo cómo se podrían usar los desbordamientos de búfer para sobrescribir la dirección de retorno para hacer que el proceso salte a una ubicación que no debía, pero no sé cómo es posible que un proceso ejecute un código binario arbitrario. recibe de un atacante.
Parece que si un atacante envía un código binario a un proceso, nunca se colocará en la sección .text, por lo que seguirá siendo no ejecutable, incluso si "devuelve" entra en él. Los desbordamientos de pila y montón no escribirían en la sección donde se almacena el código, por lo que aún tendrán un bit de no ejecución.
Editar: Para ser más claros, la parte principal que no entiendo es la siguiente:
- la sección .text donde se almacenan las instrucciones de CPU ensambladas binarias no se puede modificar
- la sección .data / .bss está marcada como no ejecutable por lo que la información allí solo se tratará como datos, nunca será ejecutada por la CPU