Skip to content

Commit 373ae0d

Browse files
committed
Updated site
1 parent f67b51f commit 373ae0d

File tree

8 files changed

+25
-27
lines changed

8 files changed

+25
-27
lines changed

it/ctf/ctfatac/index.html

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,8 @@
109109
"keywords": [
110110
"ctfatac", "ctf", "binary", "crypto", "web", "ctfatac2025"
111111
],
112-
"articleBody": "Ecco la traduzione in italiano, mantenendo invariati termini tecnici e nomi di programmi/codice.\nCTF@AC 2025 Web 🌐 money Analisi La challenge espone una dashboard minimale che supporta plugin di terze parti. Quando carichiamo un plugin, la piattaforma ci permette anche di scaricare quelli esistenti (incluso l’ufficiale flag.plugin).\nExploit Dopo aver scaricato flag.plugin, notiamo che è cifrato. Il file server.py contiene sia la chiave sia la funzione per decifrarlo, quindi possiamo decifrarlo in locale usando decrypt_file.\nKEY = b\"SECRET_KEY!123456XXXXXXXXXXXXXXX\" def decrypt_file(input_path, output_path, key): with open(input_path, \"rb\") as f: data = f.read() iv = data[:16] ciphertext = data[16:] cipher = AES.new(key, AES.MODE_CBC, iv) plaintext = unpad(cipher.decrypt(ciphertext), AES.block_size) with open(output_path, \"wb\") as f: f.write(plaintext) Il init.py del flag.plugin decifrato contiene il seguente codice:\nimport json, sqlite3, pathlib, time, uuid import os plugin_dir = pathlib.Path(__file__).resolve().parent manifest_path = plugin_dir / \"plugin_manifest.json\" name, version = \"Widget\", \"1.0.0\" if manifest_path.exists(): try: m = json.loads(manifest_path.read_text()) name = m.get(\"name\", name) version = m.get(\"version\", version) except Exception: pass thumb = thumb = f''' ",
113-
"wordCount" : "5596",
112+
"articleBody": "CTF@AC 2025 Web 🌐 money Analisi La challenge espone una dashboard minimale che supporta plugin di terze parti. Quando carichiamo un plugin, la piattaforma ci permette anche di scaricare quelli esistenti (incluso l’ufficiale flag.plugin).\nExploit Dopo aver scaricato flag.plugin, notiamo che è cifrato. Il file server.py contiene sia la chiave sia la funzione per decifrarlo, quindi possiamo decifrarlo in locale usando decrypt_file.\nKEY = b\"SECRET_KEY!123456XXXXXXXXXXXXXXX\" def decrypt_file(input_path, output_path, key): with open(input_path, \"rb\") as f: data = f.read() iv = data[:16] ciphertext = data[16:] cipher = AES.new(key, AES.MODE_CBC, iv) plaintext = unpad(cipher.decrypt(ciphertext), AES.block_size) with open(output_path, \"wb\") as f: f.write(plaintext) Il init.py del flag.plugin decifrato contiene il seguente codice:\nimport json, sqlite3, pathlib, time, uuid import os plugin_dir = pathlib.Path(__file__).resolve().parent manifest_path = plugin_dir / \"plugin_manifest.json\" name, version = \"Widget\", \"1.0.0\" if manifest_path.exists(): try: m = json.loads(manifest_path.read_text()) name = m.get(\"name\", name) version = m.get(\"version\", version) except Exception: pass thumb = thumb = f''' ",
113+
"wordCount" : "5583",
114114
"inLanguage": "it",
115115
"image":"https://opengraph.githubassets.com/eccdc445364e4f9dcbece7bb7f178f0756be13a48717c78ec94bf78c35861b9a/PascalCTF/PascalCTF.github.io","datePublished": "2025-09-16T00:00:00Z",
116116
"dateModified": "2025-09-16T00:00:00Z",
@@ -211,7 +211,7 @@ <h1 class="post-title entry-hint-parent">
211211
<div class="post-description">
212212
Alcune writeup della ctf CTF@AC edizione 2025.
213213
</div>
214-
<div class="post-meta"><span title='2025-09-16 00:00:00 +0000 UTC'>settembre 16, 2025</span>&nbsp;·&nbsp;27 minuti&nbsp;·&nbsp;5596 parole&nbsp;·&nbsp;Paolo&nbsp;|&nbsp;Traduzioni:
214+
<div class="post-meta"><span title='2025-09-16 00:00:00 +0000 UTC'>settembre 16, 2025</span>&nbsp;·&nbsp;27 minuti&nbsp;·&nbsp;5583 parole&nbsp;·&nbsp;Paolo&nbsp;|&nbsp;Traduzioni:
215215
<ul class="i18n_list">
216216
<li>
217217
<a href="https://pascalctf.github.io/en/ctf/ctfatac/">🇬🇧 En</a>
@@ -287,9 +287,7 @@ <h1 class="post-title entry-hint-parent">
287287
</details>
288288
</div>
289289

290-
<div class="post-content"><p>Ecco la traduzione in italiano, mantenendo invariati termini tecnici e nomi di programmi/codice.</p>
291-
<hr>
292-
<h1 id="ctfac-2025">CTF@AC 2025<a hidden class="anchor" aria-hidden="true" href="#ctfac-2025">#</a></h1>
290+
<div class="post-content"><h1 id="ctfac-2025">CTF@AC 2025<a hidden class="anchor" aria-hidden="true" href="#ctfac-2025">#</a></h1>
293291
<p><img alt="ctf at ac logo" loading="lazy" src="/images/[email protected]"></p>
294292
<h2 id="web-">Web 🌐<a hidden class="anchor" aria-hidden="true" href="#web-">#</a></h2>
295293
<h3 id="money">money<a hidden class="anchor" aria-hidden="true" href="#money">#</a></h3>

it/ctf/index.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -172,12 +172,12 @@ <h2 class="entry-hint-parent">CTF@AC 2025
172172
</h2>
173173
</header>
174174
<div class="entry-content">
175-
<p>Ecco la traduzione in italiano, mantenendo invariati termini tecnici e nomi di programmi/codice.
176-
CTF@AC 2025 Web 🌐 money Analisi La challenge espone una dashboard minimale che supporta plugin di terze parti. Quando carichiamo un plugin, la piattaforma ci permette anche di scaricare quelli esistenti (incluso l’ufficiale flag.plugin).
175+
<p>CTF@AC 2025 Web 🌐 money Analisi La challenge espone una dashboard minimale che supporta plugin di terze parti. Quando carichiamo un plugin, la piattaforma ci permette anche di scaricare quelli esistenti (incluso l’ufficiale flag.plugin).
177176
Exploit Dopo aver scaricato flag.plugin, notiamo che è cifrato. Il file server.py contiene sia la chiave sia la funzione per decifrarlo, quindi possiamo decifrarlo in locale usando decrypt_file.
177+
KEY = b&#34;SECRET_KEY!123456XXXXXXXXXXXXXXX&#34; def decrypt_file(input_path, output_path, key): with open(input_path, &#34;rb&#34;) as f: data = f.read() iv = data[:16] ciphertext = data[16:] cipher = AES.new(key, AES.MODE_CBC, iv) plaintext = unpad(cipher.decrypt(ciphertext), AES.block_size) with open(output_path, &#34;wb&#34;) as f: f.write(plaintext) Il init.py del flag.plugin decifrato contiene il seguente codice:
178178
...</p>
179179
</div>
180-
<footer class="entry-footer"><span title='2025-09-16 00:00:00 +0000 UTC'>settembre 16, 2025</span>&nbsp;·&nbsp;27 minuti&nbsp;·&nbsp;5596 parole&nbsp;·&nbsp;Paolo</footer>
180+
<footer class="entry-footer"><span title='2025-09-16 00:00:00 +0000 UTC'>settembre 16, 2025</span>&nbsp;·&nbsp;27 minuti&nbsp;·&nbsp;5583 parole&nbsp;·&nbsp;Paolo</footer>
181181
<a class="entry-link" aria-label="post link to CTF@AC 2025" href="https://pascalctf.github.io/it/ctf/ctfatac/"></a>
182182
</article>
183183

it/tags/binary/index.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,12 +157,12 @@ <h2 class="entry-hint-parent">CTF@AC 2025
157157
</h2>
158158
</header>
159159
<div class="entry-content">
160-
<p>Ecco la traduzione in italiano, mantenendo invariati termini tecnici e nomi di programmi/codice.
161-
CTF@AC 2025 Web 🌐 money Analisi La challenge espone una dashboard minimale che supporta plugin di terze parti. Quando carichiamo un plugin, la piattaforma ci permette anche di scaricare quelli esistenti (incluso l’ufficiale flag.plugin).
160+
<p>CTF@AC 2025 Web 🌐 money Analisi La challenge espone una dashboard minimale che supporta plugin di terze parti. Quando carichiamo un plugin, la piattaforma ci permette anche di scaricare quelli esistenti (incluso l’ufficiale flag.plugin).
162161
Exploit Dopo aver scaricato flag.plugin, notiamo che è cifrato. Il file server.py contiene sia la chiave sia la funzione per decifrarlo, quindi possiamo decifrarlo in locale usando decrypt_file.
162+
KEY = b&#34;SECRET_KEY!123456XXXXXXXXXXXXXXX&#34; def decrypt_file(input_path, output_path, key): with open(input_path, &#34;rb&#34;) as f: data = f.read() iv = data[:16] ciphertext = data[16:] cipher = AES.new(key, AES.MODE_CBC, iv) plaintext = unpad(cipher.decrypt(ciphertext), AES.block_size) with open(output_path, &#34;wb&#34;) as f: f.write(plaintext) Il init.py del flag.plugin decifrato contiene il seguente codice:
163163
...</p>
164164
</div>
165-
<footer class="entry-footer"><span title='2025-09-16 00:00:00 +0000 UTC'>settembre 16, 2025</span>&nbsp;·&nbsp;27 minuti&nbsp;·&nbsp;5596 parole&nbsp;·&nbsp;Paolo</footer>
165+
<footer class="entry-footer"><span title='2025-09-16 00:00:00 +0000 UTC'>settembre 16, 2025</span>&nbsp;·&nbsp;27 minuti&nbsp;·&nbsp;5583 parole&nbsp;·&nbsp;Paolo</footer>
166166
<a class="entry-link" aria-label="post link to CTF@AC 2025" href="https://pascalctf.github.io/it/ctf/ctfatac/"></a>
167167
</article>
168168

it/tags/crypto/index.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,12 +157,12 @@ <h2 class="entry-hint-parent">CTF@AC 2025
157157
</h2>
158158
</header>
159159
<div class="entry-content">
160-
<p>Ecco la traduzione in italiano, mantenendo invariati termini tecnici e nomi di programmi/codice.
161-
CTF@AC 2025 Web 🌐 money Analisi La challenge espone una dashboard minimale che supporta plugin di terze parti. Quando carichiamo un plugin, la piattaforma ci permette anche di scaricare quelli esistenti (incluso l’ufficiale flag.plugin).
160+
<p>CTF@AC 2025 Web 🌐 money Analisi La challenge espone una dashboard minimale che supporta plugin di terze parti. Quando carichiamo un plugin, la piattaforma ci permette anche di scaricare quelli esistenti (incluso l’ufficiale flag.plugin).
162161
Exploit Dopo aver scaricato flag.plugin, notiamo che è cifrato. Il file server.py contiene sia la chiave sia la funzione per decifrarlo, quindi possiamo decifrarlo in locale usando decrypt_file.
162+
KEY = b&#34;SECRET_KEY!123456XXXXXXXXXXXXXXX&#34; def decrypt_file(input_path, output_path, key): with open(input_path, &#34;rb&#34;) as f: data = f.read() iv = data[:16] ciphertext = data[16:] cipher = AES.new(key, AES.MODE_CBC, iv) plaintext = unpad(cipher.decrypt(ciphertext), AES.block_size) with open(output_path, &#34;wb&#34;) as f: f.write(plaintext) Il init.py del flag.plugin decifrato contiene il seguente codice:
163163
...</p>
164164
</div>
165-
<footer class="entry-footer"><span title='2025-09-16 00:00:00 +0000 UTC'>settembre 16, 2025</span>&nbsp;·&nbsp;27 minuti&nbsp;·&nbsp;5596 parole&nbsp;·&nbsp;Paolo</footer>
165+
<footer class="entry-footer"><span title='2025-09-16 00:00:00 +0000 UTC'>settembre 16, 2025</span>&nbsp;·&nbsp;27 minuti&nbsp;·&nbsp;5583 parole&nbsp;·&nbsp;Paolo</footer>
166166
<a class="entry-link" aria-label="post link to CTF@AC 2025" href="https://pascalctf.github.io/it/ctf/ctfatac/"></a>
167167
</article>
168168

it/tags/ctf/index.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,12 +157,12 @@ <h2 class="entry-hint-parent">CTF@AC 2025
157157
</h2>
158158
</header>
159159
<div class="entry-content">
160-
<p>Ecco la traduzione in italiano, mantenendo invariati termini tecnici e nomi di programmi/codice.
161-
CTF@AC 2025 Web 🌐 money Analisi La challenge espone una dashboard minimale che supporta plugin di terze parti. Quando carichiamo un plugin, la piattaforma ci permette anche di scaricare quelli esistenti (incluso l’ufficiale flag.plugin).
160+
<p>CTF@AC 2025 Web 🌐 money Analisi La challenge espone una dashboard minimale che supporta plugin di terze parti. Quando carichiamo un plugin, la piattaforma ci permette anche di scaricare quelli esistenti (incluso l’ufficiale flag.plugin).
162161
Exploit Dopo aver scaricato flag.plugin, notiamo che è cifrato. Il file server.py contiene sia la chiave sia la funzione per decifrarlo, quindi possiamo decifrarlo in locale usando decrypt_file.
162+
KEY = b&#34;SECRET_KEY!123456XXXXXXXXXXXXXXX&#34; def decrypt_file(input_path, output_path, key): with open(input_path, &#34;rb&#34;) as f: data = f.read() iv = data[:16] ciphertext = data[16:] cipher = AES.new(key, AES.MODE_CBC, iv) plaintext = unpad(cipher.decrypt(ciphertext), AES.block_size) with open(output_path, &#34;wb&#34;) as f: f.write(plaintext) Il init.py del flag.plugin decifrato contiene il seguente codice:
163163
...</p>
164164
</div>
165-
<footer class="entry-footer"><span title='2025-09-16 00:00:00 +0000 UTC'>settembre 16, 2025</span>&nbsp;·&nbsp;27 minuti&nbsp;·&nbsp;5596 parole&nbsp;·&nbsp;Paolo</footer>
165+
<footer class="entry-footer"><span title='2025-09-16 00:00:00 +0000 UTC'>settembre 16, 2025</span>&nbsp;·&nbsp;27 minuti&nbsp;·&nbsp;5583 parole&nbsp;·&nbsp;Paolo</footer>
166166
<a class="entry-link" aria-label="post link to CTF@AC 2025" href="https://pascalctf.github.io/it/ctf/ctfatac/"></a>
167167
</article>
168168

it/tags/ctfatac/index.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,12 +157,12 @@ <h2 class="entry-hint-parent">CTF@AC 2025
157157
</h2>
158158
</header>
159159
<div class="entry-content">
160-
<p>Ecco la traduzione in italiano, mantenendo invariati termini tecnici e nomi di programmi/codice.
161-
CTF@AC 2025 Web 🌐 money Analisi La challenge espone una dashboard minimale che supporta plugin di terze parti. Quando carichiamo un plugin, la piattaforma ci permette anche di scaricare quelli esistenti (incluso l’ufficiale flag.plugin).
160+
<p>CTF@AC 2025 Web 🌐 money Analisi La challenge espone una dashboard minimale che supporta plugin di terze parti. Quando carichiamo un plugin, la piattaforma ci permette anche di scaricare quelli esistenti (incluso l’ufficiale flag.plugin).
162161
Exploit Dopo aver scaricato flag.plugin, notiamo che è cifrato. Il file server.py contiene sia la chiave sia la funzione per decifrarlo, quindi possiamo decifrarlo in locale usando decrypt_file.
162+
KEY = b&#34;SECRET_KEY!123456XXXXXXXXXXXXXXX&#34; def decrypt_file(input_path, output_path, key): with open(input_path, &#34;rb&#34;) as f: data = f.read() iv = data[:16] ciphertext = data[16:] cipher = AES.new(key, AES.MODE_CBC, iv) plaintext = unpad(cipher.decrypt(ciphertext), AES.block_size) with open(output_path, &#34;wb&#34;) as f: f.write(plaintext) Il init.py del flag.plugin decifrato contiene il seguente codice:
163163
...</p>
164164
</div>
165-
<footer class="entry-footer"><span title='2025-09-16 00:00:00 +0000 UTC'>settembre 16, 2025</span>&nbsp;·&nbsp;27 minuti&nbsp;·&nbsp;5596 parole&nbsp;·&nbsp;Paolo</footer>
165+
<footer class="entry-footer"><span title='2025-09-16 00:00:00 +0000 UTC'>settembre 16, 2025</span>&nbsp;·&nbsp;27 minuti&nbsp;·&nbsp;5583 parole&nbsp;·&nbsp;Paolo</footer>
166166
<a class="entry-link" aria-label="post link to CTF@AC 2025" href="https://pascalctf.github.io/it/ctf/ctfatac/"></a>
167167
</article>
168168
</main>

it/tags/ctfatac2025/index.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,12 +157,12 @@ <h2 class="entry-hint-parent">CTF@AC 2025
157157
</h2>
158158
</header>
159159
<div class="entry-content">
160-
<p>Ecco la traduzione in italiano, mantenendo invariati termini tecnici e nomi di programmi/codice.
161-
CTF@AC 2025 Web 🌐 money Analisi La challenge espone una dashboard minimale che supporta plugin di terze parti. Quando carichiamo un plugin, la piattaforma ci permette anche di scaricare quelli esistenti (incluso l’ufficiale flag.plugin).
160+
<p>CTF@AC 2025 Web 🌐 money Analisi La challenge espone una dashboard minimale che supporta plugin di terze parti. Quando carichiamo un plugin, la piattaforma ci permette anche di scaricare quelli esistenti (incluso l’ufficiale flag.plugin).
162161
Exploit Dopo aver scaricato flag.plugin, notiamo che è cifrato. Il file server.py contiene sia la chiave sia la funzione per decifrarlo, quindi possiamo decifrarlo in locale usando decrypt_file.
162+
KEY = b&#34;SECRET_KEY!123456XXXXXXXXXXXXXXX&#34; def decrypt_file(input_path, output_path, key): with open(input_path, &#34;rb&#34;) as f: data = f.read() iv = data[:16] ciphertext = data[16:] cipher = AES.new(key, AES.MODE_CBC, iv) plaintext = unpad(cipher.decrypt(ciphertext), AES.block_size) with open(output_path, &#34;wb&#34;) as f: f.write(plaintext) Il init.py del flag.plugin decifrato contiene il seguente codice:
163163
...</p>
164164
</div>
165-
<footer class="entry-footer"><span title='2025-09-16 00:00:00 +0000 UTC'>settembre 16, 2025</span>&nbsp;·&nbsp;27 minuti&nbsp;·&nbsp;5596 parole&nbsp;·&nbsp;Paolo</footer>
165+
<footer class="entry-footer"><span title='2025-09-16 00:00:00 +0000 UTC'>settembre 16, 2025</span>&nbsp;·&nbsp;27 minuti&nbsp;·&nbsp;5583 parole&nbsp;·&nbsp;Paolo</footer>
166166
<a class="entry-link" aria-label="post link to CTF@AC 2025" href="https://pascalctf.github.io/it/ctf/ctfatac/"></a>
167167
</article>
168168
</main>

it/tags/web/index.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,12 +157,12 @@ <h2 class="entry-hint-parent">CTF@AC 2025
157157
</h2>
158158
</header>
159159
<div class="entry-content">
160-
<p>Ecco la traduzione in italiano, mantenendo invariati termini tecnici e nomi di programmi/codice.
161-
CTF@AC 2025 Web 🌐 money Analisi La challenge espone una dashboard minimale che supporta plugin di terze parti. Quando carichiamo un plugin, la piattaforma ci permette anche di scaricare quelli esistenti (incluso l’ufficiale flag.plugin).
160+
<p>CTF@AC 2025 Web 🌐 money Analisi La challenge espone una dashboard minimale che supporta plugin di terze parti. Quando carichiamo un plugin, la piattaforma ci permette anche di scaricare quelli esistenti (incluso l’ufficiale flag.plugin).
162161
Exploit Dopo aver scaricato flag.plugin, notiamo che è cifrato. Il file server.py contiene sia la chiave sia la funzione per decifrarlo, quindi possiamo decifrarlo in locale usando decrypt_file.
162+
KEY = b&#34;SECRET_KEY!123456XXXXXXXXXXXXXXX&#34; def decrypt_file(input_path, output_path, key): with open(input_path, &#34;rb&#34;) as f: data = f.read() iv = data[:16] ciphertext = data[16:] cipher = AES.new(key, AES.MODE_CBC, iv) plaintext = unpad(cipher.decrypt(ciphertext), AES.block_size) with open(output_path, &#34;wb&#34;) as f: f.write(plaintext) Il init.py del flag.plugin decifrato contiene il seguente codice:
163163
...</p>
164164
</div>
165-
<footer class="entry-footer"><span title='2025-09-16 00:00:00 +0000 UTC'>settembre 16, 2025</span>&nbsp;·&nbsp;27 minuti&nbsp;·&nbsp;5596 parole&nbsp;·&nbsp;Paolo</footer>
165+
<footer class="entry-footer"><span title='2025-09-16 00:00:00 +0000 UTC'>settembre 16, 2025</span>&nbsp;·&nbsp;27 minuti&nbsp;·&nbsp;5583 parole&nbsp;·&nbsp;Paolo</footer>
166166
<a class="entry-link" aria-label="post link to CTF@AC 2025" href="https://pascalctf.github.io/it/ctf/ctfatac/"></a>
167167
</article>
168168

0 commit comments

Comments
 (0)