In questo articolo risolveremo il 25 ° compito dal sito
informazioni organizzativeSoprattutto per coloro che vogliono imparare qualcosa di nuovo e svilupparsi in una qualsiasi delle aree dell'informazione e della sicurezza informatica, scriverò e parlerò delle seguenti categorie:
- PWN;
- crittografia (Crypto);
- tecnologie di rete (Rete);
- inverso (Ingegneria inversa);
- steganografia (Stegano);
- ricerca e sfruttamento delle vulnerabilità WEB.
Inoltre, condividerò la mia esperienza in informatica forense, analisi di malware e firmware, attacchi a reti wireless e reti locali, pentesting e scrittura di exploit.
In modo che tu possa scoprire nuovi articoli, software e altre informazioni, ho creato
Tutte le informazioni sono fornite solo a scopo didattico. L'autore di questo documento non si assume alcuna responsabilità per eventuali danni causati a chiunque a seguito dell'utilizzo delle conoscenze e dei metodi ottenuti a seguito dello studio di questo documento.
Risolvere il compito OTP
Continuiamo con la seconda sezione. Dirò subito che è più difficile del primo, ma questa volta non forniscono il codice sorgente del programma. Non dimenticare la discussione qui (https://t.me/RalfHackerPublicChat) e qui (https://t.me/RalfHackerChannel). Iniziamo.
Fare clic sull'icona con la firma otp. Ci viene fornito un indirizzo e una porta a cui connetterci.
Ci colleghiamo e ci guardiamo intorno sul server.
Il flag che non possiamo leggere è il programma e il suo codice sorgente. Vediamo la fonte.
Riprendiamolo. Il programma accetta una password come argomento.
Inoltre, nella variabile otp vengono memorizzati 16 byte casuali.
Un file con un nome casuale viene creato nella cartella tmp (i primi 8 byte sono otp) e vi vengono scritti 8 byte casuali (i secondi 8 byte sono otp).
Per qualche motivo, il valore del file creato viene letto e confrontato con la password inserita.
C'è una vulnerabilità qui. Consiste nel salvataggio intermedio del numero generato in un file. Possiamo limitare la dimensione del file, ad esempio, a 0, quindi durante la scrittura e la lettura, la password verrà confrontata con 0. Puoi farlo in questo modo.
# ulimit -f 0
Ora eseguiamo il programma.
Otteniamo un errore. Non importa, può essere elaborato utilizzando lo stesso pitone.
python -c "import os, signal; signal.signal(signal.SIGXFSZ, signal.SIG_IGN); os.system('./otp 0')"
Otteniamo la bandiera ei nostri facili 100 punti. E continuiamo: nel prossimo articolo toccheremo il Web. Puoi unirti a noi a
Fonte: habr.com