Actualmente estoy practicando desbordamiento de búfer. Y tengo una pregunta para usted con respecto a fuzzing.
Soy capaz de desarrollar una secuencia de comandos de Python que probará varios tamaños de búfer para bloquear una aplicación. Funciona bien y devuelve el tamaño del búfer en el que se bloqueó la aplicación.
Sin embargo, el valor que obtengo de mi script no es necesariamente el tamaño que "permite la reescritura de EIP" . Para encontrar este tamaño de búfer normalmente tengo que andar a tientas ...
El problema es que cuando busco el número exacto de bytes, me veo obligado a:
- Iniciar mi depurador (edb-debugger) en kali.
- Iniciar la aplicación
- Iniciar mi script con +1 o -1 en el tamaño del búfer
- Comprueba si el EIP está sobrescrito
Si este no es el caso, comienzo una y otra vez ...
Es una operación que desperdicia mucho tiempo . ¿Podemos hacer este paso más rápido? ¿Con una configuración adicional en el depurador que reiniciará automáticamente la aplicación siempre que no se sobrescriba el EIP? ¿O con una configuración específica en un script?
En mi caso, la aplicación (fuego cruzado) se bloquea en 4377 bytes primero. pero el EIP no se sobrescribe.
4378 bytes, es lo mismo.
Y 4379 bytes, es bueno !! ¡EIP está sobrescrito!
Pero cuando intento 4380 (o superior), el EIP no se sobrescribe ... y no entiendo por qué.