<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Web on Th3B0yWh0L1v3d — Security Writeups</title>
    <link>https://th3b0ywh0l1v3d.github.io/categories/web/</link>
    <description>Recent content in Web on Th3B0yWh0L1v3d — Security Writeups</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 16 Jun 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://th3b0ywh0l1v3d.github.io/categories/web/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Beyond the Homepage</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/boroctf-2026/web/beyond-the-homepage/</link>
      <pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/boroctf-2026/web/beyond-the-homepage/</guid>
      <description>Flag hidden in an HTML comment, visible only via browser developer tools or view-source.</description>
    </item>
    <item>
      <title>Boro Senpai 1</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/boroctf-2026/web/boro-senpai-1/</link>
      <pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/boroctf-2026/web/boro-senpai-1/</guid>
      <description>IDOR / broken access control lets you access another user&amp;rsquo;s flag by changing an ID parameter.</description>
    </item>
    <item>
      <title>Boro Senpai 2</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/boroctf-2026/web/boro-senpai-2/</link>
      <pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/boroctf-2026/web/boro-senpai-2/</guid>
      <description>Part 2 of the Boro Senpai series: SSRF via Docker internal hostname.</description>
    </item>
    <item>
      <title>Boro Senpai 3</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/boroctf-2026/web/boro-senpai-3/</link>
      <pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/boroctf-2026/web/boro-senpai-3/</guid>
      <description>Flag or unlock parameter hardcoded in client-side JavaScript.</description>
    </item>
    <item>
      <title>boroGPT</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/boroctf-2026/web/borogpt/</link>
      <pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/boroctf-2026/web/borogpt/</guid>
      <description>Source-map leak reveals JWT secret, forge admin token, then exploit Jinja2 SSTI for RCE.</description>
    </item>
    <item>
      <title>Cracking the Vault</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/boroctf-2026/web/cracking-the-vault/</link>
      <pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/boroctf-2026/web/cracking-the-vault/</guid>
      <description>Password and flag hardcoded in client-side JavaScript — just read the source.</description>
    </item>
    <item>
      <title>dotdotslashflagtxt</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/boroctf-2026/web/dotdotslashflagtxt/</link>
      <pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/boroctf-2026/web/dotdotslashflagtxt/</guid>
      <description>Classic path traversal — the challenge name tells you exactly what to do.</description>
    </item>
    <item>
      <title>Drone Dash</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/boroctf-2026/web/drone-dash/</link>
      <pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/boroctf-2026/web/drone-dash/</guid>
      <description>Node.js prototype pollution via POST /api/flight-profile grants admin access.</description>
    </item>
    <item>
      <title>Kobeni&#39;s Dashboard</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/boroctf-2026/web/kobenis-dashboard/</link>
      <pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/boroctf-2026/web/kobenis-dashboard/</guid>
      <description>Abusing ImageMagick&amp;rsquo;s SVG text: pseudo-coder to read the flag file via server-side image conversion.</description>
    </item>
    <item>
      <title>Neural Sync Portal</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/boroctf-2026/web/neural-sync-portal/</link>
      <pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/boroctf-2026/web/neural-sync-portal/</guid>
      <description>SSRF via Docker internal hostname to reach the metadata service and retrieve the flag.</description>
    </item>
    <item>
      <title>Solarity</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/boroctf-2026/web/solarity/</link>
      <pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/boroctf-2026/web/solarity/</guid>
      <description>Path traversal via /view?file=../flag.txt reads the server-side flag file.</description>
    </item>
    <item>
      <title>El Bandito — TryHackMe</title>
      <link>https://th3b0ywh0l1v3d.github.io/thm/el-bandito/</link>
      <pubDate>Mon, 08 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/thm/el-bandito/</guid>
      <description>An exposed Spring Boot Actuator plus an nginx /.;/ path-ACL bypass leaks admin creds and the first flag; an HTTP/2 H2.CL desync then captures an internal bot&amp;rsquo;s request, stealing its flag cookie.</description>
    </item>
    <item>
      <title>HeartBleed — TryHackMe</title>
      <link>https://th3b0ywh0l1v3d.github.io/thm/heartbleed/</link>
      <pubDate>Mon, 08 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/thm/heartbleed/</guid>
      <description>A vulnerable nginx server exposes OpenSSL&amp;rsquo;s Heartbleed bug (CVE-2014-0160), allowing unauthenticated heap memory disclosure that leaks a plaintext HTTP POST body — and the flag — straight out of an active SSL session.</description>
    </item>
    <item>
      <title>Padelify — TryHackMe</title>
      <link>https://th3b0ywh0l1v3d.github.io/thm/padelify/</link>
      <pubDate>Mon, 08 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/thm/padelify/</guid>
      <description>A padel-tournament portal behind a deny-list ModSecurity WAF falls to a three-step chain: a User-Agent header bypass, a stored XSS that steals a moderator bot&amp;rsquo;s session cookie, and an LFI that leaks admin creds via full per-character URL-encoding.</description>
    </item>
    <item>
      <title>Plant Photographer — TryHackMe</title>
      <link>https://th3b0ywh0l1v3d.github.io/thm/plant-photographer/</link>
      <pubDate>Mon, 08 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/thm/plant-photographer/</guid>
      <description>SSRF via a pycurl download endpoint chains into file:// LFI, Werkzeug debug PIN cracking, and full RCE on a Dockerised Flask app.</description>
    </item>
    <item>
      <title>Robots — TryHackMe</title>
      <link>https://th3b0ywh0l1v3d.github.io/thm/robots/</link>
      <pubDate>Mon, 08 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/thm/robots/</guid>
      <description>XSS in a registration form exfiltrates the admin&amp;rsquo;s session cookie; RFI via the admin URL-tester gives www-data code execution; double-MD5 cracking yields SSH access, and a sudo apache2 logging trick writes a root SSH key.</description>
    </item>
    <item>
      <title>Bouncer — DalCTF 2026</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/dalctf-2026/web/bouncer/</link>
      <pubDate>Sun, 07 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/dalctf-2026/web/bouncer/</guid>
      <description>A read-only anonymous FTP gateway turns out to be a Redis health-check proxy; abusing the PORT command for an FTP bounce plus a newline-smuggled RETR inline command yields a bidirectional Redis relay that scans the subnet and reads the flag.</description>
    </item>
    <item>
      <title>Chakravyuh Defense — DalCTF 2026</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/dalctf-2026/web/chakravyuh-defense/</link>
      <pubDate>Sun, 07 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/dalctf-2026/web/chakravyuh-defense/</guid>
      <description>A defensive web CTF where you patch the vulnerable source and the grader attacks your build: Secure the Login is fixed with parameterized queries, and Render &amp;amp; Plunder is sealed by binding SSTI input as render context plus adding an object-level authorization check to kill the IDOR.</description>
    </item>
    <item>
      <title>ICEMAN — DalCTF 2026</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/dalctf-2026/web/iceman/</link>
      <pubDate>Sun, 07 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/dalctf-2026/web/iceman/</guid>
      <description>A GraphQL vault chains a crackable HS256 JWT secret (the challenge name) for tier escalation with broken object-level authorization — the unreleased album is hidden from album(id) but leaks through the label→artists→albums path.</description>
    </item>
    <item>
      <title>Baby Web — DalCTF 2026</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/dalctf-2026/web/baby-web/</link>
      <pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/dalctf-2026/web/baby-web/</guid>
      <description>A static HTML page stuffed with a movie transcript hides the flag in a paragraph marked hidden=&amp;ldquo;true&amp;rdquo; — invisible in the browser but right there in the page source.</description>
    </item>
    <item>
      <title>Cat GIFs — DalCTF 2026</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/dalctf-2026/web/cat-gifs/</link>
      <pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/dalctf-2026/web/cat-gifs/</guid>
      <description>A PHP upload app re-encodes every GIF through PHP-GD as sanitization but never validates the filename — a payload smuggled inside the GIF color palette survives the re-encode, yielding a GIF/PHP polyglot webshell and RCE.</description>
    </item>
    <item>
      <title>DEAD VAULT — Zer0d4yh31st CTF</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/zer0d4yh31st/web/dead-vault/</link>
      <pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/zer0d4yh31st/web/dead-vault/</guid>
      <description>A Money Heist–themed Flask app hides a flag split into three fragments behind a server-side URL fetcher, bypassed with a DNS-based SSRF to reach the internal API and a privileged file-read endpoint.</description>
    </item>
    <item>
      <title>Expensey Eats — DalCTF 2026</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/dalctf-2026/web/expensey-eats/</link>
      <pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/dalctf-2026/web/expensey-eats/</guid>
      <description>An alg:none JWT forgery grants admin, UNION-based SQLi reveals a hidden $99,999 vault dish, and a broken-authorization order flow lets the admin buy it for free — the flag arrives in a one-time Flask flash message.</description>
    </item>
    <item>
      <title>Heart Part 7 — DalCTF 2026</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/dalctf-2026/web/heart-part-7/</link>
      <pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/dalctf-2026/web/heart-part-7/</guid>
      <description>A Kendrick-themed Flask app chains UNION-based SQLi to leak admin creds, an admin panel exposes an internal cipher microservice, and a Heartbleed-style over-read bleeds the AES-256 master key from heap memory to decrypt the flag.</description>
    </item>
    <item>
      <title>La Casa de Papel (Secure Comms) — Zer0d4yh31st CTF</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/zer0d4yh31st/web/la-casa-de-papel/</link>
      <pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/zer0d4yh31st/web/la-casa-de-papel/</guid>
      <description>A Flask/Jinja2 app renders user-supplied names directly into a template, enabling SSTI that dumps os.environ to leak the flag stored as an environment variable.</description>
    </item>
    <item>
      <title>SecretPickle — GPN CTF 2026</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/gpn-ctf-2026/web/secretpickle/</link>
      <pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/gpn-ctf-2026/web/secretpickle/</guid>
      <description>A Pyodide client serializes requests with pickle obfuscated by a hardcoded XOR key, letting the server pickle.loads attacker data for unauthenticated root RCE, then hooking the live handler to capture the adminbot&amp;rsquo;s plaintext login password.</description>
    </item>
    <item>
      <title>Secure Secretpickle — GPN CTF 2026</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/gpn-ctf-2026/web/secure-secretpickle/</link>
      <pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/gpn-ctf-2026/web/secure-secretpickle/</guid>
      <description>The hardened secretpickle runs pickle.loads in a write-only seccomp sandbox, but the adminbot action visits an attacker URL with no scheme check and returns a screenshot, so file:///flag.txt renders the flag into the image.</description>
    </item>
    <item>
      <title>SecureForm Admin — DalCTF 2026</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/dalctf-2026/web/secureform-admin/</link>
      <pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/dalctf-2026/web/secureform-admin/</guid>
      <description>A 4-digit PIN with no rate limiting falls to brute force, the dashboard&amp;rsquo;s ORDER BY sort is blind-SQL-injectable, and the home-made sanitizer only strips &amp;lsquo;&amp;lt;&amp;rsquo; — so boolean extraction with &amp;lsquo;&amp;gt;&amp;rsquo; dumps the secrets table.</description>
    </item>
    <item>
      <title>Simple Food Notifications — GPN CTF 2026</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/gpn-ctf-2026/web/simple-food-notifications/</link>
      <pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/gpn-ctf-2026/web/simple-food-notifications/</guid>
      <description>A Flask meal-notification SSRF whose is_global filter is defeated by abusing urllib3&amp;rsquo;s retry-driven DNS re-resolution — a global IP that hangs on port 80 (8.8.8.8) outlasts dnsmasq&amp;rsquo;s 2s cache, so the retry re-resolves to 127.0.0.1 and reaches the localhost-only /vip-meal.</description>
    </item>
    <item>
      <title>Spaetzle — GPN CTF 2026</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/gpn-ctf-2026/web/spaetzle/</link>
      <pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/gpn-ctf-2026/web/spaetzle/</guid>
      <description>An MD5-only oracle over arbitrary paths is turned into a full file disclosure using the error-based PHP filter-chain oracle to leak /flag byte-by-byte.</description>
    </item>
    <item>
      <title>Tiny Web — GPN CTF 2026</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/gpn-ctf-2026/web/tiny-web/</link>
      <pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/gpn-ctf-2026/web/tiny-web/</guid>
      <description>A one-line Node server lets you inject a rel=stylesheet entry into the Link response header, which Firefox applies to the flag-bearing page, enabling CSS attribute-selector exfiltration of the cookie.</description>
    </item>
    <item>
      <title>Fancy Food Notifications — GPN CTF 2026</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/gpn-ctf-2026/web/fancy-food-notifications/</link>
      <pubDate>Fri, 05 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/gpn-ctf-2026/web/fancy-food-notifications/</guid>
      <description>Chaining a weak RNG seed (258 possible HMAC keys), an SSRF token leak, a urlparse vs urllib3 parser differential, and a URL-userinfo Basic-auth override to forge a VIP JWT and reach /vip-meal as localhost.</description>
    </item>
    <item>
      <title>Restaurant Builder — GPN CTF 2026</title>
      <link>https://th3b0ywh0l1v3d.github.io/ctf/gpn-ctf-2026/web/restaurant-builder/</link>
      <pubDate>Fri, 05 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://th3b0ywh0l1v3d.github.io/ctf/gpn-ctf-2026/web/restaurant-builder/</guid>
      <description>A FastAPI app builds Pydantic models from user-supplied field definitions, where each string value is eval()ed as a forward-reference annotation, yielding arbitrary code execution and flag exfiltration via the JSON schema.</description>
    </item>
  </channel>
</rss>
