
In questo articolo risolveremo il 25° incarico dal sito .
Informazioni organizzativeSpecialmente per chi desidera imparare qualcosa di nuovo e crescere in qualsiasi campo della sicurezza informatica, scriverò e parlerò delle seguenti categorie:
- PWN;
- criptografia (Crypto);
- tecnologie di rete (Network);
- reverse engineering (Reverse Engineering);
- steganografia (Stegano);
- ricerca e sfruttamento delle vulnerabilità WEB.
Inoltre, condividerò la mia esperienza in informatica forense, analisi di malware e firmware, attacchi su reti wireless e reti locali, esecuzione di pentest e scrittura di exploit.
Per rimanere aggiornato su nuovi articoli, software e altre informazioni, ho creato un e nel campo della sicurezza informatica. Inoltre, le vostre richieste personali, domande, suggerimenti e raccomandazioni .
Tutte le informazioni sono presentate esclusivamente a scopo educativo. L'autore di questo documento non si assume alcuna responsabilità per eventuali danni causati a chiunque dall'uso delle conoscenze e dei metodi acquisiti attraverso lo studio di questo documento.
Soluzione del compito otp
Continuiamo con la seconda sezione. Dico subito che è più difficile della prima, ma questa volta forniscono il codice sorgente del programma. Non dimentichiamo di discutere qui (https://t.me/RalfHackerPublicChat) e qui (https://t.me/RalfHackerChannel). Iniziamo.
Clicchiamo sull'icona con l'etichetta otp. Ci vengono forniti l'indirizzo e la porta per connetterci.

Ci connettiamo e ci guardiamo intorno sul server.

La flag che non possiamo leggere, il programma e il suo codice sorgente. Diamo un'occhiata al sorgente.

Analizziamolo. Il programma accetta come argomento la password.

Successivamente, nella variabile otp viene salvato un byte casuale di 16.

Nella cartella tmp viene creato un file con un nome casuale (i primi 8 byte di otp) e al suo interno vengono scritti 8 byte casuali (gli ultimi 8 byte di otp).

Per qualche motivo, dal file creato viene letto il valore e confrontato con la password immessa.

Qui si presenta la vulnerabilità. Essa consiste nel salvataggio temporaneo del numero generato in un file. Possiamo limitare la dimensione del file, ad esempio a 0, in modo che durante la scrittura e la lettura con la password venga confrontato 0. Possiamo farlo in questo modo.
# ulimit -f 0 ![]()
Ora avviamo il programma.
![]()
Ricevi un errore. Nessun problema, poiché può essere gestito con lo stesso Python.
python -c "import os, signal; signal.signal(signal.SIGXFSZ, signal.SIG_IGN); os.system('./otp 0')" ![]()
Otteniamo il flag e i nostri facili 100 punti. E continuiamo: nel prossimo articolo parleremo di Web. Puoi unirti a noi in .
Fonte: habr.com
