L'exploit di overflow del buffer funziona con gdb ma non senza

6

Sto imparando i buffer overflow e sto sviluppando il mio primissimo exploit.

C'è un processo del server che ascolta un socket e avvia un nuovo processo per ogni client. Il processo figlio ha una vulnerabilità di buffer overflow che sto sfruttando.

Il mio exploit funziona se avvio il server usando gdb, tuttavia ottengo un segfault quando viene eseguito il codice exploit se avvio semplicemente il server senza gdb.

La mia domanda è: gdb disattiva automaticamente alcuni meccanismi di protezione, come la protezione da aslr / stack ecc? Quale sarebbe una possibile spiegazione di questo comportamento?

Ho compilato il server con -zexecstack -fno-stack-protector, non riesco ancora a sfruttarlo senza gdb.

Questo è su Debian x86. Eseguendo il server con gdb intendo che eseguo, gdb server 'e poi digito, eseguo' nella console gdb, nessun breakpoint o altro. In questo modo il mio exploit ha successo (effettua una richiesta di arricciatura sul mio server)

    
posta Andrei Socaciu 25.12.2015 - 22:09
fonte

2 risposte

1

GDB usa un hook di debug + è pensato per usare i simboli di debug e gestirli, e altera il comportamento effettivo. Quindi, è chiaro che alcuni artefatti appariranno sicuramente

    
risposta data 18.09.2016 - 20:04
fonte
0

Per codeblog :

Starting with GDB version 7, first appearing in Ubuntu with Karmic (Ubuntu 9.10), ASLR is turned off (via the ADDR_NO_RANDOMIZE personality flag) for the debugged process. If you want a more realistic view of how a process will appear in memory, you must “set disable-randomization off” in gdb.

    
risposta data 25.12.2015 - 22:44
fonte

Leggi altre domande sui tag