<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ctf on icctx</title><link>http://icctx.xyz/tags/ctf/</link><description>Recent content in Ctf on icctx</description><generator>Hugo</generator><language>en-US</language><copyright>Copyright © 2026, icctx.</copyright><lastBuildDate>Tue, 04 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="http://icctx.xyz/tags/ctf/index.xml" rel="self" type="application/rss+xml"/><item><title>l3ak ctf 2026: pwn writeup (supervisor, piet)</title><link>http://icctx.xyz/blog/l3akctf26/</link><pubDate>Tue, 04 Aug 2026 00:00:00 +0000</pubDate><guid>http://icctx.xyz/blog/l3akctf26/</guid><description>&lt;h1 id="intro"&gt;Intro&lt;/h1&gt;
&lt;p&gt;This weekend I played L3AK CTF 2026 with CTF Academy @ ASU.&lt;/p&gt;
&lt;p&gt;We placed 11th.&lt;/p&gt;
&lt;p&gt;I got first blood on supervisor (5 solves) and second solve on piet (17 solves).&lt;/p&gt;
&lt;p&gt;This post covers both:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;supervisor - an emulator-based sandbox&lt;/li&gt;
&lt;li&gt;piet - an esolang interpreter that takes a .png as its input&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id="1-supervisor"&gt;1. Supervisor&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://raw.githubusercontent.com/icctx/ctf/refs/heads/main/l3ak.2026/supervisor/pwn_supervisor.tar.gz"&gt;download&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;|&lt;/span&gt;-- Dockerfile
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;|&lt;/span&gt;-- docker-compose.yml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;3&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;|&lt;/span&gt;-- readflag.c
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;4&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;|&lt;/span&gt;-- supervisor
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;5&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="sb"&gt;`&lt;/span&gt;-- supervisor.c
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;6&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;7&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;1&lt;/span&gt; directory, &lt;span class="m"&gt;5&lt;/span&gt; files
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="recon"&gt;Recon&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;$ pwn checksec ./supervisor
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt; Arch: amd64-64-little
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt; RELRO: Partial RELRO
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt; Stack: Canary found
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt; NX: NX enabled
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt; PIE: PIE enabled
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt; FORTIFY: Enabled
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt; SHSTK: Enabled
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt; IBT: Enabled
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt; Stripped: No
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;Dockerfile&lt;/code&gt;&lt;/p&gt;</description></item><item><title>b01lers ctf 2026: kernel pwn writeup, pt2 (multifiles)</title><link>http://icctx.xyz/blog/multifiles/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>http://icctx.xyz/blog/multifiles/</guid><description>&lt;h1 id="intro"&gt;Intro&lt;/h1&gt;
&lt;p&gt;Previously I wrote a writeup on the first kernel challenge from this CTF — if you haven&amp;rsquo;t read it yet, I recommend starting with &lt;a href="https://icctx.xyz/blog/throughthewall/"&gt;Part 1&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This post covers &lt;strong&gt;multifiles&lt;/strong&gt;, the second kernel pwn challenge.&lt;/p&gt;
&lt;p&gt;Since I&amp;rsquo;m releasing this a bit late: in Part 1 I reimplemented the exploit from scratch in Rust to cover every step, but this time you&amp;rsquo;ll get a refactored version of the original C exploit instead.&lt;/p&gt;</description></item><item><title>b01lers ctf 2026: kernel pwn writeup, pt1 (throughthewall)</title><link>http://icctx.xyz/blog/throughthewall/</link><pubDate>Thu, 30 Apr 2026 00:00:00 +0000</pubDate><guid>http://icctx.xyz/blog/throughthewall/</guid><description>&lt;h1 id="intro"&gt;Intro&lt;/h1&gt;
&lt;p&gt;Hello! Recently, I competed in b01lersc.tf with team 0bscuri7y, where we placed 12th. I managed to solve all the pwn challenges, and in this post, I’ll walk through my solutions for the kernel pwn tasks: throughthewall (part 1) and multifiles (part 2).&lt;/p&gt;
&lt;p&gt;&lt;img src="http://icctx.xyz/images/tw_1.png" alt="alt text"&gt;&lt;/p&gt;
&lt;h1 id="throughthewall"&gt;throughthewall&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://raw.githubusercontent.com/icctx/ctf/refs/heads/main/b01lers.2026/throughthewall/handout.zip"&gt;download&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="recon"&gt;Recon&lt;/h2&gt;
&lt;p&gt;&lt;img src="http://icctx.xyz/images/tw_2.png" alt="alt text"&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# start.sh&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt;qemu-system-x86_64 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt; -m 256M &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt; -nographic &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt; -kernel ./bzImage &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt; -append &lt;span class="s2"&gt;&amp;#34;console=ttyS0 loglevel=3 oops=panic panic=-1 pti=on kaslr&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt; -no-reboot &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt; -cpu qemu64,+smep,+smap &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt; -smp &lt;span class="m"&gt;2&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt; -initrd ./initramfs.cpio.gz &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;13&lt;/span&gt;&lt;span class="cl"&gt; -monitor /dev/null &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;14&lt;/span&gt;&lt;span class="cl"&gt; -s &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;15&lt;/span&gt;&lt;span class="cl"&gt; 2&amp;gt;&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; tee vm.log
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;First, create the root directory and unpack the initramfs.&lt;/p&gt;</description></item></channel></rss>