mercoledì 7 dicembre 2011

Protostar Stack2 writeup

Oggi ho risolto questo livello... Solo uno per oggi... Questo livello presentava questo codice:

Il codice si comprende abbastanza... E' molto chiaro... La funzione getenv() chiama una variabile d'ambiente, e se non esiste ci ritorna il primo messaggio d'errore... Il nostro compito è effettuare uno stack overflow ed assegnare a modified il giusto valore... Come al solito il buffer è definito in alto di 64 caratteri... Quindi ho provato un po' fino ad ottenere, grazie all'aiuto di andrewg che si trova nella chat di overthewire, la soluzione al problema...

La mia soluzione avrebbe funzionato sul mio sistema attaccante(lubuntu 11.10 modificato) ma sul sistema protostar non funzionava... Non perchè errata, ma perchè export non accetta quello che gli passavo... Non mi era assolutamente passato in mente di definire la variable e poi assegnarla tramite export... Non pensavo che così l'avrebbe accettata, pensavo che l'errore sarebbe rimasto... Invece così funziona... Non so assolutamente perchè... O l'accetti sempre o non l'accetti mai... Ed io che pensavo che la mia soluzione fosse sbagliata... Ecco qui il codice:

Poche righe anche questa volta... Io uso sempre python per la sua semplicità... E perchè si capisce al volo... In pratica stampiamo 64 A seguite dal valore della variabile modified che vogliamo sovrascrivere... Otteniamo il messaggio di successo... Ho dato solo uno sguardo a stack3.... Non ho mai trovato prima d'ora una variabile con gdb e objdump... Ogni aiuto è ben accetto...

Nessun commento: