Regolazione dello stack di overflow del buffer

6

Sono abbastanza nuovo per bufferare gli overflow e sto esercitando in questo momento diversi tipi di attacchi di overflow del buffer. lo shellcode non è stato eseguito fino a quando non è stato riempito con NOP, anche se il suo set correttamente in memoria e il flusso di esecuzione funzionano come necessario.

Dopo le indagini, ho visto alcune persone che hanno scritto quanto segue:

"trova l'opcode per aggiungere esp, -1500 metti quei byte all'inizio dello shellcode rimuovere i nops "

Apprezzerei se qualcuno potesse aiutarti a spiegarlo!

Grazie in anticipo

    
posta Ahmed Taher 06.07.2013 - 04:23
fonte

3 risposte

3

Gli NOP tendono a essere contrassegnati dall'antivirus, quindi è possibile utilizzare un metodo alternativo per "far scorrere" l'esecuzione sul codice shell. Il modo in cui ti è stato detto era di aggiungere 1500 byte all'ESP, che (presumo) dovrebbe sostituire 1500 NOP, atterrando sul tuo shellcode.

Se non l'hai già visto, devi leggere corelan.be per fantastici tutorial di scrittura su BO. Qui è quello che spiega add esp

    
risposta data 09.07.2013 - 22:08
fonte
1

Ho trovato la risposta:

"StackAdjustment" = > -3500, # Modifica il puntatore dello stack all'inizio dello shellcode in modo che possa usare lo stack senza scrivere su se stesso.

    
risposta data 30.07.2013 - 03:00
fonte
0

In primo luogo, una dichiarazione di non responsabilità: dovrei accendere una VM e attraversarla per confermare la mia risposta. Davvero non ne faccio molto con gli exploit di Windows. Guardando rapidamente l'articolo credo che si stia modificando lo stack in modo da non corrompere il frame dello stack corrente. Quando il blocco di codice che si sta sfruttando per sovrascrivere la catena SEH restituisce la funzione prolog ripristinerà ESP da EBP, consentendo di riprendere l'esecuzione. Successivamente, quando viene lanciata un'eccezione, la sovrascrittura SEH ti darà il controllo.

    
risposta data 14.07.2013 - 04:23
fonte

Leggi altre domande sui tag