Skip to content

Instantly share code, notes, and snippets.

@radimkohout
Last active November 6, 2023 09:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save radimkohout/6fa7fa06c6ed82abf09b8a8a3664ce43 to your computer and use it in GitHub Desktop.
Save radimkohout/6fa7fa06c6ed82abf09b8a8a3664ce43 to your computer and use it in GitHub Desktop.
!TheCatch2023

Úvodem:

The Catch 2023 jsme jako už několikátým rokem řešili spolu s mým kamarádem Damianem. Zatímco v loňských letech jsme hráli oba spolu za účet Podfukáři, letos jsem za tento účet hrál já, a Damian hrál za svůj účet Damian10012. Vyměňovali jsme si tak poznatky z jednotlivých úloh. V tomto writeupu se záměrně vyhnu úlohám Introduction a Promotion, kde bylo pouze potřeba zadat odprezentovaný flag.

Treasure map:

V přiloženém souboru byl obrázek mapy, kde stačilo jít po „cestě k pokladu“, čímž člověk dostal flag: FLAG{WIFI-AHEA-DCAP-TAIN}

VPN access:

Stačilo se pouze pomocí OpenVPN připojit na VPN a následně vlézt na stránku v zadání. Dostali jsme flag: FLAG{smna-m11d-hhta-ONOs}

Ship:

Tato úloha nám dala hodně zabrat, vyřešili jsme ji až po přidání třetí nápovědy. Stačilo přidat domény z certifikátu do souboru hosts. Na jedné z domén byl flag: FLAG{ejii-plmQ-Q53C-gMwc}

Captains coffee:

Úkolem u této úlohy je uvařit kafe pro kapitána. Musíme vybrat správné kafe z listu, což je „Naval espresso with rum“. Po uvaření kafe dostaneme flag: FLAG{ccLH-dsaz-4kFA-P7GC}

Regular cube:

Zde šlo o „rozšíření“ úlohy z The Catch 2022, kde byla 2D Regex křížovka. Zde se přidala ještě třetí dimenze, vyluštěním této křížovky jsme dostali flag: FLAG{NICE-NAVY-BLUE-CUBE}

Sonar logs:

V této úloze jsme dostali data z několika časových zón. Po jejich seřazení jsme dostali flag: FLAG{3YAG-2rbj-KWoZ-LwWm}

Keyword of the day:

V této úloze bylo třeba nalézt správný port. Na serveru bylo přes 100 aplikací, ale pouze jedna byla „originální“, ostatní byly jen „na zmatení nepřítele“. Původní plán najít správnou webovku pomocí Pythonu a Selenia neprošel, protože na správné stránce se nenacházel flag, ale jen odkaz na něj. Stáhnul jsem si pomocí aplikace napsané v C# HTML kódy všech aplikací. Následně jsem je prohnal deduplikátorem, který značně zredukoval množství stránek, které bylo nutné prohledat. Následně jsem našel správnou stránku, na které se lišil Javascript, který prováděl render obrázků. Po vstupu na tuto stránku a přechodu na odkaz jsem dostal flag: FLAG{DEIE-fiOr-pGV5-8MPc} Kód na stažení stránek:

Console.WriteLine("Hello, World!");
string s = "";
for (int i = 60000; i < 60500; i++)
{
    Console.WriteLine(i);
    try
    {
        HttpClient client = new HttpClient();
        string St = await client.GetStringAsync("http://keyword-of-the-day.cns-jv.tcc:" + i);
        int pFrom = St.IndexOf("<script>") + "<script>".Length;
        int pTo = St.LastIndexOf("</script>");
        File.WriteAllText("outp/web" + i + ".js", St.Substring(pFrom,pTo-pFrom));
        //Console.ReadKey();
    }
    catch
    {

    }
}

Captains password:

Přiložený soubor byl memdump z běžící (tedy spíše „spadlé“) aplikace KeePass 2.51. V této verzi (a ve všech starších) byla nalezena chyba, která z memdumpu umožňuje získat heslo, které bylo zadáno do zabezpečeného pole jako master heslo. Na získání toho jsem použil aplikaci napsanou v C#. Po zadání master hesla, které vyhodí tato aplikace jsem u hesla s názvem Flag nalezl správný flag: FLAG{pyeB-941A-bhGx-g3RI}

Cat code:

Zde jsme dostali 2 pythonovské soubory, v nichž bylo třeba najít, proč nefungují. Po deobfuskaci a sloučení souborů jsem dospěl k tomu, že jedna z funkcí řeší Fibonacciho posloupnost pro obrovská čísla rekurzí, což je značně pomalé. Po úpravě tohoto algoritmu na lepší mi program během několika vteřin vyhodil flag: FLAG{YcbS-IAbQ-KHRE-BTNR}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment