Estaba leyendo sobre ataques de retorno a libc en Wikipedia .
De acuerdo con lo que leí y entendí del artículo, el armado ASCII significa que los datos binarios se convierten en valores ASCII agrupándolos en fragmentos de 8 bits.
El artículo cita:
De hecho, con ASCII-Armoring, todas las bibliotecas del sistema (por ejemplo, libc) Las direcciones contienen un byte NULO. Sin embargo, este mismo concepto puede ser usado en un ataque similar y más avanzado conocido como return-to-plt, donde en lugar de volver a libc, el atacante usa el PLT funciones cargadas en el binario (por ejemplo, system @ plt, execve @ plt, sprintf @ plt, strcpy @ plt, etc ...).
¿Alguien puede explicar, por favor, cómo evita exactamente el armado ASCII el desbordamiento del búfer? No obtuve la parte que dice que las direcciones de la biblioteca del sistema contienen un byte NULO. ¿Y cómo return-to-plt
previene el desbordamiento del búfer? Busqué, pero no encontré mucha explicación con respecto a los ataques return-to-plt
.