ENOWARS 9

ENOWARS 9 🚩 ParceroTV 🌐 Panoramica ParceroTV era un’applicazione web di condivisione video, simile a una versione in piccolo di YouTube, sviluppata con un backend in Rust usando il framework Actix-web e un database SQLite. Il servizio permetteva agli utenti di registrarsi, effettuare il login e caricare video e “shorts”. I video potevano essere contrassegnati come pubblici o privati, e gli utenti potevano creare playlist, commentare i video e visualizzare i profili di altri utenti. L’applicazione includeva anche una funzionalità “shorts” con didascalie auto-generate in spagnolo. ...

luglio 29, 2025 · 8 minuti · 1567 parole · AlBovo

UlisseCTF 2025

UlisseCTF 2025 🚩 Telemetry 🌐 Panoramica Telemetry è un’applicazione web che permetteva agli utenti di caricare file (massimo 10), registrando internamente tutti gli errori e gli eventi rilevanti in file posizionati in percorsi come logs/username/user-uuid.txt. L’app offriva anche un endpoint di test dei template, che consentiva agli utenti di verificare se un determinato template Jinja2 presente nella directory template potesse essere renderizzato correttamente. Analisi La challenge forniva un endpoint di registrazione, dove l’utente poteva scegliere un nome utente e un nome personalizzato per il file di log. Questi valori venivano poi usati per generare un UUID che identificava in modo univoco il file di log dell’utente. ...

aprile 8, 2025 · 13 minuti · 2733 parole · AlBovo

Pascal CTF Beginner 2025

Pascal CTF Beginner 2025 Web 🌐 Static Fl@g Questa challenge è una delle più semplici nel contesto della sicurezza web, in quanto si basa su un controllo lato client per rivelare la flag. La flag è incorporata nel codice JavaScript della pagina index, codificata in base64, il che la rende facilmente individuabile tramite ispezione del codice. Di conseguenza, non è necessario scrivere uno script per risolvere questa challenge. ...

marzo 26, 2025 · 10 minuti · 2003 parole · AlBovo

nullCon CTF 2023

nullCon CTF 2023 Web 🌐 TYpical Boss In questa challenge, è possibile notare come se si accede all’endpoint ‘/’ della challenge, il sito renderizzerà tutti i file e directory presenti nella pagina (includendo un file chiamato database.db, che era un database SQLite). Appena ho trovato questo file, ho provato ad analizzare il contenuto finché non ho trovato la password hashata dell’admin. Questo hash (in SHA-1) iniziava con un prefisso molto conosciuto per delle potenziali vulnerabilità in PHP, ovvero 0e. Infatti, questa password verrà ogni volta interpetata da PHP come un numero, nello specifico 0. L’unica via che avevo per bypassare quindi questo login era di trovare un plaintext che hashato in SHA-1 incominciasse anche lui per 0e. Questa è una repository molto utile per quanto riguarda il pentesting: Repository ...

maggio 28, 2024 · 8 minuti · 1641 parole · AlBovo

M0lecon CTF 2023 Beginner

m0lecon CTF 2023 Beginner Web 🌐 Unguessable Questa sfida è stata la più facile nella CTF (aveva più risoluzioni del sanity check, lol). Infatti, per risolverla, tutto ciò che dovevi fare era capire che il sito web recuperava la bandiera da un punto finale /vjfYkHzyZGJ4A7cPNutFeM/flag, e per ottenerla abbiamo aperto l’endpoint enumerato l’intero sito. ... function update(res) { // the function used by the site to get the flag if (res === "wrong") { card.style.backgroundColor = "red"; text.innerText = "Wrong, try again"; } else { card.style.backgroundColor = "green"; fetch("/vjfYkHzyZGJ4A7cPNutFeM/flag") .then((response) => response.text()) .then((str) => { text.innerText = str }); } card.removeAttribute("hidden"); } ... Secure Access La challenge aveva un allegato, un file di bytecode Python (.pyc), che una volta decompilato, aveva questa funzione: ...

maggio 27, 2024 · 7 minuti · 1365 parole · AlBovo

TFC CTF 2023

TFC CTF 2023 Web 🌐 Baby Ducky Notes All’apparenza, questa challenge sembrava un semplice sito per la condivisione di note, ma un rapido sguardo al codice sorgente ha svelato come leggere la flag. Infatti, il file database.db includeva una query per inizializzare la tabella delle note, configurata nel seguente modo: query(con, f''' INSERT INTO posts ( user_id, title, content, hidden ) VALUES ( 1, 'Here is a ducky flag!', '{os.environ.get("FLAG")}', 0 ); ''') Questo significava che chiaramente la flag non era nascosta e che il metodo più semplice per trovarla era effettuare una richiesta GET all’URL http://challs.tfcctf.com:port/posts/view/admin, dove la flag era visibile. ...

agosto 20, 2023 · 10 minuti · 2119 parole · AlBovo