<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Natas on Coding braindump</title><link>https://dev-initely.me/natas/</link><description>Recent content in Natas on Coding braindump</description><generator>Hugo</generator><language>en</language><lastBuildDate>Wed, 02 Apr 2025 22:58:00 +0700</lastBuildDate><atom:link href="https://dev-initely.me/natas/index.xml" rel="self" type="application/rss+xml"/><item><title>Level 16</title><link>https://dev-initely.me/natas/level16/</link><pubDate>Thu, 27 Mar 2025 00:00:00 +0700</pubDate><guid>https://dev-initely.me/natas/level16/</guid><description>&lt;ul&gt;&#10;&lt;li&gt;State &amp;ldquo;DONE&amp;rdquo; from &amp;ldquo;TODO&amp;rdquo; &lt;span class="timestamp-wrapper"&gt;&lt;span class="timestamp"&gt;[2025-04-02 Wed 22:58]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;a href="http://natas16.natas.labs.overthewire.org/" target="_blank" rel="noopener noreffer "&gt;http://natas16.natas.labs.overthewire.org/&lt;/a&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;So there is one input field and a comment that for security reasons, the code now filters on more characters. There is also a output field below, supposedly to give back a response from the search request.&lt;/p&gt;&#10;&lt;p&gt;Alright, let&amp;rsquo;s look at the sourcecode:&lt;/p&gt;&#10;&lt;div class="code-block code-line-numbers open" style="counter-reset: code-block 0"&gt;&#10; &lt;div class="code-header language-web"&gt;&#10; &lt;span class="code-title"&gt;&lt;i class="arrow fas fa-angle-right" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;span class="ellipses"&gt;&lt;i class="fas fa-ellipsis-h" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;span class="copy" title="Copy to clipboard"&gt;&lt;i class="far fa-copy" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;/div&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-web" data-lang="web"&gt;&amp;lt;html&amp;gt;&#10; &amp;lt;head&amp;gt;&#10; &amp;lt;!-- This stuff in the header has nothing to do with the level --&amp;gt;&#10; &amp;lt;link rel=&amp;#34;stylesheet&amp;#34; type=&amp;#34;text/css&amp;#34; href=&amp;#34;http://natas.labs.overthewire.org/css/level.css&amp;#34;&amp;gt;&#10; &amp;lt;link rel=&amp;#34;stylesheet&amp;#34; href=&amp;#34;http://natas.labs.overthewire.org/css/jquery-ui.css&amp;#34; /&amp;gt;&#10; &amp;lt;link rel=&amp;#34;stylesheet&amp;#34; href=&amp;#34;http://natas.labs.overthewire.org/css/wechall.css&amp;#34; /&amp;gt;&#10; &amp;lt;script src=&amp;#34;http://natas.labs.overthewire.org/js/jquery-1.9.1.js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;&#10; &amp;lt;script src=&amp;#34;http://natas.labs.overthewire.org/js/jquery-ui.js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;&#10; &amp;lt;script src=http://natas.labs.overthewire.org/js/wechall-data.js&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;script src=&amp;#34;http://natas.labs.overthewire.org/js/wechall.js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;&#10; &amp;lt;script&amp;gt;var wechallinfo = { &amp;#34;level&amp;#34;: &amp;#34;natas16&amp;#34;, &amp;#34;pass&amp;#34;: &amp;#34;&amp;lt;censored&amp;gt;&amp;#34; };&amp;lt;/script&amp;gt;&amp;lt;/head&amp;gt;&#10; &amp;lt;body&amp;gt;&#10; &amp;lt;h1&amp;gt;natas16&amp;lt;/h1&amp;gt;&#10; &amp;lt;div id=&amp;#34;content&amp;#34;&amp;gt;&#10;&#10; For security reasons, we now filter even more on certain characters&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&#10; &amp;lt;form&amp;gt;&#10; Find words containing: &amp;lt;input name=needle&amp;gt;&amp;lt;input type=submit name=submit value=Search&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#10; &amp;lt;/form&amp;gt;&#10;&#10; Output:&#10; &amp;lt;pre&amp;gt;&#10;&amp;lt;?&#10;$key = &amp;#34;&amp;#34;;&#10;&#10;if(array_key_exists(&amp;#34;needle&amp;#34;, $_REQUEST)) {&#10; $key = $_REQUEST[&amp;#34;needle&amp;#34;];&#10;}&#10;&#10;if($key != &amp;#34;&amp;#34;) {&#10; if(preg_match(&amp;#39;/[;|&amp;amp;`\&amp;#39;&amp;#34;]/&amp;#39;,$key)) {&#10; print &amp;#34;Input contains an illegal character!&amp;#34;;&#10; } else {&#10; passthru(&amp;#34;grep -i \&amp;#34;$key\&amp;#34; dictionary.txt&amp;#34;);&#10; }&#10;}&#10;?&amp;gt;&#10; &amp;lt;/pre&amp;gt;&#10;&#10; &amp;lt;div id=&amp;#34;viewsource&amp;#34;&amp;gt;&amp;lt;a href=&amp;#34;index-source.html&amp;#34;&amp;gt;View sourcecode&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#10; &amp;lt;/div&amp;gt;&#10; &amp;lt;/body&amp;gt;&#10;&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;h2 id="shell-injection"&gt;Shell injection&lt;/h2&gt;&#10;&lt;p&gt;At first impression, this looks very much like level 9 above; if you need a reminder, go look at the walkthrough for it. We made use of the fact that passthru() does not sanitize and where able to insert some shell code into the grep command like so &lt;code&gt;test; whoami&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Level 1</title><link>https://dev-initely.me/natas/level1/</link><pubDate>Thu, 27 Mar 2025 14:45:00 +0700</pubDate><guid>https://dev-initely.me/natas/level1/</guid><description>&lt;ul&gt;&#10;&lt;li&gt;State &amp;ldquo;DONE&amp;rdquo; from &lt;span class="timestamp-wrapper"&gt;&lt;span class="timestamp"&gt;[2025-03-27 Thu 14:45]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;You can find the password for the next level on this page, but rightclicking has been blocked!&lt;/p&gt;&#10;&lt;p&gt;And indeed: we try to rightclick and get an annoying error message. However, a quick google search shows us that there is a shortcut for Chrome: &lt;code&gt;CTRL + U&lt;/code&gt; gets us the page source&lt;/p&gt;&#10;&lt;div class="code-block open" style="counter-reset: code-block -1"&gt;&#10; &lt;div class="code-header language-html"&gt;&#10; &lt;span class="code-title"&gt;&lt;i class="arrow fas fa-angle-right" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;span class="ellipses"&gt;&lt;i class="fas fa-ellipsis-h" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;span class="copy" title="Copy to clipboard"&gt;&lt;i class="far fa-copy" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;html&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;head&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;&amp;lt;!-- This stuff in the header has nothing to do with the level --&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;link&lt;/span&gt; &lt;span class="na"&gt;rel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;stylesheet&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;text/css&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://natas.labs.overthewire.org/css/level.css&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;link&lt;/span&gt; &lt;span class="na"&gt;rel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;stylesheet&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://natas.labs.overthewire.org/css/jquery-ui.css&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;link&lt;/span&gt; &lt;span class="na"&gt;rel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;stylesheet&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://natas.labs.overthewire.org/css/wechall.css&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://natas.labs.overthewire.org/js/jquery-1.9.1.js&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://natas.labs.overthewire.org/js/jquery-ui.js&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;http://natas.labs.overthewire.org/js/wechall-data.js&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://natas.labs.overthewire.org/js/wechall.js&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;wechallinfo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;level&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;natas1&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;pass&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;0nzCigAq7t2iALyvU9xcHlYN4MlkIwlq&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;};&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;head&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="na"&gt;oncontextmenu&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;javascript:alert(&amp;#39;right clicking has been blocked!&amp;#39;);return false;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;natas1&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;content&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; You can find the password for the&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; next level on this page, but rightclicking has been blocked!&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;&amp;lt;!--The password for natas2 is TguMNxKo1DSa1tujBLuZJnDUlCcUAPlI --&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;body&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;html&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;TguMNxKo1DSa1tujBLuZJnDUlCcUAPlI&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Level 10</title><link>https://dev-initely.me/natas/level10/</link><pubDate>Thu, 27 Mar 2025 14:45:00 +0700</pubDate><guid>https://dev-initely.me/natas/level10/</guid><description>&lt;ul&gt;&#10;&lt;li&gt;State &amp;ldquo;DONE&amp;rdquo; from &lt;span class="timestamp-wrapper"&gt;&lt;span class="timestamp"&gt;[2025-03-27 Thu 14:45]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;a href="http://natas10.natas.labs.overthewire.org/" target="_blank" rel="noopener noreffer "&gt;http://natas10.natas.labs.overthewire.org/&lt;/a&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;Level 10 starts off the same way as level 9, however it seems that now there is a filter against certain characters.&#10;&lt;img&#10; class="lazyload"&#10; src="https://dev-initely.me/svg/loading.min.svg"&#10; data-src="clipboard-20250227T233639.png"&#10; data-srcset="clipboard-20250227T233639.png, clipboard-20250227T233639.png 1.5x, clipboard-20250227T233639.png 2x"&#10; data-sizes="auto"&#10; alt="clipboard-20250227T233639.png"&#10; title="clipboard-20250227T233639.png" /&gt;&lt;/p&gt;&#10;&lt;p&gt;Looking at the sourcecode, we see that the characters &lt;code&gt;;|&amp;amp;&lt;/code&gt; are now disallowed. However, space is not disallowed.&lt;/p&gt;&#10;&lt;div class="code-block open" style="counter-reset: code-block -1"&gt;&#10; &lt;div class="code-header language-web"&gt;&#10; &lt;span class="code-title"&gt;&lt;i class="arrow fas fa-angle-right" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;span class="ellipses"&gt;&lt;i class="fas fa-ellipsis-h" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;span class="copy" title="Copy to clipboard"&gt;&lt;i class="far fa-copy" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;/div&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-web" data-lang="web"&gt;&amp;lt;?&#10;$key = &amp;#34;&amp;#34;;&#10;&#10;if(array_key_exists(&amp;#34;needle&amp;#34;, $_REQUEST)) {&#10;$key = $_REQUEST[&amp;#34;needle&amp;#34;];&#10;}&#10;&#10;if($key != &amp;#34;&amp;#34;) {&#10;if(preg_match(&amp;#39;/[;|&amp;amp;]/&amp;#39;,$key)) {&#10;print &amp;#34;Input contains an illegal character!&amp;#34;;&#10;} else {&#10;passthru(&amp;#34;grep -i $key dictionary.txt&amp;#34;);&#10;}&#10;}&#10;?&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;p&gt;So the strategy from level 9 will not work anymore. However, there is another way to exploit this - we can use the fact that &lt;code&gt;grep&lt;/code&gt; can search through several files.&lt;/p&gt;</description></item><item><title>Level 11</title><link>https://dev-initely.me/natas/level11/</link><pubDate>Thu, 27 Mar 2025 14:45:00 +0700</pubDate><guid>https://dev-initely.me/natas/level11/</guid><description>&lt;ul&gt;&#10;&lt;li&gt;State &amp;ldquo;DONE&amp;rdquo; from &lt;span class="timestamp-wrapper"&gt;&lt;span class="timestamp"&gt;[2025-03-27 Thu 14:45]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;a href="http://natas11.natas.labs.overthewire.org/" target="_blank" rel="noopener noreffer "&gt;http://natas11.natas.labs.overthewire.org/&lt;/a&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;This level seems to work with an encryption called XOR encryption:&lt;/p&gt;&#10;&lt;figure&gt;&lt;img src="clipboard-20250301T221818.png"&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;h2 id="background"&gt;Background&lt;/h2&gt;&#10;&lt;p&gt;Okay, some theory first: what is an XOR cipher? It is a type of additive cipher that works with the applying the bitwise XOR operator to every character using a given key. To decrypt, applying the XOR function with the key will remove the cipher. To take an example from Wikipedia, let&amp;rsquo;s take the string &amp;lsquo;Wiki&amp;rsquo; and encode it in 8-bit ASCII and encode it with the key 11110011:&lt;/p&gt;</description></item><item><title>Level 12</title><link>https://dev-initely.me/natas/level12/</link><pubDate>Thu, 27 Mar 2025 14:45:00 +0700</pubDate><guid>https://dev-initely.me/natas/level12/</guid><description>&lt;ul&gt;&#10;&lt;li&gt;State &amp;ldquo;DONE&amp;rdquo; from &lt;span class="timestamp-wrapper"&gt;&lt;span class="timestamp"&gt;[2025-03-27 Thu 14:45]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;a href="http://natas12.natas.labs.overthewire.org/" target="_blank" rel="noopener noreffer "&gt;http://natas12.natas.labs.overthewire.org/&lt;/a&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;This one took me quite a while to figure out using several tutorials from different websites. First we see an upload dialogue allowing us to upload a JPEG file.&lt;/p&gt;&#10;&lt;figure&gt;&lt;img src="clipboard-20250310T165111.png"&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;h2 id="background"&gt;Background&lt;/h2&gt;&#10;&lt;p&gt;If a webpage allows to upload files, the developer has to make sure that the backend checks appropriately for filetypes and malicious intent. So here I assume that no proper checking is done and we can do something malicious.&lt;/p&gt;</description></item><item><title>Level 13</title><link>https://dev-initely.me/natas/level13/</link><pubDate>Thu, 27 Mar 2025 14:45:00 +0700</pubDate><guid>https://dev-initely.me/natas/level13/</guid><description>&lt;ul&gt;&#10;&lt;li&gt;State &amp;ldquo;DONE&amp;rdquo; from &lt;span class="timestamp-wrapper"&gt;&lt;span class="timestamp"&gt;[2025-03-27 Thu 14:45]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;a href="http://natas13.natas.labs.overthewire.org/" target="_blank" rel="noopener noreffer "&gt;http://natas13.natas.labs.overthewire.org/&lt;/a&gt;&#10;&lt;/p&gt;&#10;&lt;figure&gt;&lt;img src="clipboard-20250316T214024.png"&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;p&gt;This one looks very similar to the prior exercise, so let&amp;rsquo;s start the same way and look at the source code.&lt;/p&gt;&#10;&lt;div class="code-block" style="counter-reset: code-block -1"&gt;&#10; &lt;div class="code-header language-web"&gt;&#10; &lt;span class="code-title"&gt;&lt;i class="arrow fas fa-angle-right" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;span class="ellipses"&gt;&lt;i class="fas fa-ellipsis-h" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;span class="copy" title="Copy to clipboard"&gt;&lt;i class="far fa-copy" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;/div&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-web" data-lang="web"&gt;&amp;lt;html&amp;gt;&#10;&amp;lt;head&amp;gt;&#10;&amp;lt;!-- This stuff in the header has nothing to do with the level --&amp;gt;&#10;&amp;lt;link rel=&amp;#34;stylesheet&amp;#34; type=&amp;#34;text/css&amp;#34; href=&amp;#34;http://natas.labs.overthewire.org/css/level.css&amp;#34;&amp;gt;&#10;&amp;lt;link rel=&amp;#34;stylesheet&amp;#34; href=&amp;#34;http://natas.labs.overthewire.org/css/jquery-ui.css&amp;#34; /&amp;gt;&#10;&amp;lt;link rel=&amp;#34;stylesheet&amp;#34; href=&amp;#34;http://natas.labs.overthewire.org/css/wechall.css&amp;#34; /&amp;gt;&#10;&amp;lt;script src=&amp;#34;http://natas.labs.overthewire.org/js/jquery-1.9.1.js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;&#10;&amp;lt;script src=&amp;#34;http://natas.labs.overthewire.org/js/jquery-ui.js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;&#10;&amp;lt;script src=http://natas.labs.overthewire.org/js/wechall-data.js&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;script src=&amp;#34;http://natas.labs.overthewire.org/js/wechall.js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;&#10;&amp;lt;script&amp;gt;var wechallinfo = { &amp;#34;level&amp;#34;: &amp;#34;natas13&amp;#34;, &amp;#34;pass&amp;#34;: &amp;#34;&amp;lt;censored&amp;gt;&amp;#34; };&amp;lt;/script&amp;gt;&amp;lt;/head&amp;gt;&#10;&amp;lt;body&amp;gt;&#10;&amp;lt;h1&amp;gt;natas13&amp;lt;/h1&amp;gt;&#10;&amp;lt;div id=&amp;#34;content&amp;#34;&amp;gt;&#10;For security reasons, we now only accept image files!&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&#10;&#10;&amp;lt;?php&#10;&#10;function genRandomString() {&#10; $length = 10;&#10; $characters = &amp;#34;0123456789abcdefghijklmnopqrstuvwxyz&amp;#34;;&#10; $string = &amp;#34;&amp;#34;;&#10;&#10; for ($p = 0; $p &amp;lt; $length; $p++) {&#10; $string .= $characters[mt_rand(0, strlen($characters)-1)];&#10; }&#10;&#10; return $string;&#10;}&#10;&#10;function makeRandomPath($dir, $ext) {&#10; do {&#10; $path = $dir.&amp;#34;/&amp;#34;.genRandomString().&amp;#34;.&amp;#34;.$ext;&#10; } while(file_exists($path));&#10; return $path;&#10;}&#10;&#10;function makeRandomPathFromFilename($dir, $fn) {&#10; $ext = pathinfo($fn, PATHINFO_EXTENSION);&#10; return makeRandomPath($dir, $ext);&#10;}&#10;&#10;if(array_key_exists(&amp;#34;filename&amp;#34;, $_POST)) {&#10; $target_path = makeRandomPathFromFilename(&amp;#34;upload&amp;#34;, $_POST[&amp;#34;filename&amp;#34;]);&#10;&#10; $err=$_FILES[&amp;#39;uploadedfile&amp;#39;][&amp;#39;error&amp;#39;];&#10; if($err){&#10; if($err === 2){&#10; echo &amp;#34;The uploaded file exceeds MAX_FILE_SIZE&amp;#34;;&#10; } else{&#10; echo &amp;#34;Something went wrong :/&amp;#34;;&#10; }&#10; } else if(filesize($_FILES[&amp;#39;uploadedfile&amp;#39;][&amp;#39;tmp_name&amp;#39;]) &amp;gt; 1000) {&#10; echo &amp;#34;File is too big&amp;#34;;&#10; } else if (! exif_imagetype($_FILES[&amp;#39;uploadedfile&amp;#39;][&amp;#39;tmp_name&amp;#39;])) {&#10; echo &amp;#34;File is not an image&amp;#34;;&#10; } else {&#10; if(move_uploaded_file($_FILES[&amp;#39;uploadedfile&amp;#39;][&amp;#39;tmp_name&amp;#39;], $target_path)) {&#10; echo &amp;#34;The file &amp;lt;a href=\&amp;#34;$target_path\&amp;#34;&amp;gt;$target_path&amp;lt;/a&amp;gt; has been uploaded&amp;#34;;&#10; } else{&#10; echo &amp;#34;There was an error uploading the file, please try again!&amp;#34;;&#10; }&#10; }&#10;} else {&#10;?&amp;gt;&#10;&#10;&amp;lt;form enctype=&amp;#34;multipart/form-data&amp;#34; action=&amp;#34;index.php&amp;#34; method=&amp;#34;POST&amp;#34;&amp;gt;&#10;&amp;lt;input type=&amp;#34;hidden&amp;#34; name=&amp;#34;MAX_FILE_SIZE&amp;#34; value=&amp;#34;1000&amp;#34; /&amp;gt;&#10;&amp;lt;input type=&amp;#34;hidden&amp;#34; name=&amp;#34;filename&amp;#34; value=&amp;#34;&amp;lt;?php print genRandomString(); ?&amp;gt;.jpg&amp;#34; /&amp;gt;&#10;Choose a JPEG to upload (max 1KB):&amp;lt;br/&amp;gt;&#10;&amp;lt;input name=&amp;#34;uploadedfile&amp;#34; type=&amp;#34;file&amp;#34; /&amp;gt;&amp;lt;br /&amp;gt;&#10;&amp;lt;input type=&amp;#34;submit&amp;#34; value=&amp;#34;Upload File&amp;#34; /&amp;gt;&#10;&amp;lt;/form&amp;gt;&#10;&amp;lt;?php } ?&amp;gt;&#10;&amp;lt;div id=&amp;#34;viewsource&amp;#34;&amp;gt;&amp;lt;a href=&amp;#34;index-source.html&amp;#34;&amp;gt;View sourcecode&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#10;&amp;lt;/div&amp;gt;&#10;&amp;lt;/body&amp;gt;&#10;&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;p&gt;The code introduces some additional file checking, specifically here:&lt;/p&gt;</description></item><item><title>Level 14</title><link>https://dev-initely.me/natas/level14/</link><pubDate>Thu, 27 Mar 2025 14:45:00 +0700</pubDate><guid>https://dev-initely.me/natas/level14/</guid><description>&lt;ul&gt;&#10;&lt;li&gt;State &amp;ldquo;DONE&amp;rdquo; from &lt;span class="timestamp-wrapper"&gt;&lt;span class="timestamp"&gt;[2025-03-27 Thu 14:45]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;a href="http://natas14.natas.labs.overthewire.org/" target="_blank" rel="noopener noreffer "&gt;http://natas14.natas.labs.overthewire.org/&lt;/a&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;Level 14 starts with a common username and passwword login form:&#10;&lt;img&#10; class="lazyload"&#10; src="https://dev-initely.me/svg/loading.min.svg"&#10; data-src="clipboard-20250317T101510.png"&#10; data-srcset="clipboard-20250317T101510.png, clipboard-20250317T101510.png 1.5x, clipboard-20250317T101510.png 2x"&#10; data-sizes="auto"&#10; alt="clipboard-20250317T101510.png"&#10; title="clipboard-20250317T101510.png" /&gt;&lt;/p&gt;&#10;&lt;p&gt;Trying a random value yields a simple message: &amp;ldquo;Access denied&amp;rdquo;. So have a look at the sourcecode:&lt;/p&gt;&#10;&lt;div class="code-block code-line-numbers open" style="counter-reset: code-block 0"&gt;&#10; &lt;div class="code-header language-web"&gt;&#10; &lt;span class="code-title"&gt;&lt;i class="arrow fas fa-angle-right" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;span class="ellipses"&gt;&lt;i class="fas fa-ellipsis-h" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;span class="copy" title="Copy to clipboard"&gt;&lt;i class="far fa-copy" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;/div&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-web" data-lang="web"&gt;&#10;&#10;&amp;lt;html&amp;gt;&#10;&amp;lt;head&amp;gt;&#10;&amp;lt;!-- This stuff in the header has nothing to do with the level --&amp;gt;&#10;&amp;lt;link rel=&amp;#34;stylesheet&amp;#34; type=&amp;#34;text/css&amp;#34; href=&amp;#34;http://natas.labs.overthewire.org/css/level.css&amp;#34;&amp;gt;&#10;&amp;lt;link rel=&amp;#34;stylesheet&amp;#34; href=&amp;#34;http://natas.labs.overthewire.org/css/jquery-ui.css&amp;#34; /&amp;gt;&#10;&amp;lt;link rel=&amp;#34;stylesheet&amp;#34; href=&amp;#34;http://natas.labs.overthewire.org/css/wechall.css&amp;#34; /&amp;gt;&#10;&amp;lt;script src=&amp;#34;http://natas.labs.overthewire.org/js/jquery-1.9.1.js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;&#10;&amp;lt;script src=&amp;#34;http://natas.labs.overthewire.org/js/jquery-ui.js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;&#10;&amp;lt;script src=http://natas.labs.overthewire.org/js/wechall-data.js&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;script src=&amp;#34;http://natas.labs.overthewire.org/js/wechall.js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;&#10;&amp;lt;script&amp;gt;var wechallinfo = { &amp;#34;level&amp;#34;: &amp;#34;natas14&amp;#34;, &amp;#34;pass&amp;#34;: &amp;#34;&amp;lt;censored&amp;gt;&amp;#34; };&amp;lt;/script&amp;gt;&amp;lt;/head&amp;gt;&#10;&amp;lt;body&amp;gt;&#10;&amp;lt;h1&amp;gt;natas14&amp;lt;/h1&amp;gt;&#10;&amp;lt;div id=&amp;#34;content&amp;#34;&amp;gt;&#10; &amp;lt;?php&#10; if(array_key_exists(&amp;#34;username&amp;#34;, $_REQUEST)) {&#10; $link = mysqli_connect(&amp;#39;localhost&amp;#39;, &amp;#39;natas14&amp;#39;, &amp;#39;&amp;lt;censored&amp;gt;&amp;#39;);&#10; mysqli_select_db($link, &amp;#39;natas14&amp;#39;);&#10;&#10; $query = &amp;#34;SELECT * from users where username=\&amp;#34;&amp;#34;.$_REQUEST[&amp;#34;username&amp;#34;].&amp;#34;\&amp;#34; and password=\&amp;#34;&amp;#34;.$_REQUEST[&amp;#34;password&amp;#34;].&amp;#34;\&amp;#34;&amp;#34;;&#10; if(array_key_exists(&amp;#34;debug&amp;#34;, $_GET)) {&#10; echo &amp;#34;Executing query: $query&amp;lt;br&amp;gt;&amp;#34;;&#10; }&#10;&#10; if(mysqli_num_rows(mysqli_query($link, $query)) &amp;gt; 0) {&#10; echo &amp;#34;Successful login! The password for natas15 is &amp;lt;censored&amp;gt;&amp;lt;br&amp;gt;&amp;#34;;&#10; } else {&#10; echo &amp;#34;Access denied!&amp;lt;br&amp;gt;&amp;#34;;&#10; }&#10; mysqli_close($link);&#10;} else {&#10;?&amp;gt;&#10;&#10;&amp;lt;form action=&amp;#34;index.php&amp;#34; method=&amp;#34;POST&amp;#34;&amp;gt;&#10;Username: &amp;lt;input name=&amp;#34;username&amp;#34;&amp;gt;&amp;lt;br&amp;gt;&#10;Password: &amp;lt;input name=&amp;#34;password&amp;#34;&amp;gt;&amp;lt;br&amp;gt;&#10;&amp;lt;input type=&amp;#34;submit&amp;#34; value=&amp;#34;Login&amp;#34; /&amp;gt;&#10;&amp;lt;/form&amp;gt;&#10;&amp;lt;?php } ?&amp;gt;&#10;&amp;lt;div id=&amp;#34;viewsource&amp;#34;&amp;gt;&amp;lt;a href=&amp;#34;index-source.html&amp;#34;&amp;gt;View sourcecode&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#10;&amp;lt;/div&amp;gt;&#10;&amp;lt;/body&amp;gt;&#10;&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;p&gt;The code first checks if a username is provided, then establishes a connection to MySQL using the username &lt;code&gt;natas14&lt;/code&gt; and selects the natas14 database. Then it constructs the SQL query with the input from the input form. The script then runs the SQL query and checks if any rows match the username and password. Finally, it closes the connection.&lt;/p&gt;</description></item><item><title>Level 15</title><link>https://dev-initely.me/natas/level15/</link><pubDate>Thu, 27 Mar 2025 14:45:00 +0700</pubDate><guid>https://dev-initely.me/natas/level15/</guid><description>&lt;ul&gt;&#10;&lt;li&gt;State &amp;ldquo;DONE&amp;rdquo; from &lt;span class="timestamp-wrapper"&gt;&lt;span class="timestamp"&gt;[2025-03-27 Thu 14:45]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;a href="http://natas15.natas.labs.overthewire.org/" target="_blank" rel="noopener noreffer "&gt;http://natas15.natas.labs.overthewire.org/&lt;/a&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;This level starts very similar to level 14, however no we only check for the existence of a user using an input field:&lt;/p&gt;&#10;&lt;figure&gt;&lt;img src="clipboard-20250319T130841.png"&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;p&gt;Entering &lt;code&gt;natas16&lt;/code&gt; lets us know that this user exists. However, when we look at the sourcecode we see that we have a problem here:&lt;/p&gt;&#10;&lt;div class="code-block code-line-numbers" style="counter-reset: code-block 0"&gt;&#10; &lt;div class="code-header language-web"&gt;&#10; &lt;span class="code-title"&gt;&lt;i class="arrow fas fa-angle-right" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;span class="ellipses"&gt;&lt;i class="fas fa-ellipsis-h" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;span class="copy" title="Copy to clipboard"&gt;&lt;i class="far fa-copy" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;/div&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-web" data-lang="web"&gt; &amp;lt;html&amp;gt;&#10;&amp;lt;head&amp;gt;&#10;&amp;lt;!-- This stuff in the header has nothing to do with the level --&amp;gt;&#10;&amp;lt;link rel=&amp;#34;stylesheet&amp;#34; type=&amp;#34;text/css&amp;#34; href=&amp;#34;http://natas.labs.overthewire.org/css/level.css&amp;#34;&amp;gt;&#10;&amp;lt;link rel=&amp;#34;stylesheet&amp;#34; href=&amp;#34;http://natas.labs.overthewire.org/css/jquery-ui.css&amp;#34; /&amp;gt;&#10;&amp;lt;link rel=&amp;#34;stylesheet&amp;#34; href=&amp;#34;http://natas.labs.overthewire.org/css/wechall.css&amp;#34; /&amp;gt;&#10;&amp;lt;script src=&amp;#34;http://natas.labs.overthewire.org/js/jquery-1.9.1.js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;&#10;&amp;lt;script src=&amp;#34;http://natas.labs.overthewire.org/js/jquery-ui.js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;&#10;&amp;lt;script src=http://natas.labs.overthewire.org/js/wechall-data.js&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;script src=&amp;#34;http://natas.labs.overthewire.org/js/wechall.js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;&#10;&amp;lt;script&amp;gt;var wechallinfo = { &amp;#34;level&amp;#34;: &amp;#34;natas15&amp;#34;, &amp;#34;pass&amp;#34;: &amp;#34;&amp;lt;censored&amp;gt;&amp;#34; };&amp;lt;/script&amp;gt;&amp;lt;/head&amp;gt;&#10;&amp;lt;body&amp;gt;&#10;&amp;lt;h1&amp;gt;natas15&amp;lt;/h1&amp;gt;&#10;&amp;lt;div id=&amp;#34;content&amp;#34;&amp;gt;&#10;&amp;lt;?php&#10;&#10;/*&#10;CREATE TABLE `users` (&#10; `username` varchar(64) DEFAULT NULL,&#10; `password` varchar(64) DEFAULT NULL&#10;);&#10;*/&#10;&#10;if(array_key_exists(&amp;#34;username&amp;#34;, $_REQUEST)) {&#10; $link = mysqli_connect(&amp;#39;localhost&amp;#39;, &amp;#39;natas15&amp;#39;, &amp;#39;&amp;lt;censored&amp;gt;&amp;#39;);&#10; mysqli_select_db($link, &amp;#39;natas15&amp;#39;);&#10;&#10; $query = &amp;#34;SELECT * from users where username=\&amp;#34;&amp;#34;.$_REQUEST[&amp;#34;username&amp;#34;].&amp;#34;\&amp;#34;&amp;#34;;&#10; if(array_key_exists(&amp;#34;debug&amp;#34;, $_GET)) {&#10; echo &amp;#34;Executing query: $query&amp;lt;br&amp;gt;&amp;#34;;&#10; }&#10;&#10; $res = mysqli_query($link, $query);&#10; if($res) {&#10; if(mysqli_num_rows($res) &amp;gt; 0) {&#10; echo &amp;#34;This user exists.&amp;lt;br&amp;gt;&amp;#34;;&#10; } else {&#10; echo &amp;#34;This user doesn&amp;#39;t exist.&amp;lt;br&amp;gt;&amp;#34;;&#10; }&#10; } else {&#10; echo &amp;#34;Error in query.&amp;lt;br&amp;gt;&amp;#34;;&#10; }&#10;&#10; mysqli_close($link);&#10;} else {&#10;?&amp;gt;&#10;&#10;&amp;lt;form action=&amp;#34;index.php&amp;#34; method=&amp;#34;POST&amp;#34;&amp;gt;&#10;Username: &amp;lt;input name=&amp;#34;username&amp;#34;&amp;gt;&amp;lt;br&amp;gt;&#10;&amp;lt;input type=&amp;#34;submit&amp;#34; value=&amp;#34;Check existence&amp;#34; /&amp;gt;&#10;&amp;lt;/form&amp;gt;&#10;&amp;lt;?php } ?&amp;gt;&#10;&amp;lt;div id=&amp;#34;viewsource&amp;#34;&amp;gt;&amp;lt;a href=&amp;#34;index-source.html&amp;#34;&amp;gt;View sourcecode&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#10;&amp;lt;/div&amp;gt;&#10;&amp;lt;/body&amp;gt;&#10;&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;p&gt;So the logical flow is as follows:&lt;/p&gt;</description></item><item><title>Level 2</title><link>https://dev-initely.me/natas/level2/</link><pubDate>Thu, 27 Mar 2025 14:45:00 +0700</pubDate><guid>https://dev-initely.me/natas/level2/</guid><description>&lt;ul&gt;&#10;&lt;li&gt;State &amp;ldquo;DONE&amp;rdquo; from &lt;span class="timestamp-wrapper"&gt;&lt;span class="timestamp"&gt;[2025-03-27 Thu 14:45]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;When we open the page, we are greeted with the following message:&lt;/p&gt;&#10;&lt;p&gt;&lt;img&#10; class="lazyload"&#10; src="https://dev-initely.me/svg/loading.min.svg"&#10; data-src="https://dev-initely.me/home/mor3dr3ad/01_Nextcloud/org-mode/clipboard-20250216T133029.png"&#10; data-srcset="https://dev-initely.me/home/mor3dr3ad/01_Nextcloud/org-mode/clipboard-20250216T133029.png, https://dev-initely.me/home/mor3dr3ad/01_Nextcloud/org-mode/clipboard-20250216T133029.png 1.5x, https://dev-initely.me/home/mor3dr3ad/01_Nextcloud/org-mode/clipboard-20250216T133029.png 2x"&#10; data-sizes="auto"&#10; alt="/home/mor3dr3ad/01_Nextcloud/org-mode/clipboard-20250216T133029.png"&#10; title="/home/mor3dr3ad/01_Nextcloud/org-mode/clipboard-20250216T133029.png" /&gt;&#10;Okay, the first thing we want to do is check the source code. There is an interesting line here:&lt;/p&gt;&#10;&lt;div class="code-block code-line-numbers open" style="counter-reset: code-block 0"&gt;&#10; &lt;div class="code-header language-html"&gt;&#10; &lt;span class="code-title"&gt;&lt;i class="arrow fas fa-angle-right" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;span class="ellipses"&gt;&lt;i class="fas fa-ellipsis-h" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;span class="copy" title="Copy to clipboard"&gt;&lt;i class="far fa-copy" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;img&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;files/pixel.png&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;Looking at the picture we only see one pixel, so nothing interesting there really. However, there is another important information here, which is the filepath &lt;code&gt;files/pixel.png&lt;/code&gt;. If we look at URL + &lt;code&gt;/files&lt;/code&gt;, then we see that we are actually able to access this folder and find a &lt;code&gt;users.txt&lt;/code&gt; file containing the password.&#10;&lt;img&#10; class="lazyload"&#10; src="https://dev-initely.me/svg/loading.min.svg"&#10; data-src="clipboard-20250216T134444.png"&#10; data-srcset="clipboard-20250216T134444.png, clipboard-20250216T134444.png 1.5x, clipboard-20250216T134444.png 2x"&#10; data-sizes="auto"&#10; alt="clipboard-20250216T134444.png"&#10; title="clipboard-20250216T134444.png" /&gt;&lt;/p&gt;</description></item><item><title>Level 3</title><link>https://dev-initely.me/natas/level3/</link><pubDate>Thu, 27 Mar 2025 14:45:00 +0700</pubDate><guid>https://dev-initely.me/natas/level3/</guid><description>&lt;ul&gt;&#10;&lt;li&gt;State &amp;ldquo;DONE&amp;rdquo; from &lt;span class="timestamp-wrapper"&gt;&lt;span class="timestamp"&gt;[2025-03-27 Thu 14:45]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;a href="http://natas3.natas.labs.overthewire.org/" target="_blank" rel="noopener noreffer "&gt;http://natas3.natas.labs.overthewire.org/&lt;/a&gt;&#10;&#10;user: natas3&lt;/p&gt;&#10;&lt;p&gt;This level starts off the same as before with a screen showing &amp;ldquo;There is nothing on this page&amp;rdquo;. We check the source code for the webpage again and see that this time there is no leak, but an important hint:&lt;/p&gt;&#10;&lt;p&gt;&lt;img&#10; class="lazyload"&#10; src="https://dev-initely.me/svg/loading.min.svg"&#10; data-src="clipboard-20250216T135120.png"&#10; data-srcset="clipboard-20250216T135120.png, clipboard-20250216T135120.png 1.5x, clipboard-20250216T135120.png 2x"&#10; data-sizes="auto"&#10; alt="clipboard-20250216T135120.png"&#10; title="clipboard-20250216T135120.png" /&gt;&#10;This is the important line: &lt;code&gt;Not even Google will find it this time...&lt;/code&gt;, which is a hint at an existing &lt;code&gt;robots.txt&lt;/code&gt;. Indeed, if we type in the URL + &lt;code&gt;/robots.txt&lt;/code&gt;, we find a disallowed directory &lt;code&gt;/s3cr3t/&lt;/code&gt; containing a &lt;code&gt;user.txt&lt;/code&gt; and the password for level 4.&lt;/p&gt;</description></item><item><title>Level 4</title><link>https://dev-initely.me/natas/level4/</link><pubDate>Thu, 27 Mar 2025 14:45:00 +0700</pubDate><guid>https://dev-initely.me/natas/level4/</guid><description>&lt;ul&gt;&#10;&lt;li&gt;State &amp;ldquo;DONE&amp;rdquo; from &lt;span class="timestamp-wrapper"&gt;&lt;span class="timestamp"&gt;[2025-03-27 Thu 14:45]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;a href="http://natas4.natas.labs.overthewire.org/" target="_blank" rel="noopener noreffer "&gt;http://natas4.natas.labs.overthewire.org/&lt;/a&gt;&#10;&#10;user: natas4&lt;/p&gt;&#10;&lt;p&gt;This time the webpage looks different:&#10;&lt;img&#10; class="lazyload"&#10; src="https://dev-initely.me/svg/loading.min.svg"&#10; data-src="clipboard-20250216T135754.png"&#10; data-srcset="clipboard-20250216T135754.png, clipboard-20250216T135754.png 1.5x, clipboard-20250216T135754.png 2x"&#10; data-sizes="auto"&#10; alt="clipboard-20250216T135754.png"&#10; title="clipboard-20250216T135754.png" /&gt;&#10;We get a message saying that we are redirected from the wrong page. This means we need to change the referer header when visiting, we can do this using curl:&lt;/p&gt;&#10;&lt;div class="code-block code-line-numbers open" style="counter-reset: code-block 0"&gt;&#10; &lt;div class="code-header language-bash"&gt;&#10; &lt;span class="code-title"&gt;&lt;i class="arrow fas fa-angle-right" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;span class="ellipses"&gt;&lt;i class="fas fa-ellipsis-h" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;span class="copy" title="Copy to clipboard"&gt;&lt;i class="far fa-copy" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -u natas4:QryZXc2e0zahULdHrtHxzyYkj59kUxLQ --referer http://natas5.natas.labs.overthewire.org/ http://natas4.natas.labs.overthewire.org/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;0n35PkggAPm2zbEpOU802c0x0Msn1ToK&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Level 5</title><link>https://dev-initely.me/natas/level5/</link><pubDate>Thu, 27 Mar 2025 14:45:00 +0700</pubDate><guid>https://dev-initely.me/natas/level5/</guid><description>&lt;ul&gt;&#10;&lt;li&gt;State &amp;ldquo;DONE&amp;rdquo; from &lt;span class="timestamp-wrapper"&gt;&lt;span class="timestamp"&gt;[2025-03-27 Thu 14:45]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;a href="http://natas5.natas.labs.overthewire.org/" target="_blank" rel="noopener noreffer "&gt;http://natas5.natas.labs.overthewire.org/&lt;/a&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;user: natas5&lt;/p&gt;&#10;&lt;p&gt;The next level is a bit more difficult. We see a message that the user is not logged in. Looking at the page source code does not yield anything usable.&lt;/p&gt;&#10;&lt;p&gt;Now we need to think about how we log into a page: usually we go to a login page, however appending &lt;code&gt;/login&lt;/code&gt; does not yield any result. Let us think about how a login session is usually stored in the browser: usually this is done via the use of cookies.&lt;/p&gt;</description></item><item><title>Level 6</title><link>https://dev-initely.me/natas/level6/</link><pubDate>Thu, 27 Mar 2025 14:45:00 +0700</pubDate><guid>https://dev-initely.me/natas/level6/</guid><description>&lt;ul&gt;&#10;&lt;li&gt;State &amp;ldquo;DONE&amp;rdquo; from &lt;span class="timestamp-wrapper"&gt;&lt;span class="timestamp"&gt;[2025-03-27 Thu 14:45]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;a href="http://natas6.natas.labs.overthewire.org/" target="_blank" rel="noopener noreffer "&gt;http://natas6.natas.labs.overthewire.org/&lt;/a&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;user: natas5&lt;/p&gt;&#10;&lt;p&gt;When we open the webpage we are greeted with the following landing page:&lt;/p&gt;&#10;&lt;figure&gt;&lt;img src="clipboard-20250224T155951.png"&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;p&gt;So we are looking for some kind of secret to input. There is also an auspicious button on the bottom right that lets us view the sourcecode.&lt;/p&gt;&#10;&lt;div class="code-block open" style="counter-reset: code-block -1"&gt;&#10; &lt;div class="code-header language-web"&gt;&#10; &lt;span class="code-title"&gt;&lt;i class="arrow fas fa-angle-right" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;span class="ellipses"&gt;&lt;i class="fas fa-ellipsis-h" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;span class="copy" title="Copy to clipboard"&gt;&lt;i class="far fa-copy" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;/div&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-web" data-lang="web"&gt;&amp;lt;html&amp;gt;&#10; &amp;lt;head&amp;gt;&#10; &amp;lt;!-- This stuff in the header has nothing to do with the level --&amp;gt;&#10; &amp;lt;link rel=&amp;#34;stylesheet&amp;#34; type=&amp;#34;text/css&amp;#34; href=&amp;#34;http://natas.labs.overthewire.org/css/level.css&amp;#34;&amp;gt;&#10; &amp;lt;link rel=&amp;#34;stylesheet&amp;#34; href=&amp;#34;http://natas.labs.overthewire.org/css/jquery-ui.css&amp;#34; /&amp;gt;&#10; &amp;lt;link rel=&amp;#34;stylesheet&amp;#34; href=&amp;#34;http://natas.labs.overthewire.org/css/wechall.css&amp;#34; /&amp;gt;&#10; &amp;lt;script src=&amp;#34;http://natas.labs.overthewire.org/js/jquery-1.9.1.js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;&#10; &amp;lt;script src=&amp;#34;http://natas.labs.overthewire.org/js/jquery-ui.js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;&#10; &amp;lt;script src=http://natas.labs.overthewire.org/js/wechall-data.js&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;script src=&amp;#34;http://natas.labs.overthewire.org/js/wechall.js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;&#10; &amp;lt;script&amp;gt;var wechallinfo = { &amp;#34;level&amp;#34;: &amp;#34;natas6&amp;#34;, &amp;#34;pass&amp;#34;: &amp;#34;&amp;lt;censored&amp;gt;&amp;#34; };&amp;lt;/script&amp;gt;&amp;lt;/head&amp;gt;&#10; &amp;lt;body&amp;gt;&#10; &amp;lt;h1&amp;gt;natas6&amp;lt;/h1&amp;gt;&#10; &amp;lt;div id=&amp;#34;content&amp;#34;&amp;gt;&#10;&#10; &amp;lt;?&#10;&#10; include &amp;#34;includes/secret.inc&amp;#34;;&#10;&#10; if(array_key_exists(&amp;#34;submit&amp;#34;, $_POST)) {&#10; if($secret == $_POST[&amp;#39;secret&amp;#39;]) {&#10; print &amp;#34;Access granted. The password for natas7 is &amp;lt;censored&amp;gt;&amp;#34;;&#10; } else {&#10; print &amp;#34;Wrong secret&amp;#34;;&#10; }&#10; }&#10; ?&amp;gt;&#10;&#10; &amp;lt;form method=post&amp;gt;&#10; Input secret: &amp;lt;input name=secret&amp;gt;&amp;lt;br&amp;gt;&#10; &amp;lt;input type=submit name=submit&amp;gt;&#10; &amp;lt;/form&amp;gt;&#10;&#10; &amp;lt;div id=&amp;#34;viewsource&amp;#34;&amp;gt;&amp;lt;a href=&amp;#34;index-source.html&amp;#34;&amp;gt;View sourcecode&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#10; &amp;lt;/div&amp;gt;&#10; &amp;lt;/body&amp;gt;&#10;&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;p&gt;This seems to be some kind of mixture of &lt;code&gt;html&lt;/code&gt;, &lt;code&gt;php&lt;/code&gt; and &lt;code&gt;javascript&lt;/code&gt; with the code in the middle checking for some secret and if that secret is matched, the code will presumably return the password. Only problem: we do not know the secret unfortunately.&lt;/p&gt;</description></item><item><title>Level 7</title><link>https://dev-initely.me/natas/level7/</link><pubDate>Thu, 27 Mar 2025 14:45:00 +0700</pubDate><guid>https://dev-initely.me/natas/level7/</guid><description>&lt;ul&gt;&#10;&lt;li&gt;State &amp;ldquo;DONE&amp;rdquo; from &lt;span class="timestamp-wrapper"&gt;&lt;span class="timestamp"&gt;[2025-03-27 Thu 14:45]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;a href="http://natas7.natas.labs.overthewire.org/" target="_blank" rel="noopener noreffer "&gt;http://natas7.natas.labs.overthewire.org/&lt;/a&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;The next level is a bit more cryptic, all we see is this webpage with a &amp;ldquo;Home&amp;rdquo; and &amp;ldquo;About&amp;rdquo; section.&lt;/p&gt;&#10;&lt;figure&gt;&lt;img src="clipboard-20250224T165744.png"&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;p&gt;A look at the page source for this site shows us a hint though:&lt;/p&gt;&#10;&lt;div class="code-block open" style="counter-reset: code-block -1"&gt;&#10; &lt;div class="code-header language-web"&gt;&#10; &lt;span class="code-title"&gt;&lt;i class="arrow fas fa-angle-right" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;span class="ellipses"&gt;&lt;i class="fas fa-ellipsis-h" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;span class="copy" title="Copy to clipboard"&gt;&lt;i class="far fa-copy" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;/div&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-web" data-lang="web"&gt;&#10;&amp;lt;html&amp;gt;&#10; &amp;lt;head&amp;gt;&#10; &amp;lt;!-- This stuff in the header has nothing to do with the level --&amp;gt;&#10; &amp;lt;link rel=&amp;#34;stylesheet&amp;#34; type=&amp;#34;text/css&amp;#34; href=&amp;#34;http://natas.labs.overthewire.org/css/level.css&amp;#34;&amp;gt;&#10; &amp;lt;link rel=&amp;#34;stylesheet&amp;#34; href=&amp;#34;http://natas.labs.overthewire.org/css/jquery-ui.css&amp;#34; /&amp;gt;&#10; &amp;lt;link rel=&amp;#34;stylesheet&amp;#34; href=&amp;#34;http://natas.labs.overthewire.org/css/wechall.css&amp;#34; /&amp;gt;&#10; &amp;lt;script src=&amp;#34;http://natas.labs.overthewire.org/js/jquery-1.9.1.js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;&#10; &amp;lt;script src=&amp;#34;http://natas.labs.overthewire.org/js/jquery-ui.js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;&#10; &amp;lt;script src=http://natas.labs.overthewire.org/js/wechall-data.js&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;script src=&amp;#34;http://natas.labs.overthewire.org/js/wechall.js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;&#10; &amp;lt;script&amp;gt;var wechallinfo = { &amp;#34;level&amp;#34;: &amp;#34;natas7&amp;#34;, &amp;#34;pass&amp;#34;: &amp;#34;bmg8SvU1LizuWjx3y7xkNERkHxGre0GS&amp;#34; };&amp;lt;/script&amp;gt;&amp;lt;/head&amp;gt;&#10; &amp;lt;body&amp;gt;&#10; &amp;lt;h1&amp;gt;natas7&amp;lt;/h1&amp;gt;&#10; &amp;lt;div id=&amp;#34;content&amp;#34;&amp;gt;&#10;&#10; &amp;lt;a href=&amp;#34;index.php?page=home&amp;#34;&amp;gt;Home&amp;lt;/a&amp;gt;&#10; &amp;lt;a href=&amp;#34;index.php?page=about&amp;#34;&amp;gt;About&amp;lt;/a&amp;gt;&#10; &amp;lt;br&amp;gt;&#10; &amp;lt;br&amp;gt;&#10; this is the front page&#10;&#10; &amp;lt;!-- hint: password for webuser natas8 is in /etc/natas_webpass/natas8 --&amp;gt;&#10; &amp;lt;/div&amp;gt;&#10; &amp;lt;/body&amp;gt;&#10;&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;p&gt;Apparently the password for the user natas8 is in &lt;code&gt;/etc/natas_webpass/natas8&lt;/code&gt;. Appending this simply to the webpage does not produce the result we want. However, if we look closer at the url constructor, we see that it uses &lt;code&gt;?page=home&lt;/code&gt; as the constructor for home. So we try and insert the filepath above instead of home:&lt;/p&gt;</description></item><item><title>Level 8</title><link>https://dev-initely.me/natas/level8/</link><pubDate>Thu, 27 Mar 2025 14:45:00 +0700</pubDate><guid>https://dev-initely.me/natas/level8/</guid><description>&lt;ul&gt;&#10;&lt;li&gt;State &amp;ldquo;DONE&amp;rdquo; from &lt;span class="timestamp-wrapper"&gt;&lt;span class="timestamp"&gt;[2025-03-27 Thu 14:45]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;a href="http://natas8.natas.labs.overthewire.org/" target="_blank" rel="noopener noreffer "&gt;http://natas8.natas.labs.overthewire.org/&lt;/a&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;Level 8 is a little tricky. We are asked to input a secret again and have a button showing the sourcecode.&lt;/p&gt;&#10;&lt;figure&gt;&lt;img src="clipboard-20250224T233738.png"&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;p&gt;So let&amp;rsquo;s look at the sourcecode:&lt;/p&gt;&#10;&lt;div class="code-block open" style="counter-reset: code-block -1"&gt;&#10; &lt;div class="code-header language-web"&gt;&#10; &lt;span class="code-title"&gt;&lt;i class="arrow fas fa-angle-right" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;span class="ellipses"&gt;&lt;i class="fas fa-ellipsis-h" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;span class="copy" title="Copy to clipboard"&gt;&lt;i class="far fa-copy" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;/div&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-web" data-lang="web"&gt;&amp;lt;html&amp;gt;&#10; &amp;lt;head&amp;gt;&#10; &amp;lt;!-- This stuff in the header has nothing to do with the level --&amp;gt;&#10; &amp;lt;link rel=&amp;#34;stylesheet&amp;#34; type=&amp;#34;text/css&amp;#34; href=&amp;#34;http://natas.labs.overthewire.org/css/level.css&amp;#34;&amp;gt;&#10; &amp;lt;link rel=&amp;#34;stylesheet&amp;#34; href=&amp;#34;http://natas.labs.overthewire.org/css/jquery-ui.css&amp;#34; /&amp;gt;&#10; &amp;lt;link rel=&amp;#34;stylesheet&amp;#34; href=&amp;#34;http://natas.labs.overthewire.org/css/wechall.css&amp;#34; /&amp;gt;&#10; &amp;lt;script src=&amp;#34;http://natas.labs.overthewire.org/js/jquery-1.9.1.js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;&#10; &amp;lt;script src=&amp;#34;http://natas.labs.overthewire.org/js/jquery-ui.js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;&#10; &amp;lt;script src=http://natas.labs.overthewire.org/js/wechall-data.js&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;script src=&amp;#34;http://natas.labs.overthewire.org/js/wechall.js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;&#10; &amp;lt;script&amp;gt;var wechallinfo = { &amp;#34;level&amp;#34;: &amp;#34;natas8&amp;#34;, &amp;#34;pass&amp;#34;: &amp;#34;&amp;lt;censored&amp;gt;&amp;#34; };&amp;lt;/script&amp;gt;&amp;lt;/head&amp;gt;&#10; &amp;lt;body&amp;gt;&#10; &amp;lt;h1&amp;gt;natas8&amp;lt;/h1&amp;gt;&#10; &amp;lt;div id=&amp;#34;content&amp;#34;&amp;gt;&#10;&#10; &amp;lt;?&#10;&#10; $encodedSecret = &amp;#34;3d3d516343746d4d6d6c315669563362&amp;#34;;&#10;&#10; function encodeSecret($secret) {&#10; return bin2hex(strrev(base64_encode($secret)));&#10; }&#10;&#10; if(array_key_exists(&amp;#34;submit&amp;#34;, $_POST)) {&#10; if(encodeSecret($_POST[&amp;#39;secret&amp;#39;]) == $encodedSecret) {&#10; print &amp;#34;Access granted. The password for natas9 is &amp;lt;censored&amp;gt;&amp;#34;;&#10; } else {&#10; print &amp;#34;Wrong secret&amp;#34;;&#10; }&#10; }&#10; ?&amp;gt;&#10; &amp;lt;form method=post&amp;gt;&#10; Input secret: &amp;lt;input name=secret&amp;gt;&amp;lt;br&amp;gt;&#10; &amp;lt;input type=submit name=submit&amp;gt;&#10; &amp;lt;/form&amp;gt;&#10;&#10; &amp;lt;div id=&amp;#34;viewsource&amp;#34;&amp;gt;&amp;lt;a href=&amp;#34;index-source.html&amp;#34;&amp;gt;View sourcecode&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#10; &amp;lt;/div&amp;gt;&#10; &amp;lt;/body&amp;gt;&#10;&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;p&gt;Looking at the sourcecode, we see that there is an encoded secret stored in a variable &lt;code&gt;$encodedSecret&lt;/code&gt; using php. Usually it would be difficult to discern the cleartext secret, but if we look at the code we can actually see how the secret is encoded. So let&amp;rsquo;s look at the steps taken in the function &lt;code&gt;encodeSecret()&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Level 9</title><link>https://dev-initely.me/natas/level9/</link><pubDate>Thu, 27 Mar 2025 14:45:00 +0700</pubDate><guid>https://dev-initely.me/natas/level9/</guid><description>&lt;ul&gt;&#10;&lt;li&gt;State &amp;ldquo;DONE&amp;rdquo; from &lt;span class="timestamp-wrapper"&gt;&lt;span class="timestamp"&gt;[2025-03-27 Thu 14:45]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;a href="http://natas9.natas.labs.overthewire.org/" target="_blank" rel="noopener noreffer "&gt;http://natas9.natas.labs.overthewire.org/&lt;/a&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;Level 9 again presents a search box and a button to inspect the source code, see screenshot below.&lt;/p&gt;&#10;&lt;figure&gt;&lt;img src="clipboard-20250227T145045.png"&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;p&gt;Looking at the sourcecode, we find the following php code:&lt;/p&gt;&#10;&lt;div class="code-block open" style="counter-reset: code-block -1"&gt;&#10; &lt;div class="code-header language-web"&gt;&#10; &lt;span class="code-title"&gt;&lt;i class="arrow fas fa-angle-right" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;span class="ellipses"&gt;&lt;i class="fas fa-ellipsis-h" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;span class="copy" title="Copy to clipboard"&gt;&lt;i class="far fa-copy" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;/div&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-web" data-lang="web"&gt;&amp;lt;?&#10;$key = &amp;#34;&amp;#34;;&#10;&#10;if(array_key_exists(&amp;#34;needle&amp;#34;, $_REQUEST)) {&#10;$key = $_REQUEST[&amp;#34;needle&amp;#34;];&#10;}&#10;&#10;if($key != &amp;#34;&amp;#34;) {&#10;passthru(&amp;#34;grep -i $key dictionary.txt&amp;#34;);&#10;}&#10;?&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;p&gt;The code first takes the user input posted and stores it in a variable &lt;code&gt;$key&lt;/code&gt;. It then checks if key is non-empty and passes the variable to the &lt;code&gt;passthru()&lt;/code&gt; function. So let&amp;rsquo;s do some digging. A web search for the function gives us the following:&lt;/p&gt;</description></item><item><title>Natas Level 0</title><link>https://dev-initely.me/natas/level0/</link><pubDate>Thu, 27 Mar 2025 14:45:00 +0700</pubDate><guid>https://dev-initely.me/natas/level0/</guid><description>&lt;ul&gt;&#10;&lt;li&gt;State &amp;ldquo;DONE&amp;rdquo; from &lt;span class="timestamp-wrapper"&gt;&lt;span class="timestamp"&gt;[2025-03-27 Thu 14:45]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;First we go to the link that is given and log in using the credentials above. We then get a message saying &lt;code&gt;You can find the password for the next level on this page.&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;However, the password is not visible. Looking at the page source we find the following:&lt;/p&gt;&#10;&lt;div class="code-block open" style="counter-reset: code-block -1"&gt;&#10; &lt;div class="code-header language-html"&gt;&#10; &lt;span class="code-title"&gt;&lt;i class="arrow fas fa-angle-right" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;span class="ellipses"&gt;&lt;i class="fas fa-ellipsis-h" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;span class="copy" title="Copy to clipboard"&gt;&lt;i class="far fa-copy" aria-hidden="true"&gt;&lt;/i&gt;&lt;/span&gt;&#10; &lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;html&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;head&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;&amp;lt;!-- This stuff in the header has nothing to do with the level --&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;link&lt;/span&gt; &lt;span class="na"&gt;rel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;stylesheet&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;text/css&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://natas.labs.overthewire.org/css/level.css&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;link&lt;/span&gt; &lt;span class="na"&gt;rel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;stylesheet&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://natas.labs.overthewire.org/css/jquery-ui.css&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;link&lt;/span&gt; &lt;span class="na"&gt;rel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;stylesheet&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://natas.labs.overthewire.org/css/wechall.css&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://natas.labs.overthewire.org/js/jquery-1.9.1.js&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://natas.labs.overthewire.org/js/jquery-ui.js&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;http://natas.labs.overthewire.org/js/wechall-data.js&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://natas.labs.overthewire.org/js/wechall.js&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;wechallinfo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;level&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;natas0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;pass&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;natas0&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;};&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;head&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;body&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;natas0&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;content&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; You can find the password for the next level on this page.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;&amp;lt;!--The password for natas1 is 0nzCigAq7t2iALyvU9xcHlYN4MlkIwlq --&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;body&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;html&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;THere is our password!&lt;/p&gt;</description></item></channel></rss>