Attualmente sto praticando il buffer overflow. E ho una domanda per te riguardo la fuzzing.
Sono in grado di sviluppare uno script Python che proverà diverse dimensioni del buffer per bloccare un'applicazione. Funziona bene e restituisce la dimensione del buffer a cui l'applicazione si è bloccata.
Tuttavia, il valore che ottengo dal mio script non è necessariamente la dimensione che "consente la riscrittura EIP" . Per trovare questa dimensione del buffer, di solito devo brancolare ...
Il problema è che, quando cerco il numero esatto di byte, sono costretto a:
- Avvia il mio debugger (edb-debugger) su kali.
- Avvia l'applicazione
- Avvia il mio script con +1 o -1 nella dimensione del buffer
- Verifica se EIP viene sovrascritto
Se questo non è il caso, ricomincio più e più volte ...
È un'operazione che fa perdere troppo tempo . Possiamo fare questo passo più velocemente? Con un'impostazione aggiuntiva nel debugger che riavvierà automaticamente l'applicazione fino a quando EIP non verrà sovrascritto? O con un'impostazione specifica in uno script?
Nel mio caso l'applicazione (crossfire) si blocca prima a 4377 byte. ma EIP non viene sovrascritto.
4378 byte, è la stessa cosa.
E 4379 byte, è buono !! EIP è sovrascritto!
Ma quando provo 4380 (o superiore), EIP non viene sovrascritto ... e non capisco perché.