<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Misc on 4mN3s14 | CTF Player &amp; Student</title><link>https://john-jkar.github.io/myblog/tags/misc/</link><description>Recent content in Misc on 4mN3s14 | CTF Player &amp; Student</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 02 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://john-jkar.github.io/myblog/tags/misc/index.xml" rel="self" type="application/rss+xml"/><item><title>pyjs — CTF Writeup</title><link>https://john-jkar.github.io/myblog/posts/pyjs/</link><pubDate>Mon, 02 Mar 2026 00:00:00 +0000</pubDate><guid>https://john-jkar.github.io/myblog/posts/pyjs/</guid><description>&lt;h1 id="pyjs--daily-alpacahack-writeup"&gt;pyjs — Daily Alpacahack Writeup&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;CTF&lt;/strong&gt;: AlpacaHack / SECCON&lt;br&gt;
&lt;strong&gt;Category&lt;/strong&gt;: Misc&lt;br&gt;
&lt;strong&gt;Difficulty&lt;/strong&gt;: Hard&lt;br&gt;
&lt;strong&gt;Author&lt;/strong&gt;: minaminao&lt;/p&gt;
&lt;h2 id="challenge"&gt;Challenge&lt;/h2&gt;
&lt;p&gt;We connect to a server running this code:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; subprocess
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;code &lt;span style="color:#f92672"&gt;=&lt;/span&gt; input(&lt;span style="color:#e6db74"&gt;&amp;#34;Enter your code: &amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;res1 &lt;span style="color:#f92672"&gt;=&lt;/span&gt; subprocess&lt;span style="color:#f92672"&gt;.&lt;/span&gt;run([&lt;span style="color:#e6db74"&gt;&amp;#34;runuser&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;-u&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;nobody&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;--&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;python3&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;-c&amp;#34;&lt;/span&gt;, code], capture_output&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;True&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;assert&lt;/span&gt; res1&lt;span style="color:#f92672"&gt;.&lt;/span&gt;returncode &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;and&lt;/span&gt; res1&lt;span style="color:#f92672"&gt;.&lt;/span&gt;stdout&lt;span style="color:#f92672"&gt;.&lt;/span&gt;strip() &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;b&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;I LOVE ALPACA&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;res2 &lt;span style="color:#f92672"&gt;=&lt;/span&gt; subprocess&lt;span style="color:#f92672"&gt;.&lt;/span&gt;run([&lt;span style="color:#e6db74"&gt;&amp;#34;runuser&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;-u&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;nobody&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;--&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;node&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;-e&amp;#34;&lt;/span&gt;, code], capture_output&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;True&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;assert&lt;/span&gt; res2&lt;span style="color:#f92672"&gt;.&lt;/span&gt;returncode &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;and&lt;/span&gt; res2&lt;span style="color:#f92672"&gt;.&lt;/span&gt;stdout&lt;span style="color:#f92672"&gt;.&lt;/span&gt;strip() &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;b&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;I LOVE SECCON&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print(&lt;span style="color:#e6db74"&gt;&amp;#34;Wow... Alpaca&lt;/span&gt;&lt;span style="color:#e6db74"&gt;{REDACTED}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Goal&lt;/strong&gt;: Submit a single line of code that prints &lt;code&gt;I LOVE ALPACA&lt;/code&gt; when run as Python and &lt;code&gt;I LOVE SECCON&lt;/code&gt; when run as Node.js.&lt;/p&gt;</description></item><item><title>Dancing Cursor - Daily Alpacahack Writeup</title><link>https://john-jkar.github.io/myblog/posts/missing-cursor/</link><pubDate>Fri, 20 Feb 2026 06:00:00 +0000</pubDate><guid>https://john-jkar.github.io/myblog/posts/missing-cursor/</guid><description>&lt;h1 id="dancing-cursor--daily--alpacahack-writeup"&gt;Dancing Cursor — Daily Alpacahack Writeup&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Challenge:&lt;/strong&gt; Dancing Cursor&lt;br&gt;
&lt;strong&gt;Category:&lt;/strong&gt; Rev / Misc&lt;br&gt;
&lt;strong&gt;Difficulty:&lt;/strong&gt; Medium&lt;/p&gt;
&lt;h2 id="the-challenge"&gt;The Challenge&lt;/h2&gt;
&lt;p&gt;We&amp;rsquo;re handed a single command:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo SGVyZSBpcyB0aGUgZmxhZzo... | base64 -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Running it in a terminal flashes the message:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Here is the flag:
Xiqxox{==============================================}
... but it has been wiped away.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Clearly &lt;code&gt;Xiqxox{===}&lt;/code&gt; is a decoy. The real flag was written and then erased before we could see it.&lt;/p&gt;
&lt;h2 id="understanding-the-trick"&gt;Understanding the Trick&lt;/h2&gt;
&lt;p&gt;Decoding the base64 gives raw bytes that are mostly &lt;strong&gt;ANSI terminal escape sequences&lt;/strong&gt;. The structure is:&lt;/p&gt;</description></item></channel></rss>