<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Taxanehh - Blog</title>
    <link>https://stokreef.com/blog</link>
    <description>Writeups, exploits and bug bounty reports by Paul Stokreef (Taxanehh).</description>
    <language>en</language>
    <lastBuildDate>Thu, 29 Oct 2026 12:00:00 GMT</lastBuildDate>
    <atom:link href="https://stokreef.com/feed.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>One column, five rate limiters, no namespace</title>
      <link>https://stokreef.com/blog/invoiceplane-rate-limiter-namespace-collision</link>
      <guid isPermaLink="true">https://stokreef.com/blog/invoiceplane-rate-limiter-namespace-collision</guid>
      <pubDate>Thu, 29 Oct 2026 12:00:00 GMT</pubDate>
      <category>bounty</category>
      <description>InvoicePlane keeps five different rate-limit counters in a single database column. Four of them use structured, hashed keys. The login lockout writes whatever you typed in the email box, so you can type someone else&apos;s counter and fill it up for them.</description>
    </item>
    <item>
      <title>EdgeRouter Shenanigans 1: EdgeOS operator-to-root RCE</title>
      <link>https://stokreef.com/blog/edgeos-operator-to-root-rce</link>
      <guid isPermaLink="true">https://stokreef.com/blog/edgeos-operator-to-root-rce</guid>
      <pubDate>Wed, 07 Oct 2026 12:00:00 GMT</pubDate>
      <category>bounty</category>
      <description>An EdgeOS operator has no shell and no sudo. Its session cookie, however, ends up concatenated into a command that runs as root, so prefixing that cookie with a bit of shell syntax turns a GUI-only account into a root shell on the router.</description>
    </item>
    <item>
      <title>EdgeRouter Shenanigans 2: an SNMP label that runs commands</title>
      <link>https://stokreef.com/blog/edgeos-snmp-ifalias-command-injection</link>
      <guid isPermaLink="true">https://stokreef.com/blog/edgeos-snmp-ifalias-command-injection</guid>
      <pubDate>Wed, 07 Oct 2026 12:00:00 GMT</pubDate>
      <category>bounty</category>
      <description>Setting an interface alias over SNMP is supposed to change a label. EdgeOS hands that label straight to a single-string Perl system() call inside single quotes, so one apostrophe in the value turns an SNMP SET into shell commands on the router.</description>
    </item>
    <item>
      <title>EdgeRouter Shenanigans 3: a DHCP lease that ends in a root shell</title>
      <link>https://stokreef.com/blog/edgeos-dhcp-squidguard-root-rce</link>
      <guid isPermaLink="true">https://stokreef.com/blog/edgeos-dhcp-squidguard-root-rce</guid>
      <pubDate>Wed, 07 Oct 2026 12:00:00 GMT</pubDate>
      <category>bounty</category>
      <description>A DHCP client is allowed to pick its own hostname. EdgeOS writes that hostname into /etc/hosts, /etc/hosts outranks DNS for the router itself, and squidGuard fetches its blacklist over plain FTP from a hardcoded host. Four reasonable decisions that add up to unauthenticated root.</description>
    </item>
    <item>
      <title>TUDCTF 2025: Nothing App</title>
      <link>https://stokreef.com/blog/tudctf-2025-nothing-app</link>
      <guid isPermaLink="true">https://stokreef.com/blog/tudctf-2025-nothing-app</guid>
      <pubDate>Wed, 26 Nov 2025 12:00:00 GMT</pubDate>
      <category>writeup</category>
      <description>An Android app that shows nothing but a black screen still tries to phone home. The whole challenge lives in one decompiled method: lift the rotate-and-XOR routine out of MainActivity, rewrite it in Python, and the flag falls out.</description>
    </item>
    <item>
      <title>TUDCTF 2025: Pizzano&apos;s Domi</title>
      <link>https://stokreef.com/blog/tudctf-2025-pizzanos-domi</link>
      <guid isPermaLink="true">https://stokreef.com/blog/tudctf-2025-pizzanos-domi</guid>
      <pubDate>Wed, 26 Nov 2025 12:00:00 GMT</pubDate>
      <category>writeup</category>
      <description>The proxy rate-limits HTTP requests, not GraphQL operations. Aliasing hundreds of coupon checks into a single request turns a seven-hour brute force into minutes, and the backend then happily stacks the same coupon six times.</description>
    </item>
    <item>
      <title>TUDCTF 2025: Yearn for the Signs</title>
      <link>https://stokreef.com/blog/tudctf-2025-yearn-for-the-signs</link>
      <guid isPermaLink="true">https://stokreef.com/blog/tudctf-2025-yearn-for-the-signs</guid>
      <pubDate>Wed, 26 Nov 2025 12:00:00 GMT</pubDate>
      <category>writeup</category>
      <description>The flag is written on a Minecraft sign buried in a compressed region file. You never need the game: scan the .mca for zlib streams, decompress them, and read the sign text straight out of the NBT.</description>
    </item>
  </channel>
</rss>
