Come scrivere il buffer overflow nel Java

August 14

James Gosling di Sun Microsystems ha sviluppato il linguaggio di programmazione Java nel 1995. Si tratta di un obiettivo generale C ++ linguaggio derivato utilizzato in molti siti web sotto forma di applet e servlet che estendono la funzionalità di server web. Un buffer overflow è un bug di programmazione, non intenzionale o meno, che inizia scrivendo a celle di memoria adiacenti, che normalmente non consentite per ragioni di sicurezza. Java è in genere un po 'al sicuro da buffer overflow perché ha "il controllo dei limiti", che crea automaticamente le eccezioni, che rende il codice sicuro non può accedere accidentalmente memoria adiacenti non autorizzata. Tuttavia, l'accesso amministrativo al server Java può costringere Java per eseguire codice esterno che può forzare buffer overflow.

istruzione

1 L'accesso Java Native Interface (JNI) del Java Virtual Machine esecuzione di JavaScript. Questo è l'unico modo per provocare un overflow della memoria in Java, introducendo, codice non gestito esterna, come in C ++.

2 Aprire o creare un nuovo script nel database. Creazione di uno script standalone è la cosa migliore per isolare lo script buffer overflow, in modo da poter facilmente annullare l'effetto che provoca.

3 Incolla questo script:

char buf [64], in [MAX_SIZE];
printf ( "Inserire contenuto del buffer: \ n");
leggere (0, in, MAX_SIZE-1);
printf ( "Byte da copiare: \ n");
scanf ( "% d", & bytes);
memcpy (buf, in, byte);

Quindi eseguirlo. Nel browser, si dovrebbe essere chiesto "Byte per copiare" e inserire un numero arbitrariamente grande. Questo esempio di codice si basa su input dell'utente per causare l'overflow.