Por lo tanto, el error del latido del corazón puede llevar a un desbordamiento de lectura de memoria, exponiendo (parte de) la memoria del proceso, porque lee la carga útil cuando en realidad no hay carga útil (o menos).
¿Pero para qué necesitas una carga útil, especialmente en un instante?
Parece que es solo memcpy'd en la respuesta. ¿Cómo se usa exactamente?
Editar :
Pregunta similar, respuesta muy interesante: ¿Por qué el cliente suministra la longitud del mensaje?
Edite en respuesta al comentario de TildalWave :
-
Esta pregunta no es un duplicado de 55116 . Estoy preguntando para qué se usa la carga útil. La otra pregunta es cómo funciona el exploit en general ("¿Cómo funciona exactamente el exploit de OpenSSL TLS (Heartbleed)?") Y ni siquiera contiene la palabra "payload".
-
Aclaración: parece que mi pregunta no está muy clara.
- Normalmente se usa un latido para verificar si el otro sistema todavía está allí, lo cual es básicamente una pregunta de sí / no. Entonces, ¿por qué existe una carga útil de tamaño enorme de 64 KB (Mark ya tiene los números de secuencia mencionados sin embargo)?
- El servidor no se preocupa por el contenido de la carga útil, simplemente lo copia en la respuesta (esperando que el cliente proporcione la longitud de la carga útil en lugar de verificarla, al menos antes de la solución), ¿verdad?
- ¿Qué tipo de datos pondría un cliente en la carga útil? ¿Un número? ¿Una palabra? ¿Una cadena al azar? Si es posible, proporcione un enlace a un archivo fuente (preferiblemente C) junto con las líneas de código relevantes.
- ¿Puede alguien proporcionar un ejemplo para un caso de uso que requiera que la carga útil sea más larga que, por ejemplo, 8 bytes? ¿Por qué sería una mala idea usar un número de secuencia hexadecimal de 8 bytes?