<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title></title>
    <link>/</link>
    <description>Recent content on </description>
    <generator>Hugo -- gohugo.io</generator>
    <lastBuildDate>Sat, 28 Feb 2026 00:00:00 +0000</lastBuildDate>
    
	<atom:link href="/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Dynamic Secret</title>
      <link>/writeups/olicyber/territoriale2026/demo/dynamicsecret/</link>
      <pubDate>Sat, 28 Feb 2026 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/territoriale2026/demo/dynamicsecret/</guid>
      <description>Use strace to trace the runtime syscalls of a binary and read the secret it loads from a file.</description>
    </item>
    
    <item>
      <title>HTTP Inputs</title>
      <link>/writeups/olicyber/territoriale2026/demo/http-inputs/</link>
      <pubDate>Sat, 28 Feb 2026 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/territoriale2026/demo/http-inputs/</guid>
      <description>Send a single HTTP OPTIONS request with the exact query param, header, cookie, and body the server expects simultaneously.</description>
    </item>
    
    <item>
      <title>Math Solver</title>
      <link>/writeups/olicyber/territoriale2026/demo/math-solver/</link>
      <pubDate>Sat, 28 Feb 2026 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/territoriale2026/demo/math-solver/</guid>
      <description>Automate solving 100 consecutive linear equations within a single HTTP session to unlock the flag.</description>
    </item>
    
    <item>
      <title>RevMe</title>
      <link>/writeups/olicyber/territoriale2026/demo/revme/</link>
      <pubDate>Sat, 28 Feb 2026 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/territoriale2026/demo/revme/</guid>
      <description>Reverse a three-step transformation (reverse + rotate + XOR) applied to a 36-byte target symbol to recover the flag.</description>
    </item>
    
    <item>
      <title>Secure Admin Panel — Stack Canary Leak &#43; ret2win</title>
      <link>/writeups/olicyber/territoriale2026/demo/secureadminpanel/</link>
      <pubDate>Sat, 28 Feb 2026 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/territoriale2026/demo/secureadminpanel/</guid>
      <description>Leak the stack canary via a controlled print function, then overflow to overwrite the return address without triggering the canary check.</description>
    </item>
    
    <item>
      <title>SQLi Cards — Union Injection into SQLite</title>
      <link>/writeups/olicyber/territoriale2026/demo/sqli-cards/</link>
      <pubDate>Sat, 28 Feb 2026 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/territoriale2026/demo/sqli-cards/</guid>
      <description>Union-based SQL injection in a card lookup form to enumerate tables via sqlite_master and extract the flag.</description>
    </item>
    
    <item>
      <title>XSS Escape — Breaking Out of a Script String Context</title>
      <link>/writeups/olicyber/territoriale2026/demo/xss-escape/</link>
      <pubDate>Sat, 28 Feb 2026 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/territoriale2026/demo/xss-escape/</guid>
      <description>Escape a JavaScript string context inside a script tag by injecting a closing script tag that the sanitizer fails to block.</description>
    </item>
    
    <item>
      <title>Baity5 — Binary Exploitation</title>
      <link>/writeups/olicyber/territoriale2025/baity5/</link>
      <pubDate>Sat, 01 Mar 2025 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/territoriale2025/baity5/</guid>
      <description>Binary exploitation challenge from Territoriale 2025. Static analysis and attack strategy — no full exploit solved during competition.</description>
    </item>
    
    <item>
      <title>Bash Filter Bypass via Unicode Lookalikes</title>
      <link>/writeups/olicyber/territoriale2025/bash-filter-bypass/</link>
      <pubDate>Sat, 01 Mar 2025 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/territoriale2025/bash-filter-bypass/</guid>
      <description>Bypass a character-level bash filter by substituting ASCII letters with Unicode homoglyphs that the shell normalizes.</description>
    </item>
    
    <item>
      <title>Segnalazione Cinghiali — Union-Based SQLi in Node/Express</title>
      <link>/writeups/olicyber/territoriale2025/segnalazione-cinghiali/</link>
      <pubDate>Sat, 01 Mar 2025 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/territoriale2025/segnalazione-cinghiali/</guid>
      <description>Union-based SQL injection in the report ID parameter of a Node.js/TypeScript Express app to leak the flag from a hidden table.</description>
    </item>
    
    <item>
      <title>Bank Logic Bypass — Scientific Notation Bypasses Integer Validation</title>
      <link>/writeups/cyberchallenge/web/bank-logic-bypass/</link>
      <pubDate>Wed, 01 Jan 2025 00:00:00 +0000</pubDate>
      
      <guid>/writeups/cyberchallenge/web/bank-logic-bypass/</guid>
      <description>Submit a withdrawal amount in scientific notation to exploit loose type parsing and credit 1 billion to your balance.</description>
    </item>
    
    <item>
      <title>Basic Calculator — Variable Shadowing Bug</title>
      <link>/writeups/cyberchallenge/misc/basic-calculator/</link>
      <pubDate>Wed, 01 Jan 2025 00:00:00 +0000</pubDate>
      
      <guid>/writeups/cyberchallenge/misc/basic-calculator/</guid>
      <description>Identify and work around a Python variable shadowing bug where a function definition overwrites a string variable of the same name.</description>
    </item>
    
    <item>
      <title>Blind SQLi Login — Boolean-Based Character Extraction</title>
      <link>/writeups/cyberchallenge/web/blind-sqli/</link>
      <pubDate>Wed, 01 Jan 2025 00:00:00 +0000</pubDate>
      
      <guid>/writeups/cyberchallenge/web/blind-sqli/</guid>
      <description>Boolean blind SQL injection on a login form to extract a password character by character using HEX comparison.</description>
    </item>
    
    <item>
      <title>Extract HTML Comments</title>
      <link>/writeups/cyberchallenge/web/extract-html-comments/</link>
      <pubDate>Wed, 01 Jan 2025 00:00:00 +0000</pubDate>
      
      <guid>/writeups/cyberchallenge/web/extract-html-comments/</guid>
      <description>Use BeautifulSoup to extract HTML comment nodes from a page and reveal the hidden flag.</description>
    </item>
    
    <item>
      <title>Shell Four ORW — Open-Read-Write Shellcode with Seccomp</title>
      <link>/writeups/cyberchallenge/software-security/shellfour-orw/</link>
      <pubDate>Wed, 01 Jan 2025 00:00:00 +0000</pubDate>
      
      <guid>/writeups/cyberchallenge/software-security/shellfour-orw/</guid>
      <description>Write open-read-write shellcode to exfiltrate /flag.txt when execve is blocked by a seccomp filter.</description>
    </item>
    
    <item>
      <title>Shell One — Minimal Shellcode to Set EAX</title>
      <link>/writeups/cyberchallenge/software-security/shellone/</link>
      <pubDate>Wed, 01 Jan 2025 00:00:00 +0000</pubDate>
      
      <guid>/writeups/cyberchallenge/software-security/shellone/</guid>
      <description>Write minimal x86 shellcode that sets EAX to 0x13371338 to satisfy the binary&amp;rsquo;s check and unlock execution flow.</description>
    </item>
    
    <item>
      <title>Split — ret2win with ROP pop rdi Gadget</title>
      <link>/writeups/cyberchallenge/software-security/split/</link>
      <pubDate>Wed, 01 Jan 2025 00:00:00 +0000</pubDate>
      
      <guid>/writeups/cyberchallenge/software-security/split/</guid>
      <description>Classic x86-64 ret2win: overflow the return address, use a pop rdi gadget to pass the /bin/cat flag.txt string as argument, jump to system.</description>
    </item>
    
    <item>
      <title>Unzip Matryoshka — 3000 Nested Zip Files</title>
      <link>/writeups/cyberchallenge/misc/unzip-matryoshka/</link>
      <pubDate>Wed, 01 Jan 2025 00:00:00 +0000</pubDate>
      
      <guid>/writeups/cyberchallenge/misc/unzip-matryoshka/</guid>
      <description>Automate extraction of 3000 nested zip files to retrieve the flag from the innermost archive.</description>
    </item>
    
    <item>
      <title>2048 — Arithmetic Server Bot</title>
      <link>/writeups/olicyber/challenges/colicyber/misc/2048/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/misc/2048/</guid>
      <description>Connect to a server that fires 2049 arithmetic challenges in Italian — SOMMA, DIFFERENZA, PRODOTTO, POTENZA, DIVISIONE_INTERA — and solve each one in under the timeout to receive the flag.</description>
    </item>
    
    <item>
      <title>A Too Small Reminder — Session ID Enumeration</title>
      <link>/writeups/olicyber/challenges/colicyber/web/a-too-small-reminder/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/web/a-too-small-reminder/</guid>
      <description>Register, log in, notice the session_id cookie is a small integer. Brute-force integers upward from 30 until the admin session is hit and the flag appears.</description>
    </item>
    
    <item>
      <title>ASMR — Static XOR Reverse Engineering</title>
      <link>/writeups/olicyber/challenges/colicyber/binary/asmr/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/binary/asmr/</guid>
      <description>Reverse a static XOR encryption: subtract flag bytes from key bytes position-by-position to recover the plaintext.</description>
    </item>
    
    <item>
      <title>Based and Encoded — Multi-Format Encoding Bot</title>
      <link>/writeups/olicyber/challenges/colicyber/misc/based-and-encoded/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/misc/based-and-encoded/</guid>
      <description>A JSON-framed server demands conversions between base64, hex, and binary in both encode and decode directions. Write a bot that parses the Italian operation description and returns the correct transformed value.</description>
    </item>
    
    <item>
      <title>Basic SQLi — Classic OR 1=1 Login Bypass</title>
      <link>/writeups/olicyber/challenges/colicyber/web/basic-sqli/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/web/basic-sqli/</guid>
      <description>Inject &amp;lsquo; OR &amp;lsquo;1&amp;rsquo;=&amp;lsquo;1 into both username and password fields to make the SQL query always true and grab the flag from the response.</description>
    </item>
    
    <item>
      <title>Byte Flag — Flag Hidden in Raw PNG Bytes</title>
      <link>/writeups/olicyber/challenges/colicyber/misc/byte-flag/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/misc/byte-flag/</guid>
      <description>Open the PNG in binary mode, locate the ASCII string &amp;lsquo;flag&amp;rsquo; in the raw byte stream, and print every byte after that index — the flag is embedded verbatim in the file&amp;rsquo;s binary content.</description>
    </item>
    
    <item>
      <title>C-Style Login — PHP Type Juggling Array Bypass</title>
      <link>/writeups/olicyber/challenges/colicyber/web/c-style-login/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/web/c-style-login/</guid>
      <description>PHP&amp;rsquo;s loose comparison treats an array as truthy against any string. Sending password[] as an array in the POST body bypasses the string comparison and grants access.</description>
    </item>
    
    <item>
      <title>Chaos — TCP Payload Reconstruction from PCAP</title>
      <link>/writeups/olicyber/challenges/colicyber/net/chaos/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/net/chaos/</guid>
      <description>Filter a PCAP for TCP packets, decode each packet&amp;rsquo;s payload from hex, and concatenate them in order — the resulting byte stream contains the flag.</description>
    </item>
    
    <item>
      <title>Click Me — Cookie Integer Forge to Reach Counter Target</title>
      <link>/writeups/olicyber/challenges/colicyber/web/click-me/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/web/click-me/</guid>
      <description>The app tracks clicks with an integer cookie. Skip the clicking by setting &amp;lsquo;cookies&amp;rsquo; to 10000000 directly and request the page — the server trusts the cookie value and returns the flag.</description>
    </item>
    
    <item>
      <title>Coffee Hash — Z3 Cyclic Hash Constraint Solving</title>
      <link>/writeups/olicyber/challenges/colicyber/binary/coffee-hash/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/binary/coffee-hash/</guid>
      <description>Model a cyclic windowed hash as a system of linear equations over integer variables and solve it with Z3 to recover the flag.</description>
    </item>
    
    <item>
      <title>Confuse Me — PHP Magic Hash 0e MD5 Bypass</title>
      <link>/writeups/olicyber/challenges/colicyber/web/confuse-me/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/web/confuse-me/</guid>
      <description>PHP&amp;rsquo;s loose == treats any string starting with &amp;lsquo;0e&amp;rsquo; followed by digits as the float 0. Pass a known magic hash input whose MD5 begins with 0e to bypass a hash comparison.</description>
    </item>
    
    <item>
      <title>Cookie Monster — Base64 JSON Cookie Role Elevation</title>
      <link>/writeups/olicyber/challenges/colicyber/web/cookiemonster/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/web/cookiemonster/</guid>
      <description>The session cookie is a URL-encoded base64 of a JSON string like &amp;lsquo;id-role-username&amp;rsquo;. Decode it, change the role to 0 and username to admin, re-encode, and access the admin page.</description>
    </item>
    
    <item>
      <title>Corrupted Flag — Fix GIF Magic Bytes then Extract Frames</title>
      <link>/writeups/olicyber/challenges/colicyber/misc/corrupted-flag/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/misc/corrupted-flag/</guid>
      <description>The GIF has wrong magic bytes at the start. Replace the first 13 bytes with the correct GIF89a header, open the repaired file with Pillow, and iterate through frames saved as WebP to find the flag.</description>
    </item>
    
    <item>
      <title>CrackMat — Z3 Per-Character Quadratic Equations</title>
      <link>/writeups/olicyber/challenges/colicyber/binary/crackmat/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/binary/crackmat/</guid>
      <description>Each flag character satisfies an independent quadratic equation in integer form; Z3 solves all 20 simultaneously to recover the flag.</description>
    </item>
    
    <item>
      <title>Dashed — Six-Layer Encoding Chain: Morse → Hex → Binary → Base64 → Caesar</title>
      <link>/writeups/olicyber/challenges/colicyber/misc/dashed/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/misc/dashed/</guid>
      <description>Decode a Morse code file, strip hex prefixes, convert to binary, interpret as Base64, then apply a Caesar shift derived from the first character — five transforms chained together.</description>
    </item>
    
    <item>
      <title>Doge Ransom 2 — ROP ret2puts Leak then ADMIN re-login</title>
      <link>/writeups/olicyber/challenges/colicyber/binary/doge-ransom-2/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/binary/doge-ransom-2/</guid>
      <description>Overflow the IBAN field to leak the binary&amp;rsquo;s own password via puts, then re-login as ADMIN using the leaked credential and repeat the overflow to reach the flag path.</description>
    </item>
    
    <item>
      <title>Doge Ransom — IBAN Buffer Overflow with Control Byte Injection</title>
      <link>/writeups/olicyber/challenges/colicyber/binary/doge-ransom/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/binary/doge-ransom/</guid>
      <description>The IBAN input field copies 28 bytes into a buffer with room for 49. Appending the control byte 0x03 after the valid IBAN data overflows into an adjacent flag variable and unlocks the ransomware payment path.</description>
    </item>
    
    <item>
      <title>Emergency Call — ROP Syscall Chain for execve</title>
      <link>/writeups/olicyber/challenges/colicyber/binary/emergency-call/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/binary/emergency-call/</guid>
      <description>Write /bin/sh into a known writable address, then build a ROP chain that sets rax=59, rdi=/bin/sh, rsi=0, rdx=0 using dedicated pop gadgets and a syscall instruction to get a shell.</description>
    </item>
    
    <item>
      <title>Flags Shop — Price Parameter Tampering</title>
      <link>/writeups/olicyber/challenges/colicyber/web/flags-shop/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/web/flags-shop/</guid>
      <description>The buy endpoint accepts a &amp;lsquo;costo&amp;rsquo; (price) POST parameter from the client. Sending costo=0 purchases the expensive flag item for free.</description>
    </item>
    
    <item>
      <title>Formatted — Format String Write with %n</title>
      <link>/writeups/olicyber/challenges/colicyber/binary/formatted/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/binary/formatted/</guid>
      <description>Use a format string %n write to overwrite a target variable at a known address and unlock the flag path.</description>
    </item>
    
    <item>
      <title>Generatore Poco Casuale — Shellcode Injection via Leaked Stack Address</title>
      <link>/writeups/olicyber/challenges/colicyber/binary/generatore-poco-casuale/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/binary/generatore-poco-casuale/</guid>
      <description>The binary leaks a runtime stack address disguised as a &amp;lsquo;random number&amp;rsquo;. Add 6 to land inside the shellcode region, then spray that address 800 times to cover the return target and get a shell.</description>
    </item>
    
    <item>
      <title>Guess the Number 2 — ROP Chain GOT Overwrite via gets</title>
      <link>/writeups/olicyber/challenges/colicyber/binary/guess-the-number-2/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/binary/guess-the-number-2/</guid>
      <description>Build a ROP chain that calls gets twice to plant arbitrary data in the GOT, redirect strcspn to a shellcode stub, then trigger the win print path.</description>
    </item>
    
    <item>
      <title>Guess The Number — Stack Overflow &#43; Integer Overflow</title>
      <link>/writeups/olicyber/challenges/colicyber/binary/guess-the-number/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/binary/guess-the-number/</guid>
      <description>Overflow the name buffer to corrupt the internal number variable, then feed back the overflowed value as a decimal integer to satisfy the equality check.</description>
    </item>
    
    <item>
      <title>Headache — Flag in HTTP Response Header</title>
      <link>/writeups/olicyber/challenges/colicyber/web/headache/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/web/headache/</guid>
      <description>The flag is not in the response body — it is stored in a custom HTTP response header called &amp;lsquo;Flag&amp;rsquo;. Use a HEAD request and read r.headers[&amp;lsquo;Flag&amp;rsquo;].</description>
    </item>
    
    <item>
      <title>I Got Magic — GIF Polyglot Webshell Upload &#43; RCE</title>
      <link>/writeups/olicyber/challenges/colicyber/web/i-got-magic/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/web/i-got-magic/</guid>
      <description>Craft a file that is simultaneously a valid GIF (magic bytes GIF89a) and a PHP shell (&amp;lt;?php echo system(&amp;lsquo;cat /flag.txt&amp;rsquo;); ?&amp;gt;). Upload it via the image upload form, find the timestamped filename in the response, and request that URL to execute the shell.</description>
    </item>
    
    <item>
      <title>Just a Reminder — Obfuscated JS Secret Key Recovery</title>
      <link>/writeups/olicyber/challenges/colicyber/web/just-a-reminder/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/web/just-a-reminder/</guid>
      <description>The login form runs client-side JS. Deobfuscating or inspecting it reveals a hardcoded secret key used to AES-decrypt the flag — the key is plaintext at the top of the obfuscated script.</description>
    </item>
    
    <item>
      <title>Light or Dark — Path Traversal with Dot Obfuscation &#43; Null Byte</title>
      <link>/writeups/olicyber/challenges/colicyber/web/light-or-dark/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/web/light-or-dark/</guid>
      <description>The theme parameter appends .css to the user-supplied path before serving it. Use &amp;hellip;/ triples (which reduce to ../) and a URL-encoded null byte to escape the CSS directory and read /flag.txt.</description>
    </item>
    
    <item>
      <title>Make a Wish — PHP GET Array Type Coercion Bypass</title>
      <link>/writeups/olicyber/challenges/colicyber/web/make-a-wish/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/web/make-a-wish/</guid>
      <description>Pass the GET parameter as an array (?richiesta[]=sas) to make PHP receive an array instead of a string, bypassing the string equality check and revealing the flag.</description>
    </item>
    
    <item>
      <title>More Private Club — Simple ret2win Buffer Overflow</title>
      <link>/writeups/olicyber/challenges/colicyber/binary/more-private-club/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/binary/more-private-club/</guid>
      <description>Overflow a stack buffer to overwrite the return address with a known win function address, then trigger it.</description>
    </item>
    
    <item>
      <title>No Robots Here — Disallowed Path Discovery via robots.txt</title>
      <link>/writeups/olicyber/challenges/colicyber/web/no-robots-here/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/web/no-robots-here/</guid>
      <description>robots.txt lists a Disallow path that the crawler is never supposed to visit. That path contains the flag.</description>
    </item>
    
    <item>
      <title>No Time — UNION SQL Injection with Keyword Filter Bypass via OFFSET Injection</title>
      <link>/writeups/olicyber/challenges/colicyber/web/no-time/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/web/no-time/</guid>
      <description>A WAF strips forbidden SQL keywords. Inject OFFSET inside reserved words (SELECT → SELOFFSETECT) so after the WAF removes OFFSET the original keyword is reconstructed, landing a UNION SELECT to dump the flag.</description>
    </item>
    
    <item>
      <title>Password Changer 3000 — Insecure Token via Base64-Encoded Username</title>
      <link>/writeups/olicyber/challenges/colicyber/web/password-changer-3000/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/web/password-changer-3000/</guid>
      <description>The password-reset token is simply the base64 encoding of the username. Encoding &amp;lsquo;admin&amp;rsquo; and passing it as the token query parameter triggers the admin password change flow and reveals the flag.</description>
    </item>
    
    <item>
      <title>Quantum Transport Layer — TLS ALPN Flag via gnutls-cli</title>
      <link>/writeups/olicyber/challenges/colicyber/net/quantum-transport-layer/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/net/quantum-transport-layer/</guid>
      <description>The TLS server returns the flag as the negotiated ALPN protocol name. Inject the server&amp;rsquo;s hostname into /etc/hosts, connect with gnutls-cli specifying &amp;ndash;alpn=flag, and read the flag from the TLS handshake output.</description>
    </item>
    
    <item>
      <title>readdle — Two-Stage Shellcode via Stub Read Gadget</title>
      <link>/writeups/olicyber/challenges/colicyber/binary/readdle/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/binary/readdle/</guid>
      <description>Inject a 4-byte stub shellcode that calls read to pull a full shell payload into the same buffer, then jump to it — bypassing the initial 4-byte size constraint on the first write.</description>
    </item>
    
    <item>
      <title>Rick Roller — Flag Behind a Redirect</title>
      <link>/writeups/olicyber/challenges/colicyber/web/rick-roller/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/web/rick-roller/</guid>
      <description>The /get_flag.php endpoint immediately redirects the browser to a Rick Astley video. Disabling redirect following in requests reveals the 302 response body which contains the flag.</description>
    </item>
    
    <item>
      <title>Secret Vault — Heap Address Leak &#43; Shellcode via Stack Overflow</title>
      <link>/writeups/olicyber/challenges/colicyber/binary/secret-vault/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/binary/secret-vault/</guid>
      <description>Trigger a heap allocation that the binary prints, compute the shellcode landing address at heap+96, then overflow the stack with that return address followed by shellcode to get a shell.</description>
    </item>
    
    <item>
      <title>Shell&#39;s Revenge 2 — GIF Polyglot Webshell via LFI Include</title>
      <link>/writeups/olicyber/challenges/colicyber/web/shells-revenge-2/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/web/shells-revenge-2/</guid>
      <description>Upload a GIF polyglot containing a PHP shell, then trigger its execution through a local file inclusion vulnerable ?page= parameter that includes the uploaded file path.</description>
    </item>
    
    <item>
      <title>Shell&#39;s Revenge — GIF Polyglot PHP Webshell Upload</title>
      <link>/writeups/olicyber/challenges/colicyber/web/shells-revenge/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/web/shells-revenge/</guid>
      <description>Upload a file starting with the GIF89a magic bytes followed by a PHP shell. The server validates MIME type from the header but saves the file where PHP can execute it. Access the uploaded file URL to run arbitrary commands.</description>
    </item>
    
    <item>
      <title>Sito Vuoto — Flag Hidden in Page Source</title>
      <link>/writeups/olicyber/challenges/colicyber/web/sito-vuoto/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/web/sito-vuoto/</guid>
      <description>The homepage appears empty, but the flag is embedded in an HTML comment or inside one of the linked static files (CSS or JS). Fetch each resource and grep for the flag pattern.</description>
    </item>
    
    <item>
      <title>Sn4ck Sh3nan1gans — UNION SQL Injection via Base64 JSON Cookie</title>
      <link>/writeups/olicyber/challenges/colicyber/web/sn4ck-sh3nan1gans/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/web/sn4ck-sh3nan1gans/</guid>
      <description>The server reads a base64-encoded JSON cookie containing an ID field and passes it unsanitised into a SQL query. Inject a UNION SELECT payload inside the JSON, re-encode as base64, and set the forged cookie to extract the flag in three phases.</description>
    </item>
    
    <item>
      <title>Sniff N Byte — Decode Hardcoded Hex Flag</title>
      <link>/writeups/olicyber/challenges/colicyber/net/sniff-n-byte/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/net/sniff-n-byte/</guid>
      <description>The flag is encoded as concatenated 0x-prefixed hex bytes embedded directly in the capture. Strip the prefixes, decode with bytes.fromhex, and print.</description>
    </item>
    
    <item>
      <title>SSA0x42 — XOR Key Recovery from Known-Plaintext PCAP Headers</title>
      <link>/writeups/olicyber/challenges/colicyber/net/ssa0x42/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/net/ssa0x42/</guid>
      <description>Two known-plaintext byte sequences (k and l) from the PCAP header XOR to reveal the repeating key. XOR the encrypted flag block with that key to recover the plaintext.</description>
    </item>
    
    <item>
      <title>Suoni Misteriosi — Morse Audio Decoder</title>
      <link>/writeups/olicyber/challenges/colicyber/misc/suoni-misteriosi/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/misc/suoni-misteriosi/</guid>
      <description>A WAV file carries the flag in Morse code audio. Decode it automatically with morse-audio-decoder and wrap the result in flag{&amp;hellip;}.</description>
    </item>
    
    <item>
      <title>Super Market — Integer Underflow Price Manipulation</title>
      <link>/writeups/olicyber/challenges/colicyber/binary/super-market/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/binary/super-market/</guid>
      <description>Pass a negative quantity to an unsigned arithmetic check, causing integer underflow that bypasses a balance validation and grants access to a premium item.</description>
    </item>
    
    <item>
      <title>Terminator — Canary Leak &#43; Full ret2libc</title>
      <link>/writeups/olicyber/challenges/colicyber/binary/terminator/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/binary/terminator/</guid>
      <description>Overwrite the canary&amp;rsquo;s null byte to leak the full 8-byte cookie over printf, simultaneously leak a saved RBP to base the stack, then use puts@got to find libc base and call system(&amp;lsquo;/bin/sh&amp;rsquo;) — all in two trips through the same vulnerable function.</description>
    </item>
    
    <item>
      <title>That&#39;s a Lot of Fs — Flag in Ethernet Destination MAC via Custom EtherType</title>
      <link>/writeups/olicyber/challenges/colicyber/net/thats-a-lot-of-fs/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/net/thats-a-lot-of-fs/</guid>
      <description>Filter Ethernet frames with EtherType 0xffff — the custom protocol used by this challenge — collect the destination MAC address from each matching frame, interpret the first two hex bytes as ASCII, and concatenate to reveal the flag.</description>
    </item>
    
    <item>
      <title>Time Is Key — Timing Side-Channel Flag Extraction</title>
      <link>/writeups/olicyber/challenges/colicyber/web/time-is-key/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/web/time-is-key/</guid>
      <description>The server compares the submitted flag character-by-character and returns a response proportional to how many correct characters were prefixed. Measure elapsed time per candidate character and pick the one with the longest response time to recover the flag byte by byte.</description>
    </item>
    
    <item>
      <title>TIMP — OS Command Injection with IFS and Null Byte Filter Bypass</title>
      <link>/writeups/olicyber/challenges/colicyber/web/timp/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/web/timp/</guid>
      <description>A POST endpoint executes a shell command with user-supplied input but filters spaces, the word &amp;lsquo;echo&amp;rsquo;, and other shell metacharacters. Bypass with ${NULL} (strips to nothing) and ${IFS} (the internal field separator, expands to a space in bash).</description>
    </item>
    
    <item>
      <title>Truly Random Signature — Predictable Session Token Analysis</title>
      <link>/writeups/olicyber/challenges/colicyber/web/truly-random-signature/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/web/truly-random-signature/</guid>
      <description>The server issues session tokens that are predictable or reusable. Requesting the site twice, comparing the Set-Cookie headers, and identifying the pattern allows forging or reusing an admin-level token.</description>
    </item>
    
    <item>
      <title>Useless — Flag Hidden in PCAPNG via strings</title>
      <link>/writeups/olicyber/challenges/colicyber/net/useless/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/net/useless/</guid>
      <description>Run strings on the PCAPNG and grep for &amp;lsquo;flag&amp;rsquo; — the flag is stored as plain ASCII inside the capture file and visible without any packet parsing.</description>
    </item>
    
    <item>
      <title>Villa Pisani — DNS Maze DFS via CNAME Records</title>
      <link>/writeups/olicyber/challenges/colicyber/misc/villa-pisani/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/misc/villa-pisani/</guid>
      <description>Navigate a DNS-based labyrinth by following CNAME records in four compass directions (up/down/left/right) and reading TXT records until one contains the flag. Depth-first search with a visited set prevents loops.</description>
    </item>
    
    <item>
      <title>WordWang — Protocol Format Wrapping</title>
      <link>/writeups/olicyber/challenges/colicyber/net/wordwang/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/net/wordwang/</guid>
      <description>The server returns a word from a custom protocol. Wrap the response in the expected format — prepend &amp;lsquo;?&amp;rsquo;, uppercase, append &amp;lsquo;!&amp;rsquo; — send it back, and the server returns the flag.</description>
    </item>
    
    <item>
      <title>You Complete Me — Binary Search Word Reconstruction</title>
      <link>/writeups/olicyber/challenges/colicyber/net/you-complete-me/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/net/you-complete-me/</guid>
      <description>A sorted word list and a known sequence of binary-search response sizes pin down a unique word character by character. Reconstruct it by matching the precounted word counts at each prefix level.</description>
    </item>
    
    <item>
      <title>Zipception 2.0 — Nested ZIPs with Password Protection</title>
      <link>/writeups/olicyber/challenges/colicyber/misc/zipception-2/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/misc/zipception-2/</guid>
      <description>100 nested password-protected ZIPs. Crack each archive&amp;rsquo;s password against the rockyou wordlist, extract, delete, and repeat — 100 times.</description>
    </item>
    
    <item>
      <title>Zipception — 3000 Nested ZIPs</title>
      <link>/writeups/olicyber/challenges/colicyber/misc/zipception/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>/writeups/olicyber/challenges/colicyber/misc/zipception/</guid>
      <description>A flag is hidden inside 3000 recursively nested ZIP archives. Loop backwards from flag3000.zip to flag1.zip, extracting and deleting each archive in turn until the innermost file is revealed.</description>
    </item>
    
    <item>
      <title>Archive</title>
      <link>/archives/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/archives/</guid>
      <description>archives</description>
    </item>
    
    <item>
      <title>Search</title>
      <link>/search/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/search/</guid>
      <description>search</description>
    </item>
    
  </channel>
</rss>