<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

 <title>sshell > blog</title>
 <link href="/atom.xml" rel="self"/>
 <link href="https://sshell.github.io/"/>
 <updated>2025-10-09T02:46:20+00:00</updated>
 <id>https://sshell.github.io</id>
 <author>
   <name>sshell</name>
   <email></email>
 </author>

 
 <entry>
   <title>UIUCTF 2020 Writeups</title>
   <link href="https://sshell.github.io/ctf/2020/07/20/uiuctf-2020-writeups/"/>
   <updated>2020-07-20T00:00:00+00:00</updated>
   <id>https://sshell.github.io/ctf/2020/07/20/uiuctf-2020-writeups</id>
   <content type="html">&lt;h2 id=&quot;intro&quot; style=&quot;text-align: center&quot;&gt;Introduction&lt;/h2&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;Challenge Name&lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;Category&lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;Solves&lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;Points&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;&lt;a href=&quot;#login_page&quot;&gt;login_page&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;Web&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;20&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;200&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;&lt;a href=&quot;#starter-osint&quot;&gt;Starter OSINT&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;OSINT&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;95&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;20&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;&lt;a href=&quot;#isabelles-bad-opsec-1&quot;&gt;Isabelle’s Bad Opsec 1&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;OSINT&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;87&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;40&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;&lt;a href=&quot;#isabelles-bad-opsec-2&quot;&gt;Isabelle’s Bad Opsec 2&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;OSINT&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;81&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;40&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;&lt;a href=&quot;#isabelles-bad-opsec-3&quot;&gt;Isabelle’s Bad Opsec 3&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;OSINT&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;28&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;80&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;&lt;a href=&quot;#isabelles-bad-opsec-4&quot;&gt;Isabelle’s Bad Opsec 4&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;OSINT&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;21&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;100&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;&lt;a href=&quot;#isabelles-bad-opsec-5&quot;&gt;Isabelle’s Bad Opsec 5&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;OSINT&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;32&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;100&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Date : Thu, 16 July 2020, 23:00 PDT — Sat, 18 July 2020, 23:00 PDT&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Teams with Points : 387 &lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Notes : First blood on Starter OSINT, Isabelle&apos;s Bad Opsec 1 &amp;amp; 2&lt;/code&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;login_page&quot; style=&quot;text-align: center&quot;&gt;login_page&lt;/h2&gt;
&lt;h4 style=&quot;text-align: center&quot; id=&quot;category-web--solves-20--points-200&quot;&gt;Category: Web | Solves: 20 | Points: 200&lt;/h4&gt;

&lt;hr /&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/mCYRHDL.png&quot; alt=&quot;login_page challenge description&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The site is rather simple, with only a small login box and a user lookup feature.  Since we’re told the site is running SQLite, it’s a safe we’re looking for something revolving around an injection. We try searching for just the SQLite wildcard “%” (which matches any string of 0 or more characters) and we’re presented with a nice list of all the users in the database.&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/p5ULjCj.png&quot; alt=&quot;user list found using sqlite wildcard&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;From here, we try to log in as Alice and are told we have the wrong password, but also given a password hint.&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/24imHr2.png&quot; alt=&quot;login hint for alice&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;After playing around with injections for a little while, we find a nested SELECT query which proves to be extremely useful. By querying the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sqlite_master&lt;/code&gt; table we can ask for data from any column in the database, but we can’t actually SEE it. When we combine the nested SELECT query with a conditional AND statement, we can start to piece together the contents of those columns.&lt;/p&gt;

&lt;p&gt;Through trial and error, we find that there are three basic ways in which the server can respond to our queries: with data, with no data, or with an error. Each of these happens in a different situation and gives us more insight into the structure of the database.&lt;/p&gt;

&lt;p&gt;First, since we already know USERNAME exists, we use this as a baseline for a known-good query. We see that we get user data back when a specific column exists.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%&quot; AND username in (SELECT username FROM sqlite_master where username like &quot;%&quot;) --&lt;/code&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/OAYJGKx.png&quot; alt=&quot;results from good sql subquery&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Next, we try to query columns for users we know don’t exist.  This simply returns no information at all, without giving us any errors.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%&quot; AND username in (SELECT username FROM sqlite_master where username like &quot;FAKE&quot;) --&lt;/code&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/22ycWWR.png&quot; alt=&quot;no results from sql subquery&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Lastly, we try a non-existent column to establish a baseline response for faulty queries.  When this is the case, we get the message &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ERROR: Something went wrong!&lt;/code&gt; We also get this error when we forget to comment out otherwise good, working queries by ending the query with the SQL single-line comment symbol &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%&quot; AND username in (SELECT username FROM sqlite_master where FAKE like &quot;%&quot;) --&lt;/code&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/vq2OnGe.png&quot; alt=&quot;error message on bad sql query&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Using this knowledge we can guess at what the password column must be called, and after a couple tries we find that “password_hash” doesn’t throw us any errors.  Now that we know what we’re up against, we can switch up our query and use our old wildcard friend to brute-force the hash 1 character at a time by using a query like:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%&quot; AND username in (SELECT username FROM sqlite_master where password_hash like &quot;%&quot;) --&lt;/code&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/mvZXAJu.png&quot; alt=&quot;results from good sql subquery&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Below is Python script that will be responsible for doing all of the heavy lifting. If what we know of the hash so far is correct for that user, the user’s information is returned (e.g if Bob’s hash starts with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;41%&lt;/code&gt;.) If any character of the hash so far is wrong (e.g if we ask if Bob’s hash starts with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;4F%&lt;/code&gt;) the application won’t return us any info at all. This allows us to check for the existence of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bio&lt;/code&gt; string for each user to make sure we’re always on the right track.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;requests&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&apos;1234567890abcdef&apos;&lt;/span&gt;                    
&lt;span class=&quot;n&quot;&gt;names&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;alice&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;bob&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;carl&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;dania&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;noob&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; 

&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;hashfinder&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;                      
    &lt;span class=&quot;n&quot;&gt;url&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&apos;https://login.chal.uiuc.tf/search&apos;&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;query&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;request&apos;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;&quot; AND username in (SELECT username FROM sqlite_master where password_hash like &quot;&apos;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;%&quot;) -- -&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;req&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;requests&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;query&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;      
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&apos;is &apos;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;text&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;                
        &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;                             

&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;names&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;                            
    &lt;span class=&quot;n&quot;&gt;pwhash&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;&apos;&lt;/span&gt;                                 
    &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pwhash&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;                   
        &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;                       
            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;hashfinder&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pwhash&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;    
                &lt;span class=&quot;n&quot;&gt;pwhash&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;                     
                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pwhash&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;         
                    &lt;span class=&quot;k&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;:&apos;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;pwhash&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;  &lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;When run, this bad boy gives us the output of:&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;name&lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;hash&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;alice&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;530bd2d24bff2d77276c4117dc1fc719&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;bob&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;4106716ae604fba94f1c05318f87e063&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;carl&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;661ded81b6b99758643f19517a468331&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;dania&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;58970d579d25f7288599fcd709b3ded3&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;noob&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;8553127fedf5daacc26f3b677b58a856&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;Now that we have extracted all the hashes, we can get to work trying to crack them using the hints we are given.  Luckily, there is only one hash without a corresponding hint (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;8553127fedf5daacc26f3b677b58a856&lt;/code&gt;) and with a simple Google search we find out that the password is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SoccerMom2007&lt;/code&gt;. We use this password to sign in and are given the first part of our flag : &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;uiuctf{Dump&lt;/code&gt;
Side note: the password/hash combo is on Google because it is in the very popular &lt;a href=&quot;https://github.com/praetorian-code/Hob0Rules/blob/master/wordlists/rockyou.txt.gz&quot;&gt;RockYou wordlist&lt;/a&gt; that is very commonly used in CTF-like challenges and is even included in Kali Linux (can be found in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/usr/share/wordlists/rockyou.txt.gz&lt;/code&gt;)&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/Z9YPC5d.png&quot; alt=&quot;looking up the first hash on google&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The second and third hashes are cracked very quickly with a very basic Hashcat command. It’s worth noting that Hashcat has a built in mode for double MD5 (-m 2600), so Bob’s password isn’t really any harder to crack than Alice’s as far as the commands go (although double MD5 is obviously slightly slower to crack.) If you want to learn more about the basics of cracking hashes with Hashcat, you can do so &lt;a href=&quot;https://laconicwolf.com/2018/09/29/hashcat-tutorial-the-basics-of-cracking-passwords-with-hashcat/&quot;&gt;here.&lt;/a&gt; If you don’t have a beefy GPU available, there’s an &lt;a href=&quot;https://deadpixelsec.com/Hashcat-on-Google-Colab&quot;&gt;interesting blog post&lt;/a&gt; on how you can run Hashcat for free on Google Colab that you might find useful!&lt;/p&gt;

&lt;p&gt;Hash number four requires us to build our own wordlist in the format of &lt;a href=&quot;https://gist.github.com/sshell/308f3518221d98c16a7b69eb9b209d85#file-gods-txt&quot;&gt;Greek God name&lt;/a&gt; + &lt;a href=&quot;https://gist.github.com/sshell/308f3518221d98c16a7b69eb9b209d85#file-states-txt&quot;&gt;U.S. State name&lt;/a&gt;. This can be accomplished by finding these two separate lists on Google, and mixing with a &lt;a href=&quot;https://gist.github.com/sshell/308f3518221d98c16a7b69eb9b209d85#file-combine-py&quot;&gt;quick Python script&lt;/a&gt;. I’m not going to include it here since it’s mundane, but you can click the links if you want to see the lists and code behind this task. We found that the password ended up being &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DionysusDelaware&lt;/code&gt; and claimed the 4th piece of the flag.&lt;/p&gt;

&lt;p&gt;The fifth and final hash is the most interesting one of the bunch.  The password hint is in Arabic and translates to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;My favorite animal (6 characters only)&lt;/code&gt; (this was later updated to specify &lt;em&gt;Arabic&lt;/em&gt; characters.) We ran it against a few animal wordlists to make sure it wasn’t going to be THAT easy before deciding to crack the hash by guessing Arabic characters. This is tricky, but doable running Hashcat with the following arguments:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hashcat -m 0 -a 3 --hex-charset -1 d8d9dadb -2 808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebf -o output hashes &quot;?1?2?1?2?1?2?1?2?1?2?1?2&quot;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;On this &lt;a href=&quot;https://utf8-chartable.de/unicode-utf8-table.pl?start=1536&quot;&gt;UTF-8 encoding table,&lt;/a&gt; Arabic letters span 256 characters from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;D880&lt;/code&gt; to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DBBF&lt;/code&gt;. We split up these two bytes and create a mask for each, meaning that each single Arabic letter is represented in the mask by a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;?1?2&lt;/code&gt; pair. Once we get the rule written, the hash is cracked rather quickly. With the final hash cracked, all we have to do is put together the five pieces of the flag and claim out 200 points!&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/49zr7TC.png&quot; alt=&quot;arabic character on the unicode/utf-8 character table&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Here’s what all the data looks like when we’re all done:&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;name&lt;/th&gt;
      &lt;th&gt;hint&lt;/th&gt;
      &lt;th&gt;hash&lt;/th&gt;
      &lt;th&gt;password&lt;/th&gt;
      &lt;th&gt;flag&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;noob&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;(none)&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;8553127fedf5daacc26f3b677b58a856&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SoccerMom2007&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;uiuctf{Dump&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;alice&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;My phone number (format: 000-000-0000)&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;530bd2d24bff2d77276c4117dc1fc719&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;704-186-9744&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_4nd_un&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bob&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;My favorite 12 digit number (md5 hashed for extra security) [starts with a 10]&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;4106716ae604fba94f1c05318f87e063&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;5809be03c7cc31cdb12237d0bd718898&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;h45h_63&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;carl&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;My favorite Greek God + My least favorite US state (no spaces)&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;661ded81b6b99758643f19517a468331&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DionysusDelaware&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;7_d4t_&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dania&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;الحيوان المفضل لدي (6 أحرف عربية فقط)&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;58970d579d25f7288599fcd709b3ded3&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;طاووسة&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;c45h}&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;hr /&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;#intro&quot;&gt;— Back to Top —&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;starter-osint&quot; style=&quot;text-align: center&quot;&gt;Starter OSINT&lt;/h2&gt;
&lt;h4 style=&quot;text-align: center&quot; id=&quot;category-osint--solves-95--points-20&quot;&gt;Category: OSINT | Solves: 95 | Points: 20&lt;/h4&gt;

&lt;hr /&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Our friend isabelle has recently gotten into cybersecurity, she made a point of it by rampantly tweeting about it. Maybe you can find some useful information ;).

While you may not need it, IsabelleBot has information that applies to this challenge.

Finishing the warmup OSINT chal will really help with all the other osint chals

The first two characters of the internal of this flag are &apos;g0&apos;, it may not be plaintext

Made By: Thomas (I like OSINT)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;We’re looking for an account that has been active recently and is  named/has something to do with the character Isabelle. A quick Twitter  search for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&quot;Isabelle&quot;+&quot;Security&quot; &lt;/code&gt;or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&quot;Isabelle&quot;+&quot;Hack&quot;&lt;/code&gt; sorted by “Latest” will lead you to the user “epichackerisabelle” / &lt;a href=&quot;https://twitter.com/hackerisabelle&quot;&gt;@hackerisabelle&lt;/a&gt; after a small bit of scrolling. We make sure to click the “Tweets &amp;amp; Replies” button up top so that we see ALL of her tweets, and after a  bit of scrolling, we find the flag.&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/RuDRymr.png&quot; alt=&quot;isabelle&apos;s past tweet&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;#intro&quot;&gt;— Back to Top —&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;isabelles-bad-opsec-1&quot; style=&quot;text-align: center&quot;&gt;Isabelle’s Bad Opsec 1&lt;/h2&gt;
&lt;h4 style=&quot;text-align: center&quot; id=&quot;category-osint--solves-87--points-40&quot;&gt;Category: OSINT | Solves: 87 | Points: 40&lt;/h4&gt;

&lt;hr /&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Isabelle has some really bad opsec! She left some code up on a repo that definitely shouldnt be public. Find the naughty code and claim your prize.

Finishing the warmup OSINT chal will really help with this chal

The first two characters of the internal of this flag are &apos;c0&apos;, it may not be plaintext Additionally, the flag format may not be standard capitalization. Please be aware

Made By: Thomas
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Finding a Github account is even easier because all we need to do is  search for “Isabelle,” click on Users button, and then sort by “Most  Recently Joined.” We see that she’s one of the accounts created most  recently. One of the most popular places to hide secrets in Github is in past commits, so we go looking there and we an interesting base64  encoded value in &lt;a href=&quot;https://github.com/IsabelleOnSecurity/mimidogz/commit/89f4f78390a1a31d08643ba16cba50dc9fcd5ecb&quot;&gt;this commit.&lt;/a&gt; We decode the base64 and see that the flag is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;uiuctf{c0mM1t_to_your_dr3@m5!}&lt;/code&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/D04KJqm.png&quot; alt=&quot;github user seach sorted by most recently created&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;#intro&quot;&gt;— Back to Top —&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;isabelles-bad-opsec-2&quot; style=&quot;text-align: center&quot;&gt;Isabelle’s Bad Opsec 2&lt;/h2&gt;
&lt;h4 style=&quot;text-align: center&quot; id=&quot;category-osint--solves-81--points-40&quot;&gt;Category: OSINT | Solves: 81 | Points: 40&lt;/h4&gt;

&lt;hr /&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Wow holy heck Isabelle&apos;s OPSEC is really bad. She was trying to make a custom youtube api but it didnt work. Can you find her channel??

Finishing Isabelle&apos;s Opsec 1 will may you with this challenge

The first two characters of the internal of this flag are &apos;l3&apos;, it may not be plaintext Additionally, the flag format may not be standard capitalization. Please be aware

Made By: Thomas
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The challenge text suggests that the next secret is in the other repository, so we go over there to sort through past commits once again.  We run across the channel id in &lt;a href=&quot;https://github.com/IsabelleOnSecurity/api-stuff/commit/115438b1b04324c931329e5a5296c54ed310db17&quot;&gt;this commit&lt;/a&gt; and now we get to switch focus to hunting around on YouTube. The flag ends up being in the URL of the “My website” link on the  EliteHackerIsabelle1337 YouTube page.&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/NZXlzdG.png&quot; alt=&quot;past github commit that shows isabelle&apos;s channel url&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;#intro&quot;&gt;— Back to Top —&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;isabelles-bad-opsec-3&quot; style=&quot;text-align: center&quot;&gt;Isabelle’s Bad Opsec 3&lt;/h2&gt;
&lt;h4 style=&quot;text-align: center&quot; id=&quot;category-osint--solves-28--points-80&quot;&gt;Category: OSINT | Solves: 28 | Points: 80&lt;/h4&gt;

&lt;hr /&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;
Isabelle has a youtube video somewhere, something is hidden in it.

Solving Previous OSINT Chals will help you with this challenge

The first two characters of the internal of this flag are &apos;w3&apos;, it may not be plaintext. Additionally, the flag format may not be standard capitalization. Please be aware

Made By: Thomas
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This challenge leaves you with very few clues other than it’s “it’s  in the video,” which could mean just about anything. After doing some  analysis on the audio and video, and nothing immediately pops out. We  realize that for the low point total, we’re probably overthinking it.  The challenge is only really solved by exhaustively clicking on all the  buttons. We find the flag by clicking the “Add Translation” button.&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/FDTPKNY.png&quot; alt=&quot;the page for adding translations on youtube&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;#intro&quot;&gt;— Back to Top —&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;isabelles-bad-opsec-4&quot; style=&quot;text-align: center&quot;&gt;Isabelle’s Bad Opsec 4&lt;/h2&gt;
&lt;h4 style=&quot;text-align: center&quot; id=&quot;category-osint--solves-21--points-100&quot;&gt;Category: OSINT | Solves: 21 | Points: 100&lt;/h4&gt;

&lt;hr /&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Isabelle hid one more secret somewhere on her youtube channel! Can you find it!?

Finishing previous OSINT Chals will assist you with this challenge

The first two characters of the internal of this flag are &apos;th&apos;, it may not be plaintext

Additionally, the flag format may not be standard capitalization. Please be aware

Made By: Thomas [Authors Note] I love this chal because I used it IRL to find out who someone cyberbullying a friend was. It&apos;s real OSINT -Thomas
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This is more of the same, except now the flag is just hidden  somewhere “in the channel.” Instead of sifting through browser traffic  to find all the assets unique to the channel, we use the top Google  result for &lt;a href=&quot;https://mattw.io/youtube-metadata/&quot;&gt;“YouTube OSINT Tool”&lt;/a&gt; and start sifting through the results we get back.  The flag turns out to be hidden in the profile’s banner image, which is cropped differently for different platforms (desktop, mobile, smart TV, etc.)&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/bv2sjWp.png&quot; alt=&quot;list of URLs to alternate banners&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/lIUs3ES.png&quot; alt=&quot;alternate banner that shows the flag&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;#intro&quot;&gt;— Back to Top —&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;isabelles-bad-opsec-5&quot; style=&quot;text-align: center&quot;&gt;Isabelle’s Bad Opsec 5&lt;/h2&gt;
&lt;h4 style=&quot;text-align: center&quot; id=&quot;category-osint--solves-32--points-100&quot;&gt;Category: OSINT | Solves: 32 | Points: 100&lt;/h4&gt;

&lt;hr /&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Isabelle had one more secret on her youtube account, but it was embarrassing.

Finishing previous OSINT Chals will assist you with this challenge

The first two characters of the internal of this flag are &apos;hi&apos;, it may not be plaintext

The flag capitalization may be different, please be aware
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;A challenge that mentions something that used to be on a website that isn’t anymore… sounds like a job for the Wayback Machine. Sure enough, we try all of the pages and find that the URL for “My website” used to be a different flag.&lt;/p&gt;

&lt;hr /&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;#intro&quot;&gt;— Back to Top —&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;greetz 2 @netspooky @xEHLE_ @Vechshshshs @banesec @d3npa21 @hermit and @dollarvpncIub&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>rgbCTF 2020 Writeups</title>
   <link href="https://sshell.github.io/ctf/2020/07/13/rbgctf-2020-writeups/"/>
   <updated>2020-07-13T00:00:00+00:00</updated>
   <id>https://sshell.github.io/ctf/2020/07/13/rbgctf-2020-writeups</id>
   <content type="html">&lt;h2 id=&quot;intro&quot; style=&quot;text-align: center&quot;&gt;Introduction&lt;/h2&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;Challenge Name&lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;Category&lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;Solves&lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;Points&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;&lt;a href=&quot;#adventure&quot;&gt;Adventure&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;Misc&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;21&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;495&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;&lt;a href=&quot;#picking-up-the-pieces&quot;&gt;Picking Up The Pieces&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;Misc&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;93&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;403&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;&lt;a href=&quot;#magic-in-the-air&quot;&gt;PI 1: Magic in the Air&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;Forensics/OSINT&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;52&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;470&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;&lt;a href=&quot;#a-series-of-tubes&quot;&gt;PI 2: A Series of Tubes&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;Forensics/OSINT&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;22&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;495&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;&lt;a href=&quot;#robins-reddit-password&quot;&gt;Robin’s Reddit Password&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;Forensics/OSINT&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;30&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;490&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;&lt;a href=&quot;#alien-transmission-1&quot;&gt;Alien Transmission 1&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;Forensics/OSINT&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;158&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;219&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;&lt;a href=&quot;#typeracer&quot;&gt;Typeracer&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;Web&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;184&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;119&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;adventure&quot; style=&quot;text-align: center&quot;&gt;Adventure&lt;/h2&gt;
&lt;h4 style=&quot;text-align: center&quot; id=&quot;category-misc--solves-21--points-495&quot;&gt;Category: Misc | Solves: 21 | Points: 495&lt;/h4&gt;

&lt;hr /&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/jHrTIPk.png&quot; alt=&quot;Adventure challenge description&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Right off the bat, there’s a huge hint in the description with the weird capitalization that spells out ATARI.  Okay, so we can check to see if this is actually an Atari game by throwing it in &lt;a href=&quot;https://stella-emu.github.io/downloads.html&quot;&gt;an emulator&lt;/a&gt;.  We pop it in and lo and behold, we have ourselves a game!&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/PfStxS5.png&quot; alt=&quot;Breakfast game for Atari&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So what is immediately obvious is that this is not a standard game (I mean your character sprite is just the number 1.)  Any time there are customized/edited assets inside a game, I try to “work backwards” and think of what sort of tools are out there to do this specific thing.  After a bit of searching, I found &lt;a href=&quot;https://www.romhacking.net/utilities/723/&quot;&gt;Hack-O-Matic III&lt;/a&gt; on &lt;a href=&quot;https://www.romhacking.net&quot;&gt;Romhacking.net&lt;/a&gt;. It’s a simple program that shows the ROM literally bit-by-bit, making it easier to spot sprites.  Sure enough, that leads us to the flag.&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/Q3n00SO.png&quot; alt=&quot;The flag&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;#intro&quot;&gt;— Back to Top —&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;picking-up-the-pieces&quot; style=&quot;text-align: center&quot;&gt;Picking Up The Pieces&lt;/h2&gt;
&lt;h4 style=&quot;text-align: center&quot; id=&quot;category-misc--solves-93--points-403&quot;&gt;Category: Misc | Solves: 93 | Points: 403&lt;/h4&gt;

&lt;hr /&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/Fj5d8oI.png&quot; alt=&quot;Challenge description&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Boy oh boy, it’s a pathfinding puzzle! Usually when someone wants to find the most efficient path between two points, they’re going to want to use Dijikstra’s Algorithm. It’s the algorithm at the heart of Waze, Google Maps, and countless other applications, so you know it has to be good.&lt;/p&gt;

&lt;p&gt;If you want learn to more about it, &lt;a href=&quot;https://www.youtube.com/watch?v=GazC3A4OQTE&quot;&gt;check out this great video by Computerphile&lt;/a&gt;.&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/qjGVq1c.png&quot; alt=&quot;Sample path data&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We start off by opening &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;map.txt&lt;/code&gt; to see what we’re working with, and it appears to be fairly standard stuff outside of the strings at the end. The first two numbers are the intersections that are connected and the third number is the distance between the two. Luckily Dijkstra’s algorithm is popular enough to have thousands of libraries/packages/code snippets to reference.  We still have to write code of course, but &lt;a href=&quot;https://github.com/RyanCarrier/dijkstra&quot;&gt;RyanCarrier/dijkstra&lt;/a&gt; does the real heavy lifting here.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-go&quot; data-lang=&quot;go&quot;&gt;&lt;span class=&quot;k&quot;&gt;package&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;main&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
	&lt;span class=&quot;s&quot;&gt;&quot;bufio&quot;&lt;/span&gt;
	&lt;span class=&quot;s&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
	&lt;span class=&quot;s&quot;&gt;&quot;log&quot;&lt;/span&gt;
	&lt;span class=&quot;s&quot;&gt;&quot;os&quot;&lt;/span&gt;
	&lt;span class=&quot;s&quot;&gt;&quot;strconv&quot;&lt;/span&gt;
	&lt;span class=&quot;s&quot;&gt;&quot;strings&quot;&lt;/span&gt;

	&lt;span class=&quot;s&quot;&gt;&quot;github.com/RyanCarrier/dijkstra&quot;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;c&quot;&gt;// initialize the map and 200,000 numbered points&lt;/span&gt;
	&lt;span class=&quot;n&quot;&gt;graph&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;dijkstra&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;NewGraph&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;

	&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;200001&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;n&quot;&gt;graph&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;AddVertex&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;c&quot;&gt;// open file with path data&lt;/span&gt;
	&lt;span class=&quot;n&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;_&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Open&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;map.txt&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;n&quot;&gt;scanner&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;bufio&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;NewScanner&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;scanner&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Scan&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;scanner&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
		&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;strings&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Split&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot; &quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
		&lt;span class=&quot;c&quot;&gt;// convert strings to int&lt;/span&gt;
		&lt;span class=&quot;n&quot;&gt;z1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;_&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;strconv&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Atoi&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
		&lt;span class=&quot;n&quot;&gt;z2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;_&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;strconv&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Atoi&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
		&lt;span class=&quot;n&quot;&gt;z3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;_&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;strconv&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Atoi&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
		&lt;span class=&quot;c&quot;&gt;// routes needs to be added both ways&lt;/span&gt;
		&lt;span class=&quot;n&quot;&gt;graph&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;AddArc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;z1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;z2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;int64&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;z3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
		&lt;span class=&quot;n&quot;&gt;graph&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;AddArc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;z2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;z1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;int64&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;z3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
	&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;c&quot;&gt;// find and print the best path&lt;/span&gt;
	&lt;span class=&quot;n&quot;&gt;best&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;err&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;graph&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Shortest&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;200000&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;err&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;n&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Fatal&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;err&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
	&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;n&quot;&gt;fmt&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;best&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/FDOl7vI.png&quot; alt=&quot;Sample path data&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We run our code and it spits out the optimal path, just as we hoped. All that’s left is to write a quick one-liner to spit out the relevant lines and we’re done!&lt;/p&gt;

&lt;p&gt;The flag is : &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rgbCTF{1m_b4d_4t_sh0pping}&lt;/code&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/WQiP9NQ.png&quot; alt=&quot;Sample path data&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;#intro&quot;&gt;— Back to Top —&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;magic-in-the-air&quot; style=&quot;text-align: center&quot;&gt;PI 1: Magic in the Air&lt;/h2&gt;
&lt;h4 style=&quot;text-align: center&quot; id=&quot;category-forensicsosint--solves-52--points-470&quot;&gt;Category: Forensics/OSINT | Solves: 52 | Points: 470&lt;/h4&gt;

&lt;hr /&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/6EMB1Ud.png&quot; alt=&quot;Challenge text&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Right off the bat we know we’re dealing with some sort of sniffed wireless traffic. Opening the unzipped file in a hex editor confirms that we’re dealing with a Bluetooth capture, so we can go ahead and open it up in Wireshark and get a better idea of what exactly we’re working with.&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/OzIlchO.png&quot; alt=&quot;File in hex editor&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/SDHijwo.png&quot; alt=&quot;Bluetooth capture in Wireshark&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The source is named G613 and we know it’s a Human Interface Device, a quick Google search will show that it’s a &lt;a href=&quot;https://www.logitechg.com/en-us/products/gaming-keyboards/g613-wireless-mechanical-gaming-keyboard.html&quot;&gt;wireless keyboard&lt;/a&gt;. A quick once-over of the file reveals that the most commonly received message is this “Rcvd Handle Value Notification” which has the same 12-byte header and a constantly changing 13th byte. This is easily confirmed by flipping through packets while referencing &lt;a href=&quot;https://github.com/greatscottgadgets/libbtbb/blob/master/python/pcaptools/btaptap&quot;&gt;this keymap&lt;/a&gt; from the &lt;a href=&quot;https://github.com/greatscottgadgets/libbtbb/&quot;&gt;greatscottgadgets/libbtbb&lt;/a&gt; repo on GitHub. We convert the file to hex and then write this snippet of code to regex out the information we need and compare it to the keymap dictionary we found earlier.&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/G4W4aCA.png&quot; alt=&quot;Python code to extract keystrokes from Bluetooth capture&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The result provides us with the phone number and country it’s from. A quick Google search reveals that +46 is the dialing code for Sweden, so we have everything we need to solve this challenge and start on the next!&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/r0pCHXC.png&quot; alt=&quot;Extracted keystrokes&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;#intro&quot;&gt;— Back to Top —&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;a-series-of-tubes&quot; style=&quot;text-align: center&quot;&gt;PI 2: A Series of Tubes&lt;/h2&gt;
&lt;h4 style=&quot;text-align: center&quot; id=&quot;category-forensicsosint--solves-22--points-495&quot;&gt;Category: Forensics/OSINT | Solves: 22 | Points: 495&lt;/h4&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;img src=&quot;https://i.imgur.com/s1Kjle4.png&quot; alt=&quot;Challenge text&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The challenge before this had us extract a suspect’s phone number from a Bluetooth capture file. A quick Google search doesn’t return anything of value, but that’s okay because there’s a lot of places you can go with a phone number.  We put the number into our phone and open Snapchat, one of the million social media apps that want access to our contact list.&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/vV8ZD86.jpg&quot; alt=&quot;Added contact to phonebook&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Lo and behold, good ol’ Donny is not only on Snapchat, but actively posting information to his public “story” that we can use to pivot to other social media platforms.&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/IFTMyug.jpg&quot; alt=&quot;Snapchat suggesting my new contact&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/Rc4UZPd.jpg&quot; alt=&quot;Target&apos;s Snapchat story&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;On Instagram we can quickly scan his public highlights to see that he’s mentioned being in Bristol, Digbeth, “Brum” (slang for Birmingham), and “Selly” (short for Selly Oak, an area in Birmingham.) Since he mentions being in Selly with housemates, we can safely assume that he lives there.&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/8pKcqkv.jpg&quot; alt=&quot;Instagram story highlight&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;In his highlights, he also posts a partially redacted screenshot of a flight itinerary leaving from [UNKNOWN] and heading to Amsterdam. Since we have determined that the target lives in Birmingham, we can look up flights on that day from Birmingham to Amsterdam to find the flight number which is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;KL 1426&lt;/code&gt;. All that’s left is to do a quick Google search for the ISO 3166-1 Alpha 2 code (which for England is surprisingly ‘GB’ and not ‘UK.’)&lt;/p&gt;

&lt;p&gt;We put all this together to get our flag : &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rgbCTF{donovanlockheart:birmingham:gb:kl1426}&lt;/code&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/b8PzcpG.jpg&quot; alt=&quot;Instagram story highlight&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/cfnG4Rh.png&quot; alt=&quot;Target&apos;s flight information&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;#intro&quot;&gt;— Back to Top —&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;robins-reddit-password&quot; style=&quot;text-align: center&quot;&gt;Robin’s Reddit Password&lt;/h2&gt;
&lt;h4 style=&quot;text-align: center&quot; id=&quot;category-forensicsosint--solves-30--points-490&quot;&gt;Category: Forensics/OSINT | Solves: 30 | Points: 490&lt;/h4&gt;

&lt;hr /&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/TGz3N9X.png&quot; alt=&quot;Challenge text&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I have to admit that at first I couldn’t quite wrap my head around this one, but the bit about breaking into Reddit’s server reminded me of a funny easter egg someone had sent me before.&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/n7Fe1SN.png&quot; alt=&quot;reddit easter egg&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Sure enough, one of the users here is Robin.  We google the hash and find out that someone has already cracked the hashes for us (thank you, stranger) so we can just wrap it in the flag format and submit it!&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/TZF5DWe.png&quot; alt=&quot;reddit hashes crakced&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It’s also worth noting that this challenge could have just as easily been solved with one Google search as well.&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/KxCvY13.png&quot; alt=&quot;&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;#intro&quot;&gt;— Back to Top —&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;alien-transmission-1&quot; style=&quot;text-align: center&quot;&gt;Alien Transmission 1&lt;/h2&gt;
&lt;h4 style=&quot;text-align: center&quot; id=&quot;category-forensicsosint--solves-158--points-219&quot;&gt;Category: Forensics/OSINT | Solves: 158 | Points: 219&lt;/h4&gt;

&lt;hr /&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/EIH4MFK.png&quot; alt=&quot;Alien Transmission Challenge Text&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We’re given a .WAV file, and the clue tells us that it came over the radio, so right away we can go looking for ways to decode this 36 second audio clip into something meaningful.  When you open it with Audacity and look at the spectrogram,  we are presented with the image on the left.  After a little bit of digging, the image matches pretty closely with what a &lt;a href=&quot;https://en.wikipedia.org/wiki/Slow-scan_television&quot;&gt;Slow Scan Television (SSTV)&lt;/a&gt; signal looks like (image on the right)&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/0dOxkYh.png&quot; alt=&quot;Audacity &quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Often times programs that pull data from audio involve complex setups with virtual audio devices and whatnot. Luckily there’s a tool on GitHub (&lt;a href=&quot;https://github.com/xdsopl/robot36&quot;&gt;xdsopl/robot36&lt;/a&gt;) to encode/decode SSTV in a mode called Robot36. After compiling the tool, we run it against the file and grab our flag!&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/HqFVEe8.png&quot; alt=&quot;robot36 output&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/fDnVkar.png&quot; alt=&quot;The Flag&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;#intro&quot;&gt;— Back to Top —&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;typeracer&quot; style=&quot;text-align: center&quot;&gt;Typeracer&lt;/h2&gt;
&lt;h4 style=&quot;text-align: center&quot; id=&quot;category-web--solves-184--points-119&quot;&gt;Category: Web | Solves: 184 | Points: 119&lt;/h4&gt;

&lt;hr /&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/nPMIccf.png&quot; alt=&quot;Typeracer challenge description&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Straight out of the gate, this looks like a pretty neat little game.  You can’t just copy and paste the sample text because in the page source, each word is generated out of order, in a different span, and on a different layer. You could try to de-obfuscate and try to figure out the javascript that renders that whole mess, but what a pain in the ass that would be.&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/odLfFQE.png&quot; alt=&quot;Typeracer web app&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/ug05QDS.png&quot; alt=&quot;obfuscated javascript&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The way Firefox Developer Tools were designed actually makes this challenge an absolute breeze. When you start typing a variable name in the javascript console, it not only brings up a list of variables, but also shows the value of whichever one you highlight. Since the obfuscation renames variables in the format of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_0xFFFFFF&lt;/code&gt;, we can easily find the variables corresponding with our input textbox and the target string.&lt;/p&gt;

&lt;p&gt;To solve the challenge from here, all we have to do is type &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_0x318f00 = _0x35179f&lt;/code&gt; into the console, start the game, and hit enter.&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/QeVTADL.png&quot; alt=&quot;Firefox Developer Tools Javascript console&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://i.imgur.com/LUI3KWa.png&quot; alt=&quot;the base64 encoded flag&quot; class=&quot;imgCenter&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;#intro&quot;&gt;— Back to Top —&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;
</content>
 </entry>
 

</feed>
