Protezione dei canili dello stack e ROP

6

Per quanto ne so i canarini dello stack sono valori scritti nello stack che, se sovrascritti da un overflow del buffer, costringono l'applicazione a chiudere al suo ritorno.

La mia domanda è: se sovrascrivo sia EIP che stack perché voglio ROP qualcosa ... e non ritorno MAI .. riesci a creare un problema anche con i canarini?

    
posta John Smith 24.10.2012 - 19:01
fonte

2 risposte

3

Un canary di stack è ancora un problema, perché non puoi controllare l'EIP in un overflow del buffer basato sullo stack senza sovrascrivere l'indirizzo di ritorno (che è sopra il carny). Inoltre, la funzione che contiene l'overflow del buffer basato sullo stack deve essere restituita prima che l'indirizzo di ritorno danneggiato diventi il nuovo EIP.

Questo non è un problema per i puntatori penzolanti.

Devi passare più tempo con il tuo debugger! Non ci sono scuse per questo. Se avessi fatto un passo avanti nel processo di sfruttamento, lo sapresti!

    
risposta data 24.10.2012 - 19:25
fonte
2

In alcuni casi di overflow potresti sovrascrivere EIP, ma non toccare il valore delle canarie. Ecco la citazione dal libro "A Guide to Kernel Exploitation: Attacking the Core" di Enrico Perla:

A stack canary is a good protection scheme, but it suffers from a few problems: A particularly controlled overflow (e.g., an index-based overflow on an array saved on the stack) can write past the canary without touching it.

    
risposta data 24.10.2016 - 21:54
fonte

Leggi altre domande sui tag