In ritorno a libc come fai a sapere l'indirizzo di system () in una macchina remota?

0

Ho il seguente scienarion:

un programma vulnerabile in esecuzione su un server e accessibile tramite netcat

Ho una copia di quel programma localmente e posso sfruttarla localmente usando ROP:

./vuln garbage + &system() + &exit() + &"/bin/sh"

ora voglio sfruttarlo da remoto, quindi tecnicamente eseguirò questo comando:

echo -e "garbage + &system() + &exit() + &/bin/sh" | nc host port

Il mio problema è: non so cosa sia & system () sulla macchina remota. C'è un modo per ottenerlo senza forza bruta, ovvero: provare tutti gli indirizzi di memoria da 0x00000000 - > 0xFFFFFFFF

ps: & exit () è trascurabile ma buono

    
posta AK_ 12.05.2014 - 09:19
fonte

1 risposta

2

In base a questo reddit post. I seguenti metodi possono essere seguiti per ottenere l'indirizzo system () su una macchina remota per il successivo ritorno dello sfruttamento di 2 libc.

  1. Nessuna ASLR: Scopri la loro versione di libc / msvcrt. Dovrebbe (Windows non garantisce che le librerie condivise di Linux non vengano caricate allo stesso indirizzo ogni volta). Trova l'indirizzo del sistema, usalo.
  2. ASLR parziale (senza torta): Il file binario originale verrà caricato nello stesso posto ogni volta (ancora nessuna garanzia su Windows). Trova la voce della funzione libc / msvcrt nel GOT / IAT, usa quell'indirizzo.

  3. Full-ASLR: Hai bisogno di una perdita di informazioni.

risposta data 15.05.2014 - 08:27
fonte

Leggi altre domande sui tag