<?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>General Skills on picoCTF Writeup</title><link>https://picoctf-writeup.pinjim.dev/tags/general-skills/</link><description>Recent content in General Skills on picoCTF Writeup</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 15 Jul 2026 02:30:00 +0800</lastBuildDate><atom:link href="https://picoctf-writeup.pinjim.dev/tags/general-skills/index.xml" rel="self" type="application/rss+xml"/><item><title>Tab, Tab, Attack</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/tab-tab-attack/</link><pubDate>Wed, 15 Jul 2026 02:30:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/tab-tab-attack/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/189"&gt;https://learn.cylabacademy.org/library/189&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;p&gt;下載並解壓縮後，可以看到是一個有很多層的目錄，&lt;del&gt;然後就可以直接複製整個路徑&lt;/del&gt;。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ unzip Addadshashanammu.zip
Archive: Addadshashanammu.zip
creating: Addadshashanammu/
creating: Addadshashanammu/Almurbalarammi/
creating: Addadshashanammu/Almurbalarammi/Ashalmimilkala/
creating: Addadshashanammu/Almurbalarammi/Ashalmimilkala/Assurnabitashpi/
creating: Addadshashanammu/Almurbalarammi/Ashalmimilkala/Assurnabitashpi/Maelkashishi/
creating: Addadshashanammu/Almurbalarammi/Ashalmimilkala/Assurnabitashpi/Maelkashishi/Onnissiralis/
creating: Addadshashanammu/Almurbalarammi/Ashalmimilkala/Assurnabitashpi/Maelkashishi/Onnissiralis/Ularradallaku/
extracting: Addadshashanammu/Almurbalarammi/Ashalmimilkala/Assurnabitashpi/Maelkashishi/Onnissiralis/Ularradallaku/fang-of-haynekhtnamet.c
inflating: Addadshashanammu/Almurbalarammi/Ashalmimilkala/Assurnabitashpi/Maelkashishi/Onnissiralis/Ularradallaku/fang-of-haynekhtnamet
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;題目希望使用者只用 TAB 進行補全，所以可以輸入 &lt;code&gt;cat&lt;/code&gt; 之後不斷按下 TAB 補全目錄或檔案名稱，最後就可以順讀取利包含 flag 的檔案。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ cat Addadshashanammu/Almurbalarammi/Ashalmimilkala/Assurnabitashpi/Maelkashishi/Onnissiralis/Ularradallaku/fang-of-haynekhtnamet.c
#include &amp;lt;stdio.h&amp;gt;
int main(){
printf(&amp;#34;*ZAP!* picoCTF{l3v-------------------------427}\n&amp;#34;);
}
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Magikarp Ground Mission</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/magikarp-ground-mission/</link><pubDate>Mon, 13 Jul 2026 04:25:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/magikarp-ground-mission/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/189"&gt;https://learn.cylabacademy.org/library/189&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;p&gt;啟動後題目會提供目標主機名稱、使用者名稱、密碼、port 等資訊，類似下方字串：
Login via ssh as &lt;code&gt;ctf-player&lt;/code&gt; with the password, &lt;code&gt;8c606eb1&lt;/code&gt; on the host &lt;code&gt;wily-courier.picoctf.net&lt;/code&gt; and port &lt;code&gt;64506&lt;/code&gt;.
我們要使用 &lt;code&gt;ssh&lt;/code&gt; 指令來連線到目標主機&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;ssh -p &amp;lt;port&amp;gt; &amp;lt;username&amp;gt;@&amp;lt;host&amp;gt;
ssh -p 64506 ctf-player@wily-courier.picoctf
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;連線後會提示確認 fingerprint 是否正確，輸入 &lt;code&gt;yes&lt;/code&gt;
之後輸入密碼 (密碼不會顯示出來)&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;The authenticity of host &amp;#39;[wily-courier.picoctf.net]:64506 ([18.189.99.27]:64506)&amp;#39; can&amp;#39;t be established.
ED25519 key fingerprint is: SHA256:ErlUUvYlrAxfSW1tIdzfOnGTBSr5OFkZvz0nMN4Vodw
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added &amp;#39;[wily-courier.picoctf.net]:64506&amp;#39; (ED25519) to the list of known hosts.
** WARNING: connection is not using a post-quantum key exchange algorithm.
** This session may be vulnerable to &amp;#34;store now, decrypt later&amp;#34; attacks.
** The server may need to be upgraded. See https://openssh.com/pq.html
ctf-player@wily-courier.picoctf.net&amp;#39;s password:
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;連線到主機後，使用 &lt;code&gt;ls&lt;/code&gt; 指令查看當前目錄下有甚麼檔案&lt;/p&gt;</description></item><item><title>Codebook</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/codebook/</link><pubDate>Mon, 13 Jul 2026 04:15:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/codebook/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/238"&gt;https://learn.cylabacademy.org/library/238&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;p&gt;將 &lt;code&gt;codebook.txt&lt;/code&gt; 與 &lt;code&gt;code.py&lt;/code&gt; 下載到同個目錄中。
執行 &lt;code&gt;code.py&lt;/code&gt; 即可得到 flag。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ python code.py
picoCTF{c0d------------------82c}
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="題目原始碼"&gt;題目原始碼&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;codebook.txt&lt;/code&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;azbycxdwevfugthsirjqkplomn
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;code&gt;code.py&lt;/code&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 5
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 6
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 7
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 8
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 9
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;10
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;11
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;12
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;13
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;14
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;15
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;16
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;17
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;18
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;19
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;20
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;21
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;22
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;23
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;24
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;25
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;26
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;27
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;28
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;29
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;30
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;31
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;32
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;33
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;34
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;35
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;36
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;37
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;38
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;39
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;40
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;41
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;42
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;43
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; random
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; sys
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;str_xor&lt;/span&gt;(secret, key):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;#extend key to secret length&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; new_key &lt;span style="color:#f92672"&gt;=&lt;/span&gt; key
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; i &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;while&lt;/span&gt; len(new_key) &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; len(secret):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; new_key &lt;span style="color:#f92672"&gt;=&lt;/span&gt; new_key &lt;span style="color:#f92672"&gt;+&lt;/span&gt; key[i]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; i &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (i &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;) &lt;span style="color:#f92672"&gt;%&lt;/span&gt; len(key)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;.&lt;/span&gt;join([chr(ord(secret_c) &lt;span style="color:#f92672"&gt;^&lt;/span&gt; ord(new_key_c)) &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; (secret_c,new_key_c) &lt;span style="color:#f92672"&gt;in&lt;/span&gt; zip(secret,new_key)])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;flag_enc &lt;span style="color:#f92672"&gt;=&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x13&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x01&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x17&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x07&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x2c&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x3a&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x2f&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x1a&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x0d&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x53&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x0c&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x47&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x0a&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x5f&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x5e&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x02&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x3e&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x5a&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x56&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x5d&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x45&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x5d&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x58&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x31&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x58&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x58&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x59&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x02&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x51&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x4c&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x5a&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x0c&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x13&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;print_flag&lt;/span&gt;():
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;try&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; codebook &lt;span style="color:#f92672"&gt;=&lt;/span&gt; open(&lt;span style="color:#e6db74"&gt;&amp;#39;codebook.txt&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;r&amp;#39;&lt;/span&gt;)&lt;span style="color:#f92672"&gt;.&lt;/span&gt;read()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; password &lt;span style="color:#f92672"&gt;=&lt;/span&gt; codebook[&lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;] &lt;span style="color:#f92672"&gt;+&lt;/span&gt; codebook[&lt;span style="color:#ae81ff"&gt;14&lt;/span&gt;] &lt;span style="color:#f92672"&gt;+&lt;/span&gt; codebook[&lt;span style="color:#ae81ff"&gt;13&lt;/span&gt;] &lt;span style="color:#f92672"&gt;+&lt;/span&gt; codebook[&lt;span style="color:#ae81ff"&gt;14&lt;/span&gt;] &lt;span style="color:#f92672"&gt;+&lt;/span&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; codebook[&lt;span style="color:#ae81ff"&gt;23&lt;/span&gt;]&lt;span style="color:#f92672"&gt;+&lt;/span&gt; codebook[&lt;span style="color:#ae81ff"&gt;25&lt;/span&gt;] &lt;span style="color:#f92672"&gt;+&lt;/span&gt; codebook[&lt;span style="color:#ae81ff"&gt;16&lt;/span&gt;] &lt;span style="color:#f92672"&gt;+&lt;/span&gt; codebook[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;] &lt;span style="color:#f92672"&gt;+&lt;/span&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; codebook[&lt;span style="color:#ae81ff"&gt;25&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; flag &lt;span style="color:#f92672"&gt;=&lt;/span&gt; str_xor(flag_enc, password)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print(flag)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;except&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;FileNotFoundError&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;#39;Couldn&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\&amp;#39;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;t find codebook.txt. Did you download that file into the same directory as this script?&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;main&lt;/span&gt;():
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print_flag()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; __name__ &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; main()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/p&gt;</description></item><item><title>convertme.py</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/convertme-py/</link><pubDate>Mon, 13 Jul 2026 04:00:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/convertme-py/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/239"&gt;https://learn.cylabacademy.org/library/239&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;p&gt;使用 &lt;code&gt;wget&lt;/code&gt; 指令下載檔案。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;wget https://artifacts.picoctf.net/c/24/convertme.py
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;使用 &lt;code&gt;python&lt;/code&gt; 執行腳本，腳本惠要求將一個十進位數字轉為二進位，輸入後即可得到 flag。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ python convertme.py
If 16 is in decimal base, what is it in binary base?
Answer: 10000
That is correct! Here&amp;#39;s your flag: picoCTF{4ll-----------------b39}
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="題目原始碼"&gt;題目原始碼&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 5
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 6
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 7
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 8
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 9
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;10
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;11
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;12
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;13
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;14
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;15
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;16
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;17
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;18
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;19
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;20
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;21
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;22
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;23
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;24
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;25
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;26
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;27
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;28
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;29
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;30
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;31
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;32
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;33
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;34
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;35
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; random
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;str_xor&lt;/span&gt;(secret, key):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;#extend key to secret length&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; new_key &lt;span style="color:#f92672"&gt;=&lt;/span&gt; key
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; i &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;while&lt;/span&gt; len(new_key) &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; len(secret):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; new_key &lt;span style="color:#f92672"&gt;=&lt;/span&gt; new_key &lt;span style="color:#f92672"&gt;+&lt;/span&gt; key[i]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; i &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (i &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;) &lt;span style="color:#f92672"&gt;%&lt;/span&gt; len(key)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;.&lt;/span&gt;join([chr(ord(secret_c) &lt;span style="color:#f92672"&gt;^&lt;/span&gt; ord(new_key_c)) &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; (secret_c,new_key_c) &lt;span style="color:#f92672"&gt;in&lt;/span&gt; zip(secret,new_key)])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;flag_enc &lt;span style="color:#f92672"&gt;=&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x15&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x07&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x08&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x06&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x27&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x21&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x23&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x15&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x5f&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x05&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x08&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x2a&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x1c&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x5e&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x1e&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x1b&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x3b&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x17&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x51&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x5b&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x58&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x5c&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x3b&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x42&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x57&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x5c&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x0d&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x5f&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x06&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x46&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x5c&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x13&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;num &lt;span style="color:#f92672"&gt;=&lt;/span&gt; random&lt;span style="color:#f92672"&gt;.&lt;/span&gt;choice(range(&lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;,&lt;span style="color:#ae81ff"&gt;101&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&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;#39;If &amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; str(num) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39; is in decimal base, what is it in binary base?&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ans &lt;span style="color:#f92672"&gt;=&lt;/span&gt; input(&lt;span style="color:#e6db74"&gt;&amp;#39;Answer: &amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;try&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ans_num &lt;span style="color:#f92672"&gt;=&lt;/span&gt; int(ans, base&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; ans_num &lt;span style="color:#f92672"&gt;==&lt;/span&gt; num:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; flag &lt;span style="color:#f92672"&gt;=&lt;/span&gt; str_xor(flag_enc, &lt;span style="color:#e6db74"&gt;&amp;#39;enkidu&amp;#39;&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;#39;That is correct! Here&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\&amp;#39;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;s your flag: &amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; flag)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print(str(ans_num) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39; and &amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; str(num) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39; are not equal.&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;except&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;ValueError&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;#39;That isn&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\&amp;#39;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;t a binary number. Binary numbers contain only 1&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\&amp;#39;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;s and 0&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\&amp;#39;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;s&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>fixme1.py</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/fixme1-py/</link><pubDate>Mon, 13 Jul 2026 03:50:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/fixme1-py/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/240"&gt;https://learn.cylabacademy.org/library/240&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;p&gt;下載腳本並執行後可以發現在第 20 行的地方報錯。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ python fixme1.py
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; File &lt;span style="color:#e6db74"&gt;&amp;#34;/home/kali/workspace/fixme1.py&amp;#34;&lt;/span&gt;, line &lt;span style="color:#ae81ff"&gt;20&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print&lt;span style="color:#f92672"&gt;(&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;That is correct! Here\&amp;#39;&lt;/span&gt;s your flag: &lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt; + flag&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;IndentationError: unexpected indent
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;使用 &lt;code&gt;nano&lt;/code&gt; 或其他習慣的文字編輯器編輯檔案，將第 20 行最開頭的兩個空格刪除。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;nano fixme2.py
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;要退出 &lt;code&gt;nano&lt;/code&gt; 要按下 Ctrl + X，接著按下 Y，再按下 Enter 即可退出。
退出後再次執行 python 腳本即可得到 flag。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ python fixme1.py
That is correct! Here&amp;#39;s your flag: picoCTF{1nd-------------------c8f}
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="題目原始碼"&gt;題目原始碼&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 5
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 6
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 7
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 8
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 9
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;10
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;11
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;12
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;13
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;14
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;15
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;16
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;17
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;18
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;19
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;20
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;21
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; random
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;str_xor&lt;/span&gt;(secret, key):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;#extend key to secret length&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; new_key &lt;span style="color:#f92672"&gt;=&lt;/span&gt; key
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; i &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;while&lt;/span&gt; len(new_key) &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; len(secret):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; new_key &lt;span style="color:#f92672"&gt;=&lt;/span&gt; new_key &lt;span style="color:#f92672"&gt;+&lt;/span&gt; key[i]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; i &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (i &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;) &lt;span style="color:#f92672"&gt;%&lt;/span&gt; len(key)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;.&lt;/span&gt;join([chr(ord(secret_c) &lt;span style="color:#f92672"&gt;^&lt;/span&gt; ord(new_key_c)) &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; (secret_c,new_key_c) &lt;span style="color:#f92672"&gt;in&lt;/span&gt; zip(secret,new_key)])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;flag_enc &lt;span style="color:#f92672"&gt;=&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x15&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x07&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x08&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x06&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x27&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x21&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x23&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x15&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x5a&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x07&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x00&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x46&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x0b&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x1a&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x5a&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x1d&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x1d&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x2a&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x06&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x1c&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x5a&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x5c&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x55&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x40&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x3a&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x58&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x0a&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x5d&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x53&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x43&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x06&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x56&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x0d&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;flag &lt;span style="color:#f92672"&gt;=&lt;/span&gt; str_xor(flag_enc, &lt;span style="color:#e6db74"&gt;&amp;#39;enkidu&amp;#39;&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;#39;That is correct! Here&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\&amp;#39;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;s your flag: &amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; flag)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>fixme2.py</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/fixme2-py/</link><pubDate>Mon, 13 Jul 2026 03:40:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/fixme2-py/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/241"&gt;https://learn.cylabacademy.org/library/241&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;p&gt;下載腳本並執行後可以發現在第 22 行的地方報錯。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ python fixme2.py
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; File &lt;span style="color:#e6db74"&gt;&amp;#34;/home/kali/workspace/fixme2.py&amp;#34;&lt;/span&gt;, line &lt;span style="color:#ae81ff"&gt;22&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; flag &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ^^^^^^^^^
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SyntaxError: invalid syntax. Maybe you meant &lt;span style="color:#e6db74"&gt;&amp;#39;==&amp;#39;&lt;/span&gt; or &lt;span style="color:#e6db74"&gt;&amp;#39;:=&amp;#39;&lt;/span&gt; instead of &lt;span style="color:#e6db74"&gt;&amp;#39;=&amp;#39;&lt;/span&gt;?
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;使用 &lt;code&gt;nano&lt;/code&gt; 或其他習慣的文字編輯器編輯檔案，將第 22 行的 &lt;code&gt;=&lt;/code&gt; 改成 &lt;code&gt;==&lt;/code&gt;。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;nano fixme2.py
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;要退出 &lt;code&gt;nano&lt;/code&gt; 要按下 Ctrl + X，接著按下 Y，再按下 Enter 即可退出。
退出後再次執行 python 腳本即可得到 flag。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ python fixme2.py
That is correct! Here&amp;#39;s your flag: picoCTF{3qu--------------------------efc}
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="題目原始碼"&gt;題目原始碼&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 5
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 6
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 7
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 8
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 9
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;10
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;11
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;12
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;13
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;14
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;15
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;16
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;17
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;18
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;19
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;20
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;21
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;22
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;23
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;24
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;25
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;26
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;27
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; random
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;str_xor&lt;/span&gt;(secret, key):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;#extend key to secret length&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; new_key &lt;span style="color:#f92672"&gt;=&lt;/span&gt; key
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; i &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;while&lt;/span&gt; len(new_key) &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; len(secret):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; new_key &lt;span style="color:#f92672"&gt;=&lt;/span&gt; new_key &lt;span style="color:#f92672"&gt;+&lt;/span&gt; key[i]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; i &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (i &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;) &lt;span style="color:#f92672"&gt;%&lt;/span&gt; len(key)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;.&lt;/span&gt;join([chr(ord(secret_c) &lt;span style="color:#f92672"&gt;^&lt;/span&gt; ord(new_key_c)) &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; (secret_c,new_key_c) &lt;span style="color:#f92672"&gt;in&lt;/span&gt; zip(secret,new_key)])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;flag_enc &lt;span style="color:#f92672"&gt;=&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x15&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x07&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x08&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x06&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x27&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x21&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x23&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x15&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x58&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x18&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x11&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x41&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x09&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x5f&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x1f&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x10&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x3b&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x1b&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x55&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x1a&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x34&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x5d&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x51&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x40&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x54&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x09&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x05&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x04&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x57&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x1b&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x11&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x31&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x0d&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x5f&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x05&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x40&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x04&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x0b&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x0d&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x0a&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x19&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;flag &lt;span style="color:#f92672"&gt;=&lt;/span&gt; str_xor(flag_enc, &lt;span style="color:#e6db74"&gt;&amp;#39;enkidu&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Check that flag is not empty&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; flag &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&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;#39;String XOR encountered a problem, quitting.&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;else&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;#39;That is correct! Here&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\&amp;#39;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;s your flag: &amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; flag)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Glitch Cat</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/glitch-cat/</link><pubDate>Mon, 13 Jul 2026 03:10:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/glitch-cat/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/242"&gt;https://learn.cylabacademy.org/library/242&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;p&gt;啟動題目並使用 &lt;code&gt;nc&lt;/code&gt; 連線後，會得到一個包含 &lt;code&gt;chr(0x61)&lt;/code&gt; 的字串。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ nc saturn.picoctf.net 65005
&amp;#39;picoCTF{gl17ch_m3_n07_&amp;#39; + chr(0x61) + chr(0x34) + chr(0x33) + chr(0x39) + chr(0x32) + chr(0x64) + chr(0x32) + chr(0x65) + &amp;#39;}&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;要解讀該字串有幾種方法，可以手動對照 ASCII 16 進為，或是直接使用 python 印出字串，就會自動轉成原始字元。使用 &lt;code&gt;python&lt;/code&gt; 指令啟動 python 環境，用 &lt;code&gt;print&lt;/code&gt; 將字串印出。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; print(&amp;#39;picoCTF{gl17ch_m3_n07_&amp;#39; + chr(0x61) + chr(0x34) + chr(0x33) + chr(0x39) + chr(0x32) + chr(0x64) + chr(0x32) + chr(0x65) + &amp;#39;}&amp;#39;)
picoCTF{gl1----------------d2e}
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>HashingJobApp</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/hashingjobapp/</link><pubDate>Mon, 13 Jul 2026 03:00:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/hashingjobapp/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/243"&gt;https://learn.cylabacademy.org/library/243&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;p&gt;啟動題目後，使用 &lt;code&gt;nc&lt;/code&gt; 指令連線後，題目會提供一個字串，要求使用 md5 雜湊後的值，輸入正確三次即可得到 flag。可以搜尋 md5 雜湊工具、&lt;a href="https://gchq.github.io/CyberChef/#recipe=MD5()"&gt;cyberchek&lt;/a&gt;、或是使用 &lt;code&gt;md5sum&lt;/code&gt; 指令。
&lt;code&gt;md5sum&lt;/code&gt; 使用方式：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ echo -n &amp;#34;caffeine&amp;#34; | md5sum
e724f8b8a8349afb5beaeaa300323933 -
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;實際連線：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ nc saturn.picoctf.net 56275
Please md5 hash the text between quotes, excluding the quotes: &amp;#39;caffeine&amp;#39;
Answer:
e724f8b8a8349afb5beaeaa300323933
e724f8b8a8349afb5beaeaa300323933
Correct.
Please md5 hash the text between quotes, excluding the quotes: &amp;#39;Japan&amp;#39;
Answer:
53a577bb3bc587b0c28ab808390f1c9b
53a577bb3bc587b0c28ab808390f1c9b
Correct.
Please md5 hash the text between quotes, excluding the quotes: &amp;#39;hangnails&amp;#39;
Answer:
7e3193d5ef5d764bfd8874dda4b5253a
7e3193d5ef5d764bfd8874dda4b5253a
Correct.
picoCTF{4pp-----------------------de2}
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>PW Crack 1</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/pw-crack-1/</link><pubDate>Mon, 13 Jul 2026 02:45:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/pw-crack-1/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/245"&gt;https://learn.cylabacademy.org/library/245&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;p&gt;將 &lt;code&gt;level1.py&lt;/code&gt; 以及 &lt;code&gt;level1.flag.txt.enc&lt;/code&gt; 兩個檔案放在同個目錄下。
可以看到 &lt;code&gt;level1.py&lt;/code&gt; 第 19 行有寫出密碼&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;user_pw == &amp;#34;1e1a&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;執行腳本後輸入密碼 &lt;code&gt;1e1a&lt;/code&gt; 即可得到 flag。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ python level1.py
Please enter correct password for flag: 1e1a
Welcome back... your flag, user:
picoCTF{545---------------060}
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="題目原始碼"&gt;題目原始碼&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;level1.py&lt;/code&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 5
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 6
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 7
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 8
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 9
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;10
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;11
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;12
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;13
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;14
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;15
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;16
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;17
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;18
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;19
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;20
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;21
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;22
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;23
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;24
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;25
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;26
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;27
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;28
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;### THIS FUNCTION WILL NOT HELP YOU FIND THE FLAG --LT ########################&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;str_xor&lt;/span&gt;(secret, key):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;#extend key to secret length&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; new_key &lt;span style="color:#f92672"&gt;=&lt;/span&gt; key
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; i &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;while&lt;/span&gt; len(new_key) &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; len(secret):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; new_key &lt;span style="color:#f92672"&gt;=&lt;/span&gt; new_key &lt;span style="color:#f92672"&gt;+&lt;/span&gt; key[i]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; i &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (i &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;) &lt;span style="color:#f92672"&gt;%&lt;/span&gt; len(key)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;.&lt;/span&gt;join([chr(ord(secret_c) &lt;span style="color:#f92672"&gt;^&lt;/span&gt; ord(new_key_c)) &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; (secret_c,new_key_c) &lt;span style="color:#f92672"&gt;in&lt;/span&gt; zip(secret,new_key)])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;###############################################################################&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;flag_enc &lt;span style="color:#f92672"&gt;=&lt;/span&gt; open(&lt;span style="color:#e6db74"&gt;&amp;#39;level1.flag.txt.enc&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;rb&amp;#39;&lt;/span&gt;)&lt;span style="color:#f92672"&gt;.&lt;/span&gt;read()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;level_1_pw_check&lt;/span&gt;():
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; user_pw &lt;span style="color:#f92672"&gt;=&lt;/span&gt; input(&lt;span style="color:#e6db74"&gt;&amp;#34;Please enter correct password for flag: &amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt;( user_pw &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;1e1a&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;Welcome back... your flag, user:&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; decryption &lt;span style="color:#f92672"&gt;=&lt;/span&gt; str_xor(flag_enc&lt;span style="color:#f92672"&gt;.&lt;/span&gt;decode(), user_pw)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print(decryption)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&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;That password is incorrect&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;level_1_pw_check()&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/p&gt;</description></item><item><title>PW Crack 2</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/pw-crack-2/</link><pubDate>Mon, 13 Jul 2026 02:30:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/pw-crack-2/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/246"&gt;https://learn.cylabacademy.org/library/246&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;p&gt;將 &lt;code&gt;level2.py&lt;/code&gt; 以及 &lt;code&gt;level2.flag.txt.enc&lt;/code&gt; 兩個檔案放在同個目錄下。
查看題目原始碼，可以看到第 18 行，有寫出 &lt;code&gt;user_pw&lt;/code&gt; 的值在等於多少的情況下，會通過。
將 &lt;code&gt;user_pw&lt;/code&gt; 的 16 進位 ASCII 轉成字元是 &lt;code&gt;39ce&lt;/code&gt;。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;user_pw == chr(0x33) + chr(0x39) + chr(0x63) + chr(0x65)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;執行腳本後輸入 &lt;code&gt;39ce&lt;/code&gt; 密碼即可得到 flag。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ python3 level2.py
Please enter correct password for flag: 39ce
Welcome back... your flag, user:
picoCTF{tr4----------------42e}
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="題目原始碼"&gt;題目原始碼&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;level2.py&lt;/code&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 5
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 6
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 7
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 8
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 9
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;10
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;11
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;12
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;13
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;14
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;15
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;16
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;17
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;18
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;19
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;20
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;21
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;22
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;23
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;24
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;25
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;26
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;27
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;### THIS FUNCTION WILL NOT HELP YOU FIND THE FLAG --LT ########################&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;str_xor&lt;/span&gt;(secret, key):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;#extend key to secret length&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; new_key &lt;span style="color:#f92672"&gt;=&lt;/span&gt; key
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; i &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;while&lt;/span&gt; len(new_key) &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; len(secret):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; new_key &lt;span style="color:#f92672"&gt;=&lt;/span&gt; new_key &lt;span style="color:#f92672"&gt;+&lt;/span&gt; key[i]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; i &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (i &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;) &lt;span style="color:#f92672"&gt;%&lt;/span&gt; len(key)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;.&lt;/span&gt;join([chr(ord(secret_c) &lt;span style="color:#f92672"&gt;^&lt;/span&gt; ord(new_key_c)) &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; (secret_c,new_key_c) &lt;span style="color:#f92672"&gt;in&lt;/span&gt; zip(secret,new_key)])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;###############################################################################&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;flag_enc &lt;span style="color:#f92672"&gt;=&lt;/span&gt; open(&lt;span style="color:#e6db74"&gt;&amp;#39;level2.flag.txt.enc&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;rb&amp;#39;&lt;/span&gt;)&lt;span style="color:#f92672"&gt;.&lt;/span&gt;read()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;level_2_pw_check&lt;/span&gt;():
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; user_pw &lt;span style="color:#f92672"&gt;=&lt;/span&gt; input(&lt;span style="color:#e6db74"&gt;&amp;#34;Please enter correct password for flag: &amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt;( user_pw &lt;span style="color:#f92672"&gt;==&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x33&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x39&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x63&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; chr(&lt;span style="color:#ae81ff"&gt;0x65&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;Welcome back... your flag, user:&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; decryption &lt;span style="color:#f92672"&gt;=&lt;/span&gt; str_xor(flag_enc&lt;span style="color:#f92672"&gt;.&lt;/span&gt;decode(), user_pw)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print(decryption)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&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;That password is incorrect&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;level_2_pw_check()&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/p&gt;</description></item><item><title>runme.py</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/runme-py/</link><pubDate>Mon, 13 Jul 2026 02:15:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/runme-py/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/250"&gt;https://learn.cylabacademy.org/library/250&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;p&gt;這題題目官方希望可以學習使用 &lt;code&gt;wget&lt;/code&gt; 和 &lt;code&gt;python&lt;/code&gt; 執行指令。假設只是要拿到 flag，可以直接下載後打開查看。
以下是官方希望的做法：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;從網站複製檔案連結，到 webshell 或是自己的 linux 主機使用 &lt;code&gt;wget&lt;/code&gt; 指令下載檔案。&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;wget https://artifacts.picoctf.net/c/34/runme.py
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="2"&gt;
&lt;li&gt;下載後得到一個 &lt;code&gt;runme.py&lt;/code&gt; 檔案，使用 &lt;code&gt;python3&lt;/code&gt; 指令執行，即可得到 flag。&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ python3 runme.py
picoCTF{run--------run}
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>First Find</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/first-find/</link><pubDate>Sun, 12 Jul 2026 23:50:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/first-find/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/320"&gt;https://learn.cylabacademy.org/library/320&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;p&gt;題目目標是找到 &lt;code&gt;uber-secret.txt&lt;/code&gt; 這個檔案，在 linux 找檔案可以使用 &lt;code&gt;find&lt;/code&gt; 這個指令，下載並解壓縮檔案後，使用以下指令尋找 &lt;code&gt;uber-secret.txt&lt;/code&gt; 檔案。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ find -name uber-secret.txt
./adequate_books/more_books/.secret/deeper_secrets/deepest_secrets/uber-secret.txt
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;找到檔案後使用 &lt;code&gt;cat&lt;/code&gt; 讀取&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ cat ./adequate_books/more_books/.secret/deeper_secrets/deepest_secrets/uber-secret.txt
picoCTF{f1n---------------fd1}
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Big Zip</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/big-zip/</link><pubDate>Sun, 12 Jul 2026 23:00:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/big-zip/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/322"&gt;https://learn.cylabacademy.org/library/322&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;p&gt;解壓縮後會得到非常多 &lt;code&gt;.txt&lt;/code&gt; 檔案以及許多子目錄，根據提示知道要使用 &lt;code&gt;grep&lt;/code&gt; 指令，&lt;code&gt;grep&lt;/code&gt; 指令加上 &lt;code&gt;-r&lt;/code&gt; 參數會遞迴的尋找目錄中以及所有子目錄中的所有檔案中是否有目標。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ grep -r &amp;#34;pico&amp;#34;
folder_pmbymkjcya/folder_cawigcwvgv/folder_ltdayfmktr/folder_fnpfclfyee/whzxrpivpqld.txt:information on the record will last a billion years. Genes and brains and books encode picoCTF{gr3----------------0dc}
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>repetitions</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/repetitions/</link><pubDate>Wed, 01 Jul 2026 22:30:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/repetitions/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/371"&gt;https://learn.cylabacademy.org/library/371&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;p&gt;下載後得到以下字串&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;VmpGU1EyRXlUWGxTYmxKVVYwZFNWbGxyV21GV1JteDBUbFpPYWxKdFVsaFpWVlUxWVZaS1ZWWnVh
RmRXZWtab1dWWmtSMk5yTlZWWApiVVpUVm10d1VWZFdVa2RpYlZaWFZtNVdVZ3BpU0VKeldWUkNk
MlZXVlhoWGJYQk9VbFJXU0ZkcVRuTldaM0JZVWpGS2VWWkdaSGRXCk1sWnpWV3hhVm1KRk5XOVVW
VkpEVGxaYVdFMVhSbFZrTTBKVVZXcE9VazFXV2toT1dHUllDbUY2UWpSWk1GWlhWa2RHZEdWRlZs
aGkKYlRrelZERldUMkpzUWxWTlJYTkxDZz09Cg==
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;看到用兩個等於結尾且內容皆為字母及數字，推測使用 base64 編碼，解碼後得到以下字串&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;VjFSQ2EyTXlSblJUV0dSVllrWmFWRmx0TlZOalJtUlhZVVU1YVZKVVZuaFdWekZoWVZkR2NrNVVX
bUZTVmtwUVdWUkdibVZXVm5WUgpiSEJzWVRCd2VWVXhXbXBOUlRWSFdqTnNWZ3BYUjFKeVZGZHdW
MlZzVWxaVmJFNW9UVVJDTlZaWE1XRlVkM0JUVWpOUk1WWkhOWGRYCmF6QjRZMFZXVkdGdGVFVlhi
bTkzVDFWT2JsQlVNRXNLCg==
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;在解碼一次得到&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;V1RCa2MyRnRTWGRVYkZaVFltNVNjRmRXYUU5aVJUVnhWVzFhYVdGck5UWmFSVkpQWVRGbmVWVnVR
bHBsYTBweVUxWmpNRTVHWjNsVgpXR1JyVFdwV2VsUlZVbE5oTURCNVZXMWFUd3BTUjNRMVZHNXdX
azB4Y0VWVGFteEVXbm93T1VOblBUMEsK
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;在解碼一次得到&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;WTBkc2FtSXdUbFZTYm5ScFdWaE9iRTVxVW1aaWFrNTZaRVJPYTFneVVuQlpla0pyU1ZjME5GZ3lV
WGRrTWpWelRVUlNhMDB5VW1aTwpSR3Q1VG5wWk0xcEVTamxEWnowOUNnPT0K
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;在解碼一次得到&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Y0dsamIwTlVSbnRpWVhObE5qUmZiak56ZEROa1gyUnBZekJrSVc0NFgyUXdkMjVzTURSa00yUmZO
RGt5TnpZM1pESjlDZz09Cg==
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;在解碼一次得到&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;cGljb0NURntiYXNlNjRfbjNzdDNkX2RpYzBkIW44X2Qwd25sMDRkM2RfNDkyNzY3ZDJ9Cg==
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;在解碼一次得到 flag&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;picoCTF{bas------------------------------------7d2}
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>binhexa</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/binhexa/</link><pubDate>Wed, 01 Jul 2026 22:00:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/binhexa/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/404"&gt;https://learn.cylabacademy.org/library/404&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;p&gt;依照問的問題計算答案&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Welcome to the Binary Challenge!&amp;#34;
Your task is to perform the unique operations in the given order and find the final result in hexadecimal that yields the flag.
Binary Number 1: 11111110
Binary Number 2: 11100001
&lt;/code&gt;&lt;/pre&gt;&lt;ol&gt;
&lt;li&gt;Number 1 和 Number 2 &lt;code&gt;&amp;amp;&lt;/code&gt;(and) 計算&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Question 1/6:
Operation 1: &amp;#39;&amp;amp;&amp;#39;
Perform the operation on Binary Number 1&amp;amp;2.
Enter the binary result: 11100000
Correct!
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="2"&gt;
&lt;li&gt;Number 1 和 Number 2 相加&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Question 2/6:
Operation 2: &amp;#39;+&amp;#39;
Perform the operation on Binary Number 1&amp;amp;2.
Enter the binary result: 111011111
Correct!
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="3"&gt;
&lt;li&gt;Number 1 左移一位&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Question 3/6:
Operation 3: &amp;#39;&amp;lt;&amp;lt;&amp;#39;
Perform a left shift of Binary Number 1 by 1 bits.
Enter the binary result: 111111100
Correct!
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="4"&gt;
&lt;li&gt;Number 2 右移一位&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Question 4/6:
Operation 4: &amp;#39;&amp;gt;&amp;gt;&amp;#39;
Perform a right shift of Binary Number 2 by 1 bits .
Enter the binary result: 1110000
Correct!
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="5"&gt;
&lt;li&gt;Number 1 和 Number 2 相乘&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Question 5/6:
Operation 5: &amp;#39;*&amp;#39;
Perform the operation on Binary Number 1&amp;amp;2.
Enter the binary result: 1101111100111110
Correct!
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="6"&gt;
&lt;li&gt;Number 1 和 Number 2 &lt;code&gt;|&lt;/code&gt;(or) 計算&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Question 6/6:
Operation 6: &amp;#39;|&amp;#39;
Perform the operation on Binary Number 1&amp;amp;2.
Enter the binary result: 11111111
Correct!
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="7"&gt;
&lt;li&gt;將 &lt;code&gt;|&lt;/code&gt; 的結果轉成 16 進位&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Enter the results of the last operation in hexadecimal: ff
Correct answer!
The flag is: picoCTF{b1t---------------------------------47e}
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Blame Game</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/blame-game/</link><pubDate>Wed, 01 Jul 2026 17:43:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/blame-game/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/405"&gt;https://learn.cylabacademy.org/library/405&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;p&gt;根據提示知道要查看誰更動過 &lt;code&gt;message.py&lt;/code&gt;，所以要使用 &lt;code&gt;git blame&lt;/code&gt; 指令&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ git blame message.py
23e9d4ce (picoCTF{@sk-----------------6ff} 2024-03-12 00:07:15 +0000 1) print(&amp;#34;Hello, World!&amp;#34;
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Collaborative Development</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/collaborative-development/</link><pubDate>Wed, 01 Jul 2026 16:50:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/collaborative-development/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/410"&gt;https://learn.cylabacademy.org/library/410&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;將題目檔案下載並解壓縮後，讀取 &lt;code&gt;flag.py&lt;/code&gt; 發現並未包含 flag，git log 也沒有任何紀錄。不過可以發現有多個 branch。
&lt;pre tabindex="0"&gt;&lt;code&gt;$ git branch
feature/part-1
feature/part-2
feature/part-3
* main
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;使用 git checkout 切到不同分支查看，發現每個分支有包含部分 flag。
&lt;pre tabindex="0"&gt;&lt;code&gt;$ git checkout feature/part-1
Switched to branch &amp;#39;feature/part-1&amp;#39;
$ cat flag.py
print(&amp;#34;Printing the flag...&amp;#34;)
print(&amp;#34;picoCTF{t3@mw0rk_&amp;#34;, end=&amp;#39;&amp;#39;)
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;重複相同步驟，將三部分的 flag 組合起來即可得到完整 flag。
&lt;pre tabindex="0"&gt;&lt;code&gt;picoCTF{t3@--------------------------------ec1}
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Commitment Issues</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/commitment-issues/</link><pubDate>Wed, 01 Jul 2026 16:43:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/commitment-issues/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/411"&gt;https://learn.cylabacademy.org/library/411&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;將題目檔案下載並解壓縮後，讀取 &lt;code&gt;message.txt&lt;/code&gt; 發現並未包含 flag，使用 git 指令查看 log 發現有兩個 log，其中 &lt;code&gt;ea859bf&lt;/code&gt; 可能包含 flag。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ git log --oneline
ef0b7cc (HEAD -&amp;gt; master) remove sensitive info
ea859bf create flag
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用 git checkout 指令來回到指定 log。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;git checkout ea859bf
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;再次讀取 &lt;code&gt;message.txt&lt;/code&gt; 發現有包含 flag 了。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ cat message.txt
picoCTF{s@n-----------485}
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>endianness</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/endianness/</link><pubDate>Fri, 08 May 2026 22:20:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/endianness/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/414"&gt;https://learn.cylabacademy.org/library/414&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;p&gt;啟動並連線後，會提供一個長度為5的隨機字串。&lt;br&gt;
第一個問題 &lt;code&gt;Enter the Little Endian representation:&lt;/code&gt; 要將字串顛道並轉成 16 進位後輸入。&lt;br&gt;
第二個問題 &lt;code&gt;Enter the Big Endian representation:&lt;/code&gt; 直接將字串轉乘 16 進位輸入。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ nc titan.picoctf.net 56752
Welcome to the Endian CTF!
You need to find both the little endian and big endian representations of a word.
If you get both correct, you will receive the flag.
Word: gobyv
Enter the Little Endian representation: 7679626F67
Correct Little Endian representation!
Enter the Big Endian representation: 676F627976
Correct Big Endian representation!
Congratulations! You found both endian representations correctly!
Your Flag is: picoCTF{3nd----------------------f0a}
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="ascii-對照表"&gt;ASCII 對照表&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: center"&gt;字母&lt;/th&gt;
&lt;th style="text-align: center"&gt;Hex&lt;/th&gt;
&lt;th style="text-align: center"&gt;字母&lt;/th&gt;
&lt;th style="text-align: center"&gt;Hex&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;a&lt;/td&gt;
&lt;td style="text-align: center"&gt;61&lt;/td&gt;
&lt;td style="text-align: center"&gt;n&lt;/td&gt;
&lt;td style="text-align: center"&gt;6E&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;b&lt;/td&gt;
&lt;td style="text-align: center"&gt;62&lt;/td&gt;
&lt;td style="text-align: center"&gt;o&lt;/td&gt;
&lt;td style="text-align: center"&gt;6F&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;c&lt;/td&gt;
&lt;td style="text-align: center"&gt;63&lt;/td&gt;
&lt;td style="text-align: center"&gt;p&lt;/td&gt;
&lt;td style="text-align: center"&gt;70&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;d&lt;/td&gt;
&lt;td style="text-align: center"&gt;64&lt;/td&gt;
&lt;td style="text-align: center"&gt;q&lt;/td&gt;
&lt;td style="text-align: center"&gt;71&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;e&lt;/td&gt;
&lt;td style="text-align: center"&gt;65&lt;/td&gt;
&lt;td style="text-align: center"&gt;r&lt;/td&gt;
&lt;td style="text-align: center"&gt;72&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;f&lt;/td&gt;
&lt;td style="text-align: center"&gt;66&lt;/td&gt;
&lt;td style="text-align: center"&gt;s&lt;/td&gt;
&lt;td style="text-align: center"&gt;73&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;g&lt;/td&gt;
&lt;td style="text-align: center"&gt;67&lt;/td&gt;
&lt;td style="text-align: center"&gt;t&lt;/td&gt;
&lt;td style="text-align: center"&gt;74&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;h&lt;/td&gt;
&lt;td style="text-align: center"&gt;68&lt;/td&gt;
&lt;td style="text-align: center"&gt;u&lt;/td&gt;
&lt;td style="text-align: center"&gt;75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;i&lt;/td&gt;
&lt;td style="text-align: center"&gt;69&lt;/td&gt;
&lt;td style="text-align: center"&gt;v&lt;/td&gt;
&lt;td style="text-align: center"&gt;76&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;j&lt;/td&gt;
&lt;td style="text-align: center"&gt;6A&lt;/td&gt;
&lt;td style="text-align: center"&gt;w&lt;/td&gt;
&lt;td style="text-align: center"&gt;77&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;k&lt;/td&gt;
&lt;td style="text-align: center"&gt;6B&lt;/td&gt;
&lt;td style="text-align: center"&gt;x&lt;/td&gt;
&lt;td style="text-align: center"&gt;78&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;l&lt;/td&gt;
&lt;td style="text-align: center"&gt;6C&lt;/td&gt;
&lt;td style="text-align: center"&gt;y&lt;/td&gt;
&lt;td style="text-align: center"&gt;79&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;m&lt;/td&gt;
&lt;td style="text-align: center"&gt;6D&lt;/td&gt;
&lt;td style="text-align: center"&gt;z&lt;/td&gt;
&lt;td style="text-align: center"&gt;7a&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="題目原始碼"&gt;題目原始碼&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 5
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 6
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 7
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 8
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 9
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 10
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 11
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 12
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 13
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 14
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 15
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 16
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 17
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 18
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 19
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 20
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 21
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 22
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 23
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 24
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 25
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 26
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 27
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 28
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 29
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 30
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 31
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 32
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 33
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 34
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 35
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 36
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 37
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 38
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 39
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 40
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 41
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 42
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 43
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 44
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 45
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 46
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 47
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 48
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 49
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 50
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 51
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 52
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 53
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 54
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 55
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 56
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 57
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 58
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 59
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 60
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 61
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 62
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 63
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 64
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 65
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 66
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 67
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 68
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 69
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 70
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 71
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 72
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 73
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 74
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 75
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 76
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 77
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 78
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 79
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 80
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 81
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 82
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 83
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 84
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 85
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 86
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 87
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 88
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 89
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 90
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 91
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 92
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 93
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 94
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 95
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 96
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 97
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 98
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 99
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;100
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;101
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;102
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;103
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;104
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;105
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;106
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;107
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;108
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;109
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;110
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;111
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;112
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;113
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;114
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;115
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;116
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;117
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;118
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;119
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;120
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;121
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;122
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;123
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;124
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;125
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;126
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;127
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;128
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;129
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;130
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;131
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;132
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;133
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;134
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#include&lt;/span&gt; &lt;span style="color:#75715e"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#include&lt;/span&gt; &lt;span style="color:#75715e"&gt;&amp;lt;stdlib.h&amp;gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#include&lt;/span&gt; &lt;span style="color:#75715e"&gt;&amp;lt;string.h&amp;gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#include&lt;/span&gt; &lt;span style="color:#75715e"&gt;&amp;lt;stdbool.h&amp;gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#include&lt;/span&gt; &lt;span style="color:#75715e"&gt;&amp;lt;ctype.h&amp;gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#include&lt;/span&gt; &lt;span style="color:#75715e"&gt;&amp;lt;time.h&amp;gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;find_little_endian&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;word)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;size_t&lt;/span&gt; word_len &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;strlen&lt;/span&gt;(word);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;little_endian &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (&lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;)&lt;span style="color:#a6e22e"&gt;malloc&lt;/span&gt;((&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt; word_len &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;) &lt;span style="color:#f92672"&gt;*&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;sizeof&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;char&lt;/span&gt;));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; (&lt;span style="color:#66d9ef"&gt;size_t&lt;/span&gt; i &lt;span style="color:#f92672"&gt;=&lt;/span&gt; word_len; i&lt;span style="color:#f92672"&gt;--&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;snprintf&lt;/span&gt;(&lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;little_endian[(word_len &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; i) &lt;span style="color:#f92672"&gt;*&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;], &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;%02X&amp;#34;&lt;/span&gt;, (&lt;span style="color:#66d9ef"&gt;unsigned&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;char&lt;/span&gt;)word[i]);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; little_endian[&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt; word_len] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;\0&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; little_endian;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;find_big_endian&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;word)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;size_t&lt;/span&gt; length &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;strlen&lt;/span&gt;(word);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;big_endian &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (&lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;)&lt;span style="color:#a6e22e"&gt;malloc&lt;/span&gt;((&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt; length &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;) &lt;span style="color:#f92672"&gt;*&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;sizeof&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;char&lt;/span&gt;));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; (&lt;span style="color:#66d9ef"&gt;size_t&lt;/span&gt; i &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; i &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; length; i&lt;span style="color:#f92672"&gt;++&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;snprintf&lt;/span&gt;(&lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;big_endian[i &lt;span style="color:#f92672"&gt;*&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;], &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;%02X&amp;#34;&lt;/span&gt;, (&lt;span style="color:#66d9ef"&gt;unsigned&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;char&lt;/span&gt;)word[i]);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; big_endian[&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt; length] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;\0&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; big_endian;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;generate_random_word&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;printf&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;Welcome to the Endian CTF!&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\n&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;printf&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;You need to find both the little endian and big endian representations of a word.&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\n&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;printf&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;If you get both correct, you will receive the flag.&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\n&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;srand&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;time&lt;/span&gt;(NULL));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; word_length &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;word &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (&lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;)&lt;span style="color:#a6e22e"&gt;malloc&lt;/span&gt;((word_length &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;) &lt;span style="color:#f92672"&gt;*&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;sizeof&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;char&lt;/span&gt;));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; (&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; i &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; i &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; word_length; i&lt;span style="color:#f92672"&gt;++&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; word[i] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;rand&lt;/span&gt;() &lt;span style="color:#f92672"&gt;%&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;26&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;a&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; word[word_length] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;\0&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; word;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;main&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;challenge_word &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;generate_random_word&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;printf&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;Word: %s&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\n&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;, challenge_word);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;fflush&lt;/span&gt;(stdout);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;little_endian &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;find_little_endian&lt;/span&gt;(challenge_word);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;size_t&lt;/span&gt; user_little_endian_size &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;strlen&lt;/span&gt;(little_endian);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; user_little_endian[user_little_endian_size &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; correct_flag &lt;span style="color:#f92672"&gt;=&lt;/span&gt; false;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;while&lt;/span&gt; (&lt;span style="color:#f92672"&gt;!&lt;/span&gt;correct_flag)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;printf&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;Enter the Little Endian representation: &amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;fflush&lt;/span&gt;(stdout);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;scanf&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;%10s&amp;#34;&lt;/span&gt;, user_little_endian);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; (&lt;span style="color:#66d9ef"&gt;size_t&lt;/span&gt; i &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; i &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;strlen&lt;/span&gt;(user_little_endian); i&lt;span style="color:#f92672"&gt;++&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; user_little_endian[i] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;toupper&lt;/span&gt;(user_little_endian[i]);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;strncmp&lt;/span&gt;(user_little_endian, little_endian, user_little_endian_size) &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;printf&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;Correct Little Endian representation!&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\n&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;fflush&lt;/span&gt;(stdout);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; correct_flag &lt;span style="color:#f92672"&gt;=&lt;/span&gt; true;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;printf&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;Incorrect Little Endian representation. Try again!&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\n&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;fflush&lt;/span&gt;(stdout);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;big_endian &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;find_big_endian&lt;/span&gt;(challenge_word);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;size_t&lt;/span&gt; user_big_endian_size &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;strlen&lt;/span&gt;(big_endian);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; user_big_endian[user_big_endian_size &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; final_flag &lt;span style="color:#f92672"&gt;=&lt;/span&gt; false;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;while&lt;/span&gt; (&lt;span style="color:#f92672"&gt;!&lt;/span&gt;final_flag)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;printf&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;Enter the Big Endian representation: &amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;fflush&lt;/span&gt;(stdout);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;scanf&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;%10s&amp;#34;&lt;/span&gt;, user_big_endian);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; (&lt;span style="color:#66d9ef"&gt;size_t&lt;/span&gt; i &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; i &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;strlen&lt;/span&gt;(user_big_endian); i&lt;span style="color:#f92672"&gt;++&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; user_big_endian[i] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;toupper&lt;/span&gt;(user_big_endian[i]);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;strncmp&lt;/span&gt;(user_big_endian, big_endian, user_big_endian_size) &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;printf&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;Correct Big Endian representation!&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\n&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;fflush&lt;/span&gt;(stdout);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; final_flag &lt;span style="color:#f92672"&gt;=&lt;/span&gt; true;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;printf&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;Incorrect Big Endian representation. Try again!&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\n&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;fflush&lt;/span&gt;(stdout);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; FILE &lt;span style="color:#f92672"&gt;*&lt;/span&gt;flag &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;fopen&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;flag.txt&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;r&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (flag &lt;span style="color:#f92672"&gt;==&lt;/span&gt; NULL)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;printf&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;Flag not found. Please run this on the server&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\n&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;fflush&lt;/span&gt;(stdout);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;exit&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; flag_content[&lt;span style="color:#ae81ff"&gt;100&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;fgets&lt;/span&gt;(flag_content, &lt;span style="color:#66d9ef"&gt;sizeof&lt;/span&gt;(flag_content), flag);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;printf&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;Congratulations! You found both endian representations correctly!&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\n&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;fflush&lt;/span&gt;(stdout);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;printf&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;Your Flag is: %s&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\n&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;, flag_content);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;fflush&lt;/span&gt;(stdout);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;exit&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Super SSH</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/super-ssh/</link><pubDate>Fri, 08 May 2026 20:20:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/super-ssh/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/424"&gt;https://learn.cylabacademy.org/library/424&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;p&gt;這題題目是 ssh 的基礎教學，指令用法如下&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;ssh -p &amp;lt;port&amp;gt; &amp;lt;username&amp;gt;@&amp;lt;host&amp;gt;
ssh -p 52938 ctf-player@titan.picoctf.net
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;第一次連接後為了避免中間人攻擊，會確認 fingerprint，要輸入 &lt;code&gt;yes&lt;/code&gt; 確認。&lt;br&gt;
接著輸入密碼，輸入密碼時不會顯示任何內容，輸入完畢後按下 enter 即可連線。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ ssh -p 52938 ctf-player@titan.picoctf.net
The authenticity of host &amp;#39;[titan.picoctf.net]:52938 ([3.139.174.234]:52938)&amp;#39; can&amp;#39;t be established.
ED25519 key fingerprint is SHA256:4S9EbTSSRZm32I+cdM5TyzthpQryv5kudRP9PIKT7XQ.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added &amp;#39;[titan.picoctf.net]:52938&amp;#39; (ED25519) to the list of known hosts.
ctf-player@titan.picoctf.net&amp;#39;s password:
Welcome ctf-player, here&amp;#39;s your flag: picoCTF{s3c--------------------462}
Connection to titan.picoctf.net closed.
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Time Machine</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/time-machine/</link><pubDate>Fri, 08 May 2026 20:00:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/time-machine/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/425"&gt;https://learn.cylabacademy.org/library/425&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;p&gt;下載並解壓縮後進入該目錄。&lt;br&gt;
使用 &lt;code&gt;git log&lt;/code&gt; 指令可以查看 commit 紀錄，而 flag 就寫在最新的 commit message 中。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ git log --oneline
712314f (HEAD -&amp;gt; master) picoCTF{t1m--------------b3a}
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Password Profiler</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/password-profiler/</link><pubDate>Wed, 06 May 2026 23:45:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/password-profiler/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/712"&gt;https://learn.cylabacademy.org/library/712&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;p&gt;這題題目提示中有提到 &lt;a href="https://github.com/Mebus/cupp"&gt;CUPP&lt;/a&gt; 這個 python 工具，這是一個可以根據使用者提供的資訊生成密碼字典的工具。&lt;br&gt;
從 github 將 CUPP clone 下來並執行。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;git clone https://github.com/Mebus/cupp.git
cd cupp
python cupp.py -i
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;跟著指示一步一步輸入資料，即可生成密碼字典。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 5
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 6
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 7
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 8
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 9
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;10
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;11
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;12
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;13
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;14
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;15
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;16
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;17
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;18
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;19
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;20
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;21
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;22
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;23
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;24
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;25
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;26
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;27
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;28
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;29
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;30
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;31
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;32
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;33
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;34
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;35
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;36
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;37
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;38
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;39
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;40
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;41
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;42
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;43
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;44
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ python .&lt;span style="color:#ae81ff"&gt;\c&lt;/span&gt;upp.py -i
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ___________
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cupp.py! &lt;span style="color:#75715e"&gt;# Common&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ae81ff"&gt;\ &lt;/span&gt; &lt;span style="color:#75715e"&gt;# User&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ae81ff"&gt;\ &lt;/span&gt; ,__, &lt;span style="color:#75715e"&gt;# Passwords&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ae81ff"&gt;\ &lt;/span&gt; &lt;span style="color:#f92672"&gt;(&lt;/span&gt;oo&lt;span style="color:#f92672"&gt;)&lt;/span&gt;____ &lt;span style="color:#75715e"&gt;# Profiler&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;(&lt;/span&gt;__&lt;span style="color:#f92672"&gt;)&lt;/span&gt; &lt;span style="color:#f92672"&gt;)&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt;--&lt;span style="color:#f92672"&gt;||&lt;/span&gt; * &lt;span style="color:#f92672"&gt;[&lt;/span&gt; Muris Kurgas | j0rgan@remote-exploit.org &lt;span style="color:#f92672"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt; Mebus | https://github.com/Mebus/&lt;span style="color:#f92672"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;+&lt;span style="color:#f92672"&gt;]&lt;/span&gt; Insert the information about the victim to make a dictionary
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;+&lt;span style="color:#f92672"&gt;]&lt;/span&gt; If you don&lt;span style="color:#e6db74"&gt;&amp;#39;t know all the info, just hit enter when asked! ;)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;&amp;gt; First Name: Alice
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;&amp;gt; Surname: Johnson
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;&amp;gt; Nickname: AJ
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;&amp;gt; Birthdate (DDMMYYYY): 15071990
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;&amp;gt; Partners) name: Bob
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;&amp;gt; Partners) nickname:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;&amp;gt; Partners) birthdate (DDMMYYYY):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;&amp;gt; Child&amp;#39;&lt;/span&gt;s name: Charlie
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;gt; Child&lt;span style="color:#e6db74"&gt;&amp;#39;s nickname:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;&amp;gt; Child&amp;#39;&lt;/span&gt;s birthdate &lt;span style="color:#f92672"&gt;(&lt;/span&gt;DDMMYYYY&lt;span style="color:#f92672"&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;gt; Pet&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;s name:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;gt; Company name:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;gt; Do you want to add some key words about the victim? Y/&lt;span style="color:#f92672"&gt;[&lt;/span&gt;N&lt;span style="color:#f92672"&gt;]&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;gt; Do you want to add special chars at the end of words? Y/&lt;span style="color:#f92672"&gt;[&lt;/span&gt;N&lt;span style="color:#f92672"&gt;]&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;gt; Do you want to add some random numbers at the end of words? Y/&lt;span style="color:#f92672"&gt;[&lt;/span&gt;N&lt;span style="color:#f92672"&gt;]&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;gt; Leet mode? &lt;span style="color:#f92672"&gt;(&lt;/span&gt;i.e. leet &lt;span style="color:#f92672"&gt;=&lt;/span&gt; 1337&lt;span style="color:#f92672"&gt;)&lt;/span&gt; Y/&lt;span style="color:#f92672"&gt;[&lt;/span&gt;N&lt;span style="color:#f92672"&gt;]&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;+&lt;span style="color:#f92672"&gt;]&lt;/span&gt; Now making a dictionary...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;+&lt;span style="color:#f92672"&gt;]&lt;/span&gt; Sorting list and removing duplicates...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;+&lt;span style="color:#f92672"&gt;]&lt;/span&gt; Saving dictionary to alice.txt, counting &lt;span style="color:#ae81ff"&gt;10359&lt;/span&gt; words.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;gt; Hyperspeed Print? &lt;span style="color:#f92672"&gt;(&lt;/span&gt;Y/n&lt;span style="color:#f92672"&gt;)&lt;/span&gt; :
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;+&lt;span style="color:#f92672"&gt;]&lt;/span&gt; Now load your pistolero with alice.txt and shoot! Good luck!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;以下是生成的密碼字典&lt;br&gt;
&lt;a href="./passwords.txt"&gt;&lt;code&gt;passwords.txt&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Binary Search</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/binary-search/</link><pubDate>Mon, 04 May 2026 01:10:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/binary-search/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/442"&gt;https://learn.cylabacademy.org/library/442&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;p&gt;使用 &lt;code&gt;ssh&lt;/code&gt; 連線進去，不斷猜範圍內的鄭中間一定可以在 10 次內猜到。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;webshell:~$ ssh -p 58451 ctf-player@atlas.picoctf.net
The authenticity of host &amp;#39;[atlas.picoctf.net]:58451 ([18.217.83.136]:58451)&amp;#39; can&amp;#39;t be established.
ED25519 key fingerprint is SHA256:M8hXanE8l/Yzfs8iuxNsuFL4vCzCKEIlM/3hpO13tfQ.
This host key is known by the following other names/addresses:
~/.ssh/known_hosts:3: [hashed name]
~/.ssh/known_hosts:5: [hashed name]
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added &amp;#39;[atlas.picoctf.net]:58451&amp;#39; (ED25519) to the list of known hosts.
ctf-player@atlas.picoctf.net&amp;#39;s password:
Welcome to the Binary Search Game!
I&amp;#39;m thinking of a number between 1 and 1000.
Enter your guess: 500
Lower! Try again.
Enter your guess: 250
Higher! Try again.
Enter your guess: 375
Higher! Try again.
Enter your guess: 438
Higher! Try again.
Enter your guess: 469
Higher! Try again.
Enter your guess: 485
Higher! Try again.
Enter your guess: 493
Higher! Try again.
Enter your guess: 497
Higher! Try again.
Enter your guess: 499
Congratulations! You guessed the correct number: 499
Here&amp;#39;s your flag: picoCTF{g00-------------07f}
Connection to atlas.picoctf.net closed.
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Printer Shares</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/printer-shares/</link><pubDate>Mon, 04 May 2026 00:15:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/printer-shares/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/759"&gt;https://learn.cylabacademy.org/library/759&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;列出共享目錄 (Enumeration)&lt;br&gt;
首先我們使用 &lt;code&gt;smbclient&lt;/code&gt;，嘗試匿名登入查看伺服器上有那些共享資料夾，輸入密碼處直接按 enter。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;smbclient -L &amp;lt;host&amp;gt; -p &amp;lt;port&amp;gt; -U &amp;#34;&amp;#34;
smbclient -L mysterious-sea.picoctf.net -p 53486 -U &amp;#34;&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-L&lt;/code&gt;: 列出（List）所有的共享資源。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-p 53486&lt;/code&gt;: 指定題目給的連接埠。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-U &amp;quot;&amp;quot;&lt;/code&gt;: 使用空用戶名（匿名）。&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;webshell:~$ smbclient -L mysterious-sea.picoctf.net -p 53486 -U &amp;#34;&amp;#34;
Password for [WORKGROUP\]:
Sharename Type Comment
--------- ---- -------
shares Disk Public Share With Guests
IPC$ IPC IPC Service (Samba 4.19.5-Ubuntu)
SMB1 disabled -- no workgroup available
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;根據上方輸出內容，看到一個名為 shares 的共享資料夾，使用以下指令進入：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;smbclient //mysterious-sea.picoctf.net/shares -p 53486 -U &amp;#34;&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;看到 &lt;code&gt;smb: \&amp;gt;&lt;/code&gt; 代表成功進入&lt;/p&gt;</description></item><item><title>FANTASY CTF</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/fantasy-ctf/</link><pubDate>Sat, 02 May 2026 23:30:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/fantasy-ctf/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/471"&gt;https://learn.cylabacademy.org/library/471&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;p&gt;使用 &lt;code&gt;nc&lt;/code&gt; 連線後不斷 &lt;code&gt;enter&lt;/code&gt;，第一次遇到選項選 &lt;code&gt;c&lt;/code&gt;，第二次選 &lt;code&gt;a&lt;/code&gt;，即可得到 flag。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;webshell:~$ nc verbal-sleep.picoctf.net 55371
FANTASY CTF SIMULATION
The simulation begins in the private room of Eibhilin, a bright, young student.
The room is dimly lit, with the glow of her multiple monitors casting an
electric blue hue on the walls. Around the room are posters of vintage movies
from the MCU — ancient guardians from another age staring down like digital
sentinels.
---
(Press Enter to continue...)
---
Eibhilin stretches back in her chair, adjusting the holo-display of her
keyboard. A soft hum of a nearby server fills the air as her AI companion,
`Nyx`, comes to life.
---
(Press Enter to continue...)
---
&amp;#34;Good evening, Ei,&amp;#34; Nyx chirps, &amp;#34;The 3025 edition of picoCTF registration is
open. You asked me to remind so you could try out the competition for the first
time. Do you wish to proceed?&amp;#34;
---
(Press Enter to continue...)
---
Outside, the city of Nexalus glimmers under the stars, but Eibhilin&amp;#39;s focus
remains entirely on the screen in front of her.
---
(Press Enter to continue...)
---
&amp;#34;Yes, Nyx. Let&amp;#39;s do it!&amp;#34;
---
(Press Enter to continue...)
---
Nyx brings up the registration page.
Options:
A) *Register multiple accounts*
B) *Share an account with a friend*
C) *Register a single, private account*
[a/b/c] &amp;gt; c
Nyx nods, &amp;#34;Good choice, Ei. Let&amp;#39;s proceed with a single, private account. It
can be tempting to try and do something &amp;#39;clever&amp;#39;, but registering multiple
accounts or sharing an account with a friend can lead to disqualification.&amp;#34;
---
(Press Enter to continue...)
---
&amp;#34;Ok,&amp;#34; Nyx says, &amp;#34;Registering you for the competition... There&amp;#39;s an introductory
audio message, piping to your speakers.&amp;#34;
---
(Press Enter to continue...)
---
&amp;#34;Welcome hacker! You&amp;#39;re about to embark on a journey that will teach you many
esoteric and valuable skills. Our mission is to guide you in the right path,
that you may use these skills to protect and defend and never for selfish gain
or deceit. We hope you enjoy the challenges that our authors have devised this
year. Always remember: &amp;#39;With great power, comes great responsibility!&amp;#39;&amp;#34;
---
(Press Enter to continue...)
---
Nyx continues, &amp;#34;I&amp;#39;ve gleaned from the Ether that in CTF competitions, it&amp;#39;s
always good to start with the &amp;#39;sanity&amp;#39; challenge. It should be the challenge
worth the least amount of points. I&amp;#39;ll pull it up. You&amp;#39;re looking for something
called the flag. You should know it when you see it.&amp;#34;
---
(Press Enter to continue...)
---
&amp;#34;Oh interesting,&amp;#34; Eibhilin says, &amp;#34;It seems like the sanity challenge is an old
school interactive fiction game.&amp;#34;
---
(Press Enter to continue...)
---
Options:
A) *Play the game*
B) *Search the Ether for the flag*
[a/b] &amp;gt; a
&amp;#34;Good choice, Ei,&amp;#34; Nyx says, &amp;#34;You never want to share flags or artifact
downloads.&amp;#34;
---
(Press Enter to continue...)
---
Playing the Game
Playing the Game: 100%|██████████████████████████████████████ [time left: 00:00]
Playing the Game completed successfully!
---
(Press Enter to continue...)
---
&amp;#34;That was fun!&amp;#34; Eibhilin exclaims, &amp;#34;I found the flag!&amp;#34;
---
(Press Enter to continue...)
---
Nyx says, &amp;#34;Great job, Ei! I&amp;#39;ve read that a lot of players create writeups of
interesting challenges they solve during the competition. Just be sure to wait
to publish them until after the winners have been announced. We can work on
that together if you&amp;#39;d like.&amp;#34;
---
(Press Enter to continue...)
---
&amp;#34;Thanks, Nyx! Here&amp;#39;s the flag I found: picoCTF{m11--------------------7f5}&amp;#34;
---
(Press Enter to continue...)
---
&amp;#34;Great, you just got 10 points!&amp;#34; Nyx exclaims.
---
(Press Enter to continue...)
---
Eibhilin smiles, &amp;#34;I&amp;#39;m off to a good start!&amp;#34;
---
(Press Enter to continue...)
---
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Log Hunt</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/log-hunt/</link><pubDate>Sat, 02 May 2026 04:50:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/log-hunt/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/527"&gt;https://learn.cylabacademy.org/library/527&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;下載得到 &lt;code&gt;server.log&lt;/code&gt; 後，使用 &lt;code&gt;cat&lt;/code&gt; 查看發現是很長的檔案，加上 &lt;code&gt;grep&lt;/code&gt; 指令嘗試尋找 flag 開頭 &lt;code&gt;&amp;quot;pico&amp;quot;&lt;/code&gt; 文字。&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;webshell:~$ cat server.log | grep &amp;#34;pico&amp;#34;
[1990-08-09 10:00:10] INFO FLAGPART: picoCTF{us3_
[1990-08-09 11:04:27] INFO FLAGPART: picoCTF{us3_
[1990-08-09 11:04:29] INFO FLAGPART: picoCTF{us3_
[1990-08-09 11:04:37] INFO FLAGPART: picoCTF{us3_
[1990-08-09 12:19:23] INFO FLAGPART: picoCTF{us3_
[1990-08-09 12:19:29] INFO FLAGPART: picoCTF{us3_
[1990-08-09 12:19:32] INFO FLAGPART: picoCTF{us3_
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="2"&gt;
&lt;li&gt;發現 flag 都是以 &lt;code&gt;FLAGPART&lt;/code&gt; 開頭，因此再次使用 &lt;code&gt;grep&lt;/code&gt; 指令尋找&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;webshell:~$ cat server.log | grep &amp;#34;FLAGPART&amp;#34;
[1990-08-09 10:00:10] INFO FLAGPART: picoCTF{us3_
[1990-08-09 10:02:55] INFO FLAGPART: y0urlinux_
[1990-08-09 10:05:54] INFO FLAGPART: sk1lls_
[1990-08-09 10:05:55] INFO FLAGPART: sk1lls_
[1990-08-09 10:10:54] INFO FLAGPART: cedfa5fb}
[1990-08-09 10:10:58] INFO FLAGPART: cedfa5fb}
[1990-08-09 10:11:06] INFO FLAGPART: cedfa5fb}
[1990-08-09 11:04:27] INFO FLAGPART: picoCTF{us3_
[1990-08-09 11:04:29] INFO FLAGPART: picoCTF{us3_
[1990-08-09 11:04:37] INFO FLAGPART: picoCTF{us3_
[1990-08-09 11:09:16] INFO FLAGPART: y0urlinux_
[1990-08-09 11:09:19] INFO FLAGPART: y0urlinux_
[1990-08-09 11:12:40] INFO FLAGPART: sk1lls_
[1990-08-09 11:12:45] INFO FLAGPART: sk1lls_
[1990-08-09 11:16:58] INFO FLAGPART: cedfa5fb}
[1990-08-09 11:16:59] INFO FLAGPART: cedfa5fb}
[1990-08-09 11:17:00] INFO FLAGPART: cedfa5fb}
[1990-08-09 12:19:23] INFO FLAGPART: picoCTF{us3_
[1990-08-09 12:19:29] INFO FLAGPART: picoCTF{us3_
[1990-08-09 12:19:32] INFO FLAGPART: picoCTF{us3_
[1990-08-09 12:23:43] INFO FLAGPART: y0urlinux_
[1990-08-09 12:23:45] INFO FLAGPART: y0urlinux_
[1990-08-09 12:23:53] INFO FLAGPART: y0urlinux_
[1990-08-09 12:25:32] INFO FLAGPART: sk1lls_
[1990-08-09 12:28:45] INFO FLAGPART: cedfa5fb}
[1990-08-09 12:28:49] INFO FLAGPART: cedfa5fb}
[1990-08-09 12:28:52] INFO FLAGPART: cedfa5fb}
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="3"&gt;
&lt;li&gt;將 flag 以合理的順序組合。&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;picoCTF{us3-----------------------5fb}
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>MultiCode</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/multicode/</link><pubDate>Sat, 02 May 2026 03:25:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/multicode/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/710"&gt;https://learn.cylabacademy.org/library/710&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;下載 &lt;code&gt;message.txt&lt;/code&gt;，內容如下。
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NjM3NjcwNjI1MDQ3NTMyNTM3NDI2MTcyNjY2NzcyNzE1ZjcyNjE3MDMwNzE3NjYxNzQ1ZjczNzM2ZjZmNmY3MzM1MzcyNTM3NDQ=
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;目前字串由大小寫字母及數字組成，且結尾是 &lt;code&gt;=&lt;/code&gt;，可推測是使用 base64 編碼，解碼後如下。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;637670625047532537426172666772715f72617030717661745f73736f6f6f733537253744
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;接著字串由多個數字以及 a 到 f 字母組成，可推測是使用 hex 編碼，解碼後如下。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;cvpbPGS%7Barfgrq_rap0qvat_ssooos57%7D
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;字串中有 &lt;code&gt;%&lt;/code&gt; 符號，且後面跟著兩個十六進位數字，這是 URL encoding 的特徵，解碼後如下。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;cvpbPGS{arfgrq_rap0qvat_ssooos57}
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;字串開頭應該是 &lt;code&gt;picoCTF&lt;/code&gt;，但是目前字串開頭是 &lt;code&gt;cvpbPGS&lt;/code&gt;，使用 ROT13 進行解密，得到 flag。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;picoCTF{nes-----------------b57}
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="提示"&gt;提示&lt;/h2&gt;
&lt;p&gt;建議可以使用 &lt;a href="https://gchq.github.io/CyberChef/"&gt;cyberchef&lt;/a&gt; 這個線上工具來進行解碼，以下是解碼的步驟：
&lt;img alt="cyberchef decode" loading="lazy" src="https://picoctf-writeup.pinjim.dev/posts/general-skills/multicode/image.webp"&gt;&lt;/p&gt;</description></item><item><title>Piece by Piece</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/piece-by-piece/</link><pubDate>Fri, 01 May 2026 18:15:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/piece-by-piece/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/740"&gt;https://learn.cylabacademy.org/library/740&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;使用題目提供的 ssh 連線進去後，可以看到 &lt;code&gt;instructions.txt&lt;/code&gt;。根據提示內容可以知道要將所有部分接在一起後解壓縮，才能獲得 flag。&lt;br&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;5
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Hint:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- The flag is split into multiple parts as a zipped file.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- Use Linux commands to combine the parts into one file.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- The zip file is password protected. Use this &amp;#34;supersecret&amp;#34; password to extract the zip file.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- After unzipping, check the extracted text file for the flag.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/p&gt;</description></item><item><title>SUDO MAKE ME A SANDWICH</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/sudo-make-me-a-sandwich/</link><pubDate>Fri, 01 May 2026 17:40:00 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/sudo-make-me-a-sandwich/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/735"&gt;https://learn.cylabacademy.org/library/735&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;使用題目提供的 ssh 連線進去後，可以看到家目錄中有 &lt;code&gt;flag.txt&lt;/code&gt;，但沒有權限讀取。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;ctf-player@challenge:~$ ls
flag.txt
ctf-player@challenge:~$ cat flag.txt
cat: flag.txt: Permission denied
ctf-player@challenge:~$ sudo cat flag.txt
[sudo] password for ctf-player:
Sorry, user ctf-player is not allowed to execute &amp;#39;/usr/bin/cat flag.txt&amp;#39; as root on challenge.
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用 &lt;code&gt;sudo&lt;/code&gt; 加上 &lt;code&gt;-l&lt;/code&gt; 參數可以查看當前使用者使用 &lt;code&gt;sudo&lt;/code&gt; 的權限，發現可以使用 &lt;code&gt;sudo&lt;/code&gt; 執行 &lt;code&gt;emacs&lt;/code&gt; 指令。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;ctf-player@challenge:~$ sudo -l
Matching Defaults entries for ctf-player on challenge:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User ctf-player may run the following commands on challenge:
(ALL) NOPASSWD: /bin/emacs
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;emacs&lt;/code&gt; 是一個文字編輯器，可以使用 &lt;code&gt;emacs&lt;/code&gt; 開啟 &lt;code&gt;flag.txt&lt;/code&gt;，就可以看到裡面的內容了。&lt;/p&gt;</description></item><item><title>Bytemancy 0</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/bytemancy-0/</link><pubDate>Wed, 22 Apr 2026 02:46:08 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/bytemancy-0/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/742"&gt;https://learn.cylabacademy.org/library/742&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;下載題目提供的原始碼後，，可以看到第11行顯示當使用者輸入 3 個連續 &lt;code&gt;e&lt;/code&gt; 時，就會印出 flag。&lt;br&gt;
&lt;code&gt;app.py&lt;/code&gt;&lt;br&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 5
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 6
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 7
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 8
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 9
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;10
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;11
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;12
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;13
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;14
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;15
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;16
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;17
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;18
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;19
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;20
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;21
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;while&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;try&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;#39;⊹──────[ BYTEMANCY-0 ]──────⊹&amp;#39;&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;☍⟐☉⟊☽☈⟁⧋⟡☍⟐☉⟊☽☈⟁⧋⟡☍⟐☉⟊☽☈⟁⧋⟡☍⟐&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print(&lt;span style="color:#e6db74"&gt;&amp;#39;Send me ASCII DECIMAL 101, 101, 101, side-by-side, no space.&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print(&lt;span style="color:#e6db74"&gt;&amp;#34;☍⟐☉⟊☽☈⟁⧋⟡☍⟐☉⟊☽☈⟁⧋⟡☍⟐☉⟊☽☈⟁⧋⟡☍⟐&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;#39;⊹─────────────⟡─────────────⊹&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; user_input &lt;span style="color:#f92672"&gt;=&lt;/span&gt; input(&lt;span style="color:#e6db74"&gt;&amp;#39;==&amp;gt; &amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; user_input &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\x65\x65\x65&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print(open(&lt;span style="color:#e6db74"&gt;&amp;#34;./flag.txt&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;r&amp;#34;&lt;/span&gt;)&lt;span style="color:#f92672"&gt;.&lt;/span&gt;read())
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;else&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;That wasn&amp;#39;t it. I got: &amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; str(user_input))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;except&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Exception&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;as&lt;/span&gt; e:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print(e)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/p&gt;</description></item><item><title>ping-cmd</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/ping-cmd/</link><pubDate>Wed, 22 Apr 2026 01:55:48 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/ping-cmd/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/757"&gt;https://learn.cylabacademy.org/library/757&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;啟動後透過 &lt;code&gt;nc&lt;/code&gt; 指令連線，連線後內容大致如下，可以輸入一個 IP 位址（題目為了安全性只允許&lt;code&gt;8.8.8.8&lt;/code&gt;）。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ nc mysterious-sea.picoctf.net 54500
Enter an IP address to ping! (We have tight security because we only allow &amp;#39;8.8.8.8&amp;#39;): 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=115 time=8.44 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=115 time=8.43 ms
--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 8.433/8.438/8.444/0.005 m
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;根據提示及猜測，題目極有可能是使用 ping 指令後面加上使用者輸入的內容，因此可能存在&lt;strong&gt;指令注入（Command Injection）&lt;/strong&gt;。因此可以嘗試在 IP 位址後面加上 &lt;code&gt;;&lt;/code&gt; 再加上其他指令來執行，以下為嘗試的指令。可以看到執行後列出當前目錄下有兩個檔案，分別是 &lt;code&gt;flag.txt&lt;/code&gt; 和 &lt;code&gt;script.sh&lt;/code&gt;。&lt;/p&gt;</description></item><item><title>Bytemancy 1</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/bytemancy-1/</link><pubDate>Fri, 17 Apr 2026 22:43:28 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/bytemancy-1/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/762"&gt;https://learn.cylabacademy.org/library/762&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;將題目提供的原始碼下載後，可以看到第11行顯示當使用者輸入 1751 個 &lt;code&gt;e&lt;/code&gt; 時，就會印出 flag。&lt;br&gt;
&lt;code&gt;app.py&lt;/code&gt;&lt;br&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 5
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 6
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 7
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 8
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 9
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;10
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;11
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;12
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;13
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;14
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;15
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;16
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;17
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;18
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;19
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;20
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;21
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;while&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;try&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;#39;⊹──────[ BYTEMANCY-1 ]──────⊹&amp;#39;&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;☍⟐☉⟊☽☈⟁⧋⟡☍⟐☉⟊☽☈⟁⧋⟡☍⟐☉⟊☽☈⟁⧋⟡☍⟐&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print(&lt;span style="color:#e6db74"&gt;&amp;#39;Send me ASCII DECIMAL 101 1751 times, side-by-side, no space.&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print(&lt;span style="color:#e6db74"&gt;&amp;#34;☍⟐☉⟊☽☈⟁⧋⟡☍⟐☉⟊☽☈⟁⧋⟡☍⟐☉⟊☽☈⟁⧋⟡☍⟐&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;#39;⊹─────────────⟡─────────────⊹&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; user_input &lt;span style="color:#f92672"&gt;=&lt;/span&gt; input(&lt;span style="color:#e6db74"&gt;&amp;#39;==&amp;gt; &amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; user_input &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\x65&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1751&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print(open(&lt;span style="color:#e6db74"&gt;&amp;#34;./flag.txt&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;r&amp;#34;&lt;/span&gt;)&lt;span style="color:#f92672"&gt;.&lt;/span&gt;read())
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;else&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;That wasn&amp;#39;t it. I got: &amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; str(user_input))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;except&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Exception&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;as&lt;/span&gt; e:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print(e)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/p&gt;</description></item><item><title>My Git</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/my-git/</link><pubDate>Fri, 17 Apr 2026 21:18:48 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/my-git/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/764"&gt;https://learn.cylabacademy.org/library/764&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;輸入 &lt;code&gt;ssh&lt;/code&gt; 指令以及密碼來 &lt;code&gt;clone&lt;/code&gt; 下專案到本地。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;查看 &lt;code&gt;README.md&lt;/code&gt; 內容，得知要使用使用者名稱 &lt;code&gt;root&lt;/code&gt;、電子郵件 &lt;code&gt;root@picoctf&lt;/code&gt; 來推送 &lt;code&gt;flag.txt&lt;/code&gt; 到遠端。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;5
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;6
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;7
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ cat README.md
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# MyGit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;### If you want the flag, make sure to push the flag!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Only flag.txt pushed by &lt;span style="color:#e6db74"&gt;```&lt;/span&gt;root:root@picoctf&lt;span style="color:#e6db74"&gt;```&lt;/span&gt; will be updated with the flag.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;GOOD LUCK!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用 &lt;code&gt;git config&lt;/code&gt; 來設定使用者名稱和電子郵件&lt;/p&gt;</description></item><item><title>Undo</title><link>https://picoctf-writeup.pinjim.dev/posts/general-skills/undo/</link><pubDate>Thu, 16 Apr 2026 22:00:24 +0800</pubDate><guid>https://picoctf-writeup.pinjim.dev/posts/general-skills/undo/</guid><description>&lt;h2 id="題目連結"&gt;題目連結&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.cylabacademy.org/library/766"&gt;https://learn.cylabacademy.org/library/766&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="題目解法"&gt;題目解法&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;透過 &lt;code&gt;nc&lt;/code&gt; 指令連線&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;步驟一：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;--- Step 1 ---
Current flag: KTBxcDI0bnIwLWZhMDFnQHplMHNmYTRlRy1nazNnLXRhMWZlcmlyRShTR1BicHZj
Hint: Base64 encoded the string.
Enter the Linux command to reverse it:
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;要求使用 base64 解密，使用以下指令來解密&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;base64 -d
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;步驟二：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;--- Step 2 ---
Current flag: )0qp24nr0-fa01g@ze0sfa4eG-gk3g-ta1ferirE(SGPbpvc
Hint: Reversed the text.
Enter the Linux command to reverse it:
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;要求使用將字串反轉，使用以下指令來反轉&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;rev
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;步驟三：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;--- Step 3 ---
Current flag: cvpbPGS(Eriref1at-g3kg-Ge4afs0ez@g10af-0rn42pq0)
Hint: Replaced underscores with dashes.
Enter the Linux command to reverse it:
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;要求將字串的 &amp;lsquo;-&amp;rsquo; 換成 &amp;lsquo;_&amp;rsquo;, 使用以下指令來替換&lt;/p&gt;</description></item></channel></rss>