lunedì 5 marzo 2012

Semtex level0 writeup

Ho trovato nel wargames Semtex le stesse caratteristiche dei wargames Abraxas ed hes2010 che tanto mi hanno entusiasmato... Il livello 0 si presenta come successo nell'Abraxas in una connessione ad una determinata porta e nell'esecuzione di qualche script... Come per tutti i wargames firmati OverTheWire, questo script bisogna scriverselo...Ed è quello che ho fatto... Citando le istruzioni ricevute dal wargames:
Get a shell
semtex.labs.overthewire.org

x86/elf: Connect to port 24000
amd64/elf: Connect to port 24001
ppc/mach-O: Connect to port 24002

Receive data until the port is closed.

Every second byte you receive is trash, ignore it.
The other bytes are an executable that shows you the password.

Quindi il mio scopo era ricevere questi dati ed unirli per formare un eseguibile che avrebbe rivelato la password necessaria per il livello 1... All'inizio non avevo ben capito la parte relativa ai second byte, pensavo fosse riferita ai byte inviati dalla porta quando questa si chiudeva(cioè nulla)... Si poteva di certo scrivere più chiaro, tipo ignora i byte pari(Ignore all par byte you receive)...

Questo aiuto a capire la frase mi è stato dato da deadbyte, un utente che spesso si incontra nella chat #social del server IRC di overthewire...

Per inserire questa condizione ho fatto uso di queste istruzioni sul sito python.it... Facendo uso dell'operatore modulo % ho inserito la condizione pari e dispari sulla variabile i utilizzata per conteggiare le iterazioni necessarie... Non ho ben capito perchè devo importare due volte i moduli di struct, ma sta di fatto che funziona questo script:


Per rendere il programma più generale, cioè per versioni a 32 o 64 bit di linux, ho messo la condizione sulla porta ricavata con la funzione calcsize... Quindi se è una distro a 32 bit usa la porta 24000, altrimenti la porta 24001... Non ho implementato la porta ppc, non saprei che fare...

Alla fine abbiamo questo file, gli diamo i permessi di esecuzione(chmod +x file) e lo eseguiamo... Livello 0 finito...

Nessun commento: