Lo siento si esta publicación está en la sección incorrecta. Soy bastante nuevo en el campo de la seguridad y soy nuevo en stackexchange si esta publicación está en la sección incorrecta. Sería genial si se moviera para mí, también lo siento si tengo preguntas similares. Se me ha preguntado antes de lo que tienen, pero no pude encontrar una respuesta que me aclarara las cosas. Estoy divagando.
He estado estudiando los desbordamientos de búfer durante los últimos días y he encontrado un tutorial un enlace .
si observa al final, el atacante coloca algunos caracteres aleatorios en el búfer hasta que alcanza la dirección de retorno, el programa le da un fallo de seguridad, por lo que a continuación inserta caracteres aleatorios seguidos de una dirección (que es la dirección de memoria de la instrucción JMP ESP dentro de la dll adjunta al programa) seguida por la carga útil o el código de shell.
así que mi pregunta es por qué y cómo funciona este ataque, ya que él / ella está colocando el código de shell después de la dirección de retorno y no en el espacio del búfer como los ataques de desbordamiento de búfer habituales en máquinas de 32 bits. En otros ataques, el código de shell se colocaría dentro del espacio del búfer sin operaciones previas, la dirección de retorno se sobrescribiría para saltar a una dirección dentro del búfer y el código de shell se ejecutaría finalmente.
En este ejemplo, como se mencionó, el código de shell está después de la dirección de retorno, ¿cómo funcionaría? Dentro de la dll hay un asm __ (JMP ESP), por lo que la dirección de retorno primero irá a la ubicación de la memoria donde se encuentra esa instrucción en la dll, luego ejecutará la instrucción JMP ESP, pero ¿a dónde apunta ESP? ¿ESP apunta a la dirección de retorno en esta etapa o incluso a la EBP?
lo siento si no he explicado esta pregunta muy bien, hacer preguntas no es mi fuerte.