<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Herramientas &amp; Tutoriales on Hackpuntes</title><link>https://hackpuntes.com/categories/herramientas--tutoriales/</link><description>Recent content in Herramientas &amp; Tutoriales on Hackpuntes</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Tue, 02 Dec 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://hackpuntes.com/categories/herramientas--tutoriales/index.xml" rel="self" type="application/rss+xml"/><item><title>Discovering Tradecraft Garden</title><link>https://hackpuntes.com/posts/exploring-tradecraft-garden/</link><pubDate>Tue, 02 Dec 2025 00:00:00 +0000</pubDate><guid>https://hackpuntes.com/posts/exploring-tradecraft-garden/</guid><description>&lt;p&gt;&lt;a href="https://hackpuntes.com/images/exploring_tradecraft_garden/exploring_tradecraft_garden_banner.webp"&gt;&lt;img src="https://hackpuntes.com/images/exploring_tradecraft_garden/exploring_tradecraft_garden_banner.webp" alt="Discovering Tradecraft Garden" loading="eager" decoding="async" /&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Taking advantage of the recent &lt;strong&gt;Black Friday&lt;/strong&gt; deals, I decided to purchase the &lt;a href="https://www.zeropointsecurity.co.uk/course/red-team-ops-ii" target="_blank" rel="noopener noreferrer"&gt;CRTL (Certified Red Team Lead)&lt;/a&gt;
course from ZeroPointSecurity. While the material is dense and deeply technical (typical of &lt;a href="https://x.com/_RastaMouse" target="_blank" rel="noopener noreferrer"&gt;Rasta Mouse&lt;/a&gt;
), one of the first gems I stumbled upon isn&amp;rsquo;t hidden behind a paywall. It&amp;rsquo;s a public project that deserves much more attention from the community: &lt;a href="https://tradecraftgarden.org/" target="_blank" rel="noopener noreferrer"&gt;Tradecraft Garden&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;Essentially, this repository is a development environment or &amp;ldquo;playground&amp;rdquo; designed to drastically simplify the creation of &lt;strong&gt;Shellcode&lt;/strong&gt; and &lt;strong&gt;Position Independent Code (PIC)&lt;/strong&gt; using C and Makefiles.&lt;/p&gt;</description></item><item><title>TryHackMe - Machine - Pickle Rick v2</title><link>https://hackpuntes.com/posts/tryhackme/machines/pickle-rick-writeup/</link><pubDate>Mon, 17 Nov 2025 00:00:00 +0000</pubDate><guid>https://hackpuntes.com/posts/tryhackme/machines/pickle-rick-writeup/</guid><description>&lt;p&gt;&lt;a href="https://hackpuntes.com/images/thm-machine-pickle-rick-v2/thm-machine-pickle-rick-v2_banner.webp"&gt;&lt;img src="https://hackpuntes.com/images/thm-machine-pickle-rick-v2/thm-machine-pickle-rick-v2_banner.webp" alt="TryHackMe - Machine - Pickle Rick v2" loading="eager" decoding="async" /&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Hey hackers! 👋&lt;/p&gt;
&lt;p&gt;Today we’re diving into the &lt;a href="https://tryhackme.com/room/picklerick" target="_blank" rel="noopener noreferrer"&gt;Pickle Rick machine&lt;/a&gt;
on TryHackMe. It’s a classic &lt;strong&gt;🟩 Easy&lt;/strong&gt; challenge, perfect for practicing web enumeration and basic privilege escalation.&lt;/p&gt;
&lt;h2 id="-before-starting"&gt;🚀 Before Starting&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Add&lt;/strong&gt; the machine to the &lt;code&gt;/etc/hosts&lt;/code&gt; file, &lt;strong&gt;check connectivity&lt;/strong&gt; with &lt;code&gt;ping&lt;/code&gt;, and &lt;strong&gt;create the working folders&lt;/strong&gt;&lt;/p&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;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;10.10.34.26\tpicklerick.thm&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee -a /etc/hosts
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ping -c &lt;span class="m"&gt;1&lt;/span&gt; picklerick.thm
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p ~/thm/picklerick/&lt;span class="o"&gt;{&lt;/span&gt;exploits,fuzz,http,nmap&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/thm/picklerick/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="-reconnaissance"&gt;🔎 Reconnaissance&lt;/h2&gt;
&lt;h3 id="scan-with-nmap"&gt;Scan with nmap&lt;/h3&gt;
&lt;p&gt;Check &lt;strong&gt;all ports&lt;/strong&gt; that are &lt;strong&gt;open&lt;/strong&gt;, detect the service and its version with &lt;code&gt;nmap&lt;/code&gt; and generate &lt;code&gt;all.html&lt;/code&gt; to see information.&lt;/p&gt;</description></item><item><title>Snyk Fetch The Flag - TimeOff</title><link>https://hackpuntes.com/posts/snyk-fetch-the-flag-timeoff/</link><pubDate>Sun, 09 Mar 2025 00:00:00 +0000</pubDate><guid>https://hackpuntes.com/posts/snyk-fetch-the-flag-timeoff/</guid><description>&lt;p&gt;&lt;a href="https://hackpuntes.com/images/snyk_fetch_the_flag_timeoff/snyk_fetch_the_flag_timeoff_banner.webp"&gt;&lt;img src="https://hackpuntes.com/images/snyk_fetch_the_flag_timeoff/snyk_fetch_the_flag_timeoff_banner.webp" alt="Snyk Fetch The Flag - TimeOff" loading="eager" decoding="async" /&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;In this CTF challenge, we are tasked with performing a &lt;strong&gt;pentest&lt;/strong&gt; on a web application following the &lt;strong&gt;Model-View-Controller (MVC)&lt;/strong&gt; pattern, developed in &lt;code&gt;Ruby on Rails&lt;/code&gt;. The application allows employees to &lt;strong&gt;request time off&lt;/strong&gt;, and we are provided with the source code and two credentials (&lt;code&gt;admin&lt;/code&gt; and &lt;code&gt;user&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;While reviewing the application, we noticed that the time-off request form &lt;strong&gt;allows file uploads&lt;/strong&gt;, which is always an interesting point to investigate during a security audit.&lt;/p&gt;</description></item><item><title>Snyk Fetch The Flag - Coding Mountains</title><link>https://hackpuntes.com/posts/snyk-fetch-the-flag-coding-mountains/</link><pubDate>Sat, 08 Mar 2025 00:00:00 +0000</pubDate><guid>https://hackpuntes.com/posts/snyk-fetch-the-flag-coding-mountains/</guid><description>&lt;p&gt;&lt;a href="https://hackpuntes.com/images/snyk_fetch_the_flag_coding_mountains/snyk_fetch_the_flag_coding_mountains_banner.webp"&gt;&lt;img src="https://hackpuntes.com/images/snyk_fetch_the_flag_coding_mountains/snyk_fetch_the_flag_coding_mountains_banner.webp" alt="Snyk Fetch The Flag - Coding Mountains" loading="eager" decoding="async" /&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Scripting challenges&lt;/strong&gt; are my favorite in CTFs, and this one has undoubtedly been my favorite from Snyk Fetch The Flag 2025. The challenge consists of &lt;strong&gt;answering 50 quick questions about the most famous mountains on Earth&lt;/strong&gt;. We need to answer with their height (in feet) and the year they were first climbed using the following format: &lt;code&gt;height,year&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;A sample of the game start:&lt;/p&gt;</description></item><item><title>Snyk Fetch The Flag - ClickityClack</title><link>https://hackpuntes.com/posts/snyk-fetch-the-flag-clickityclack/</link><pubDate>Fri, 07 Mar 2025 00:00:00 +0000</pubDate><guid>https://hackpuntes.com/posts/snyk-fetch-the-flag-clickityclack/</guid><description>&lt;p&gt;&lt;a href="https://hackpuntes.com/images/snyk_fetch_the_flag_clickityclack/snyk_fetch_the_flag_clickityclack_banner.webp"&gt;&lt;img src="https://hackpuntes.com/images/snyk_fetch_the_flag_clickityclack/snyk_fetch_the_flag_clickityclack_banner.webp" alt="Snyk Fetch The Flag - ClickityClack" loading="eager" decoding="async" /&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;In this challenge, we started with a &lt;code&gt;pcapng&lt;/code&gt; file that contains the hidden flag inside. Initially, I tried to analyze it using &lt;strong&gt;Wireshark&lt;/strong&gt;, but couldn&amp;rsquo;t find anything relevant. That&amp;rsquo;s when a simple Google search gave me the key clue:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pcapng usb ctf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="https://hackpuntes.com/images/snyk_fetch_the_flag_clickityclack/snyk_fetch_the_flag_clickityclack_001.webp"&gt;&lt;img src="https://hackpuntes.com/images/snyk_fetch_the_flag_clickityclack/snyk_fetch_the_flag_clickityclack_001.webp" alt="Snyk Fetch The Flag - ClickityClack" loading="lazy" decoding="async" /&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;This search led me to discover a tool called &lt;a href="https://raw.githubusercontent.com/5h4rrk/CTF-Usb_Keyboard_Parser/refs/heads/main/Usb_Keyboard_Parser.py" target="_blank" rel="noopener noreferrer"&gt;Usb_Keyboard_Parser.py&lt;/a&gt;
that parses USB traffic packets, such as keypresses.&lt;/p&gt;</description></item><item><title>Snyk Fetch The Flag - Science 100</title><link>https://hackpuntes.com/posts/snyk-fetch-the-flag-science-100/</link><pubDate>Thu, 06 Mar 2025 00:00:00 +0000</pubDate><guid>https://hackpuntes.com/posts/snyk-fetch-the-flag-science-100/</guid><description>&lt;p&gt;&lt;a href="https://hackpuntes.com/images/snyk_fetch_the_flag_science_100/snyk_fetch_the_flag_science_100_banner.webp"&gt;&lt;img src="https://hackpuntes.com/images/snyk_fetch_the_flag_science_100/snyk_fetch_the_flag_science_100_banner.webp" alt="Snyk Fetch The Flag - Science 100" loading="eager" decoding="async" /&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;In this CTF challenge, we encounter a &lt;strong&gt;Robco Industries terminal&lt;/strong&gt;, similar to the ones found in the Fallout video game series. Our mission is to decipher the correct password using the &lt;code&gt;Likeness&lt;/code&gt; mechanic, which tells us how many letters match in the exact position with the correct password.&lt;/p&gt;
&lt;h2 id="-connecting-to-the-challenge"&gt;🖥️ Connecting to the Challenge&lt;/h2&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;$ nc challenge.ctf.games &lt;span class="m"&gt;32377&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Upon connecting, the system welcomes us and presents a list of &lt;strong&gt;potential passwords&lt;/strong&gt; hidden among random symbols.&lt;/p&gt;</description></item><item><title>Snyk Fetch The Flag - CTF 101</title><link>https://hackpuntes.com/posts/snyk-fetch-the-flag-ctf-101/</link><pubDate>Wed, 05 Mar 2025 00:00:00 +0000</pubDate><guid>https://hackpuntes.com/posts/snyk-fetch-the-flag-ctf-101/</guid><description>&lt;p&gt;&lt;a href="https://hackpuntes.com/images/snyk_fetch_the_flag_ctf_101/snyk_fetch_the_flag_ctf_101_banner.webp"&gt;&lt;img src="https://hackpuntes.com/images/snyk_fetch_the_flag_ctf_101/snyk_fetch_the_flag_ctf_101_banner.webp" alt="Snyk Fetch The Flag - CTF 101" loading="eager" decoding="async" /&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;This challenge is designed as an &lt;strong&gt;introduction to CTFs&lt;/strong&gt; (Capture The Flag). It is a simple challenge aimed at getting familiar with exploiting vulnerabilities in web applications.&lt;/p&gt;
&lt;p&gt;By analyzing the provided source code, we can see that it is a web application developed with &lt;strong&gt;Flask (Python)&lt;/strong&gt;. Here is the code:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;flask&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Flask&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;render_template&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;redirect&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;flash&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;subprocess&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Flask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vm"&gt;__name__&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;secret_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;supersecretkey&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@app.route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;/&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;methods&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;GET&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;POST&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;index&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;method&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;POST&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;form&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;flash&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Error: Name cannot be empty.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;error&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;redirect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;/&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# I sure hope no one tries to run any commands by injecting here...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;subprocess&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;check_output&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;echo &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;shell&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;stderr&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;subprocess&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;STDOUT&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;flash&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Hello, &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;! Good luck!&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;success&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# ...alright, the challenges won&amp;#39;t be this obvious on game day, but I hope it gives you a good idea of how the game is played!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="n"&gt;subprocess&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CalledProcessError&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;flash&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Error: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;error&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;redirect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;/&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;render_template&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;index.html&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vm"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;0.0.0.0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;5000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="-where-is-the-vulnerability"&gt;🔍 Where is the vulnerability?&lt;/h2&gt;
&lt;p&gt;The main issue lies in the following piece of code:&lt;/p&gt;</description></item><item><title>Snyk Fetch The Flag - Screaming Crying Throwing up</title><link>https://hackpuntes.com/posts/snyk-fetch-the-flag-screaming-crying-throwing-up/</link><pubDate>Tue, 04 Mar 2025 00:00:00 +0000</pubDate><guid>https://hackpuntes.com/posts/snyk-fetch-the-flag-screaming-crying-throwing-up/</guid><description>&lt;p&gt;&lt;a href="https://hackpuntes.com/images/snyk_fetch_the_flag_screaming_crying_throwing_up/snyk_fetch_the_flag_screaming_crying_throwing_up_banner.webp"&gt;&lt;img src="https://hackpuntes.com/images/snyk_fetch_the_flag_screaming_crying_throwing_up/snyk_fetch_the_flag_screaming_crying_throwing_up_banner.webp" alt="Snyk Fetch The Flag - Screaming Crying Throwing up" loading="eager" decoding="async" /&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;This challenge consists of decrypting a binary file encrypted with &lt;a href="https://en.wikipedia.org/wiki/Scream_%28cipher%29" target="_blank" rel="noopener noreferrer"&gt;scream&lt;/a&gt;
. To do this, we can use the &lt;a href="https://scream-cipher.netlify.app/" target="_blank" rel="noopener noreferrer"&gt;Scream Cipher Translator&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;If we open the &lt;code&gt;screaming.bin&lt;/code&gt; file in &lt;strong&gt;VSCode&lt;/strong&gt;, we will see the following content:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;a̮ăaa̋{áa̲aȧa̮ȧaa̮áa̲a̧ȧȧa̮ȧaa̲a̧aa̮ȧa̲aáa̮a̲aa̲a̮aaa̧}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;However, if we use &lt;code&gt;cat&lt;/code&gt; in the terminal (CMD, PowerShell, or Bash), we get a different result:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ cat screaming.bin
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aăaa{áaaȧaȧaaáaaȧȧaȧaaaaaȧaaáaaaaaaaa}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;⚠️ Attention! ⚠️&lt;/p&gt;</description></item><item><title>Snyk Fetch The Flag - Unfurl</title><link>https://hackpuntes.com/posts/snyk-fetch-the-flag-unfurl/</link><pubDate>Mon, 03 Mar 2025 00:00:00 +0000</pubDate><guid>https://hackpuntes.com/posts/snyk-fetch-the-flag-unfurl/</guid><description>&lt;p&gt;&lt;a href="https://hackpuntes.com/images/snyk_fetch_the_flag_unfurl/snyk_fetch_the_flag_unfurl_banner.webp"&gt;&lt;img src="https://hackpuntes.com/images/snyk_fetch_the_flag_unfurl/snyk_fetch_the_flag_unfurl_banner.webp" alt="Snyk Fetch The Flag - Unfurl" loading="eager" decoding="async" /&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;In this challenge, we face a web application that &lt;strong&gt;fetches metadata&lt;/strong&gt; from any URL entered into the form.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://hackpuntes.com/images/snyk_fetch_the_flag_unfurl/snyk_fetch_the_flag_unfurl_001.webp"&gt;&lt;img src="https://hackpuntes.com/images/snyk_fetch_the_flag_unfurl/snyk_fetch_the_flag_unfurl_001.webp" alt="Snyk Fetch The Flag - Unfurl" loading="lazy" decoding="async" /&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;A quick analysis of the source code reveals that the application is developed in &lt;strong&gt;NodeJS&lt;/strong&gt;, and the use of the &lt;code&gt;child_process&lt;/code&gt; module suggests the possibility of &lt;strong&gt;remote command execution (RCE)&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;📄 &lt;code&gt;adminRoutes.js&lt;/code&gt; file&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;exec&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;child_process&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;router&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/execute&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// This isn&amp;#39;t terribly secure, but we&amp;#39;re only going to bind this app to the localhost so you&amp;#39;d need to be on the actual host to run any commands.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;&lt;/span&gt; &lt;span class="c1"&gt;// So I think we&amp;#39;re good!
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;&lt;/span&gt; &lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;clientIp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ip&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// Definitely making sure to lock this down to the localhost
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;clientIp&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;127.0.0.1&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;clientIp&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;::1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;warn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sb"&gt;`[WARN] Unauthorized access attempt from &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;clientIp&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;403&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Forbidden: Access is restricted to localhost.&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;400&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;No command provided!&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;exec&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;stdout&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;stderr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sb"&gt;`[ERROR] Command execution failed: &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sb"&gt;`Error: &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sb"&gt;`[INFO] Command executed: &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sb"&gt;`
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sb"&gt; &amp;lt;h1&amp;gt;Command Output&amp;lt;/h1&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sb"&gt; &amp;lt;pre&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;stdout&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nx"&gt;stderr&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sb"&gt;&amp;lt;/pre&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sb"&gt; &amp;lt;a href=&amp;#34;/admin&amp;#34;&amp;gt;Back to Admin Panel&amp;lt;/a&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sb"&gt; `&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The code indicates that the application allows executing commands on the &lt;code&gt;/execute&lt;/code&gt; endpoint via the &lt;code&gt;cmd&lt;/code&gt; parameter, but only &lt;strong&gt;locally&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Snyk Fetch The Flag - Zero Ex Six One</title><link>https://hackpuntes.com/posts/snyk-fetch-the-flag-zero-ex-six-one/</link><pubDate>Sun, 02 Mar 2025 00:00:00 +0000</pubDate><guid>https://hackpuntes.com/posts/snyk-fetch-the-flag-zero-ex-six-one/</guid><description>&lt;p&gt;&lt;a href="https://hackpuntes.com/images/snyk_fetch_the_flag_zero_ex_six_one/snyk_fetch_the_flag_zero_ex_six_one_banner.webp"&gt;&lt;img src="https://hackpuntes.com/images/snyk_fetch_the_flag_zero_ex_six_one/snyk_fetch_the_flag_zero_ex_six_one_banner.webp" alt="Snyk Fetch The Flag - Zero Ex Six One" loading="eager" decoding="async" /&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;In this challenge, we obtain a file named &lt;code&gt;flag.txt.encry&lt;/code&gt;, which contains a hexadecimal string.&lt;/p&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;$ cat flag.txt.encry
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;0x070x0d0x000x060x1a0x020x540x510x050x590x530x020x510x000x530x540x070x520x040x570x550x550x050x510x560x510x530x030x550x500x050x030x050x510x590x540x000x1c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The 💡 hint in the challenge description suggests that an &lt;strong&gt;XOR encryption&lt;/strong&gt; was used, and the challenge title, &lt;strong&gt;Zero Ex Six One&lt;/strong&gt;, might indicate that the encryption key is &lt;code&gt;0x61&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;I&amp;#39;m XORta out of ideas for how to get the flag. Does this look like anything to you?
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="solution-1---using-the-encryption-key"&gt;Solution 1 - Using the Encryption Key&lt;/h2&gt;
&lt;p&gt;In this first solution, &lt;strong&gt;we convert the hexadecimal string into bytes&lt;/strong&gt; and apply an &lt;strong&gt;XOR decryption&lt;/strong&gt; using the key 🔑 &lt;code&gt;0x61&lt;/code&gt;.&lt;/p&gt;</description></item></channel></rss>