introduzione

(questo articolo è stato inviato a Google per la valutazione ed è protetto da copyright, quindi se vuoi inviare la tua soluzione... è finito ieri... devi essere registrato nel tabellone affinché il tuo articolo venga preso in considerazione)

MindReader è stata presumibilmente una delle sfide più facili su GoogleCTF e richiede qualche supposizione. Quindi iniziamo

Prima di tutto nella pagina della sfida vediamo una casella con un pulsante "leggi".

La prima cosa che mi viene in mente è provare a testare "XSS", quindi sono stati testati un paio di tentativi XSS tra cui i seguenti:

<script>alert(test)</script>

Purtroppo la risposta non è stata quella prevista

Sono state provate anche tecniche di iniezioni di comando con un paio di "ls", "cmd", ma anche senza fortuna.

Ora il passo successivo è provare l'attraversamento della directory e si scopre che l'host è vulnerabile. Sono state tentate le traversate successive, ma anche queste senza fortuna

../.././../etc/passwd

../../../../etc/ombra

../../../../etc/resolv.conf

../../../etc/hosts

Quindi, dopo un paio di impronte digitali, si scopre che l'ambiente sta eseguendo una finestra mobile, quindi la pagina principale è stata riaperta ed è stato digitato "main.py" e lo script principale è stato visualizzato

Lo script sopra utilizza il framework "flask" e utilizza la funzione "index()" per eseguire le attività di lettura dei valori immessi nella casella di sfida.

La riga 6 ci dice che esiste una variabile d'ambiente che viene affermata prima di eseguire la funzione e Google ci ha presentato un suggerimento che questa variabile d'ambiente è l'effettivo FLAG.

E fornire l'host è vulnerabile all'attraversamento delle directory, quindi è necessario accedere alla variabile di ambiente in questo modo.

Proviamo ogni combinazione usando /proc/self/environ ma sembra che non abbiamo i permessi di accesso

Entra in gioco una buona conoscenza dei sistemi linux, /proc/self/fd ha dei link simbolici a /dev/fd e questo significa che in linux ci sono relazioni tra variabili d'ambiente e descrittori di file per permetterci di accedere all'ambiente dai descrittori di file o da /dev/fd che inizia da 0,1,2 e così via.

Quindi provare /dev/fd/0 non ci dà altro che legare /dev/fd/8

Abbinato all'attraversamento delle directory

/dev/fd/../environ

E la bandiera è stata catturata

Circa l'autore

Creo note sulla sicurezza informatica, note di marketing digitale e corsi online. Fornisco anche consulenza di marketing digitale, inclusi ma non limitati a SEO, annunci Google e Meta e amministrazione CRM.

Visualizza articoli