<?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>DEV Community: atan</title>
    <description>The latest articles on DEV Community by atan (@atan).</description>
    <link>https://dev.to/atan</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%2F47043%2Ff167c114-56bc-4967-9037-95e9fd3c31b9.jpg</url>
      <title>DEV Community: atan</title>
      <link>https://dev.to/atan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/atan"/>
    <language>en</language>
    <item>
      <title>Solving a CTF challenge</title>
      <dc:creator>atan</dc:creator>
      <pubDate>Fri, 29 Mar 2019 05:00:46 +0000</pubDate>
      <link>https://dev.to/atan/solving-a-ctf-challenge-2nbp</link>
      <guid>https://dev.to/atan/solving-a-ctf-challenge-2nbp</guid>
      <description>&lt;p&gt;In my quest to &lt;a href="https://dev.to/atan/what-is-ctf-and-how-to-get-started-3f04"&gt;promote CTFs within the dev.to community&lt;/a&gt;, here's a writeup that demonstrates what solving a challenge may look like.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Task
&lt;/h1&gt;

&lt;p&gt;This challenge was published by user RedK on the CTFLearn platform. (&lt;a href="https://ctflearn.com/problems/671" rel="noopener noreferrer"&gt;Link here&lt;/a&gt; login required) The details are as follows!&lt;/p&gt;




&lt;h4&gt;
  
  
  F1l3 M1X3R
&lt;/h4&gt;

&lt;p&gt;I think my amazing photo was hit by a mixer and now it is not working. Help me fix it? &lt;a href="https://mega.nz/#!Ds0mWaCJ!4uKfJeJwhupG7Tvx8ReTBP1reFgdzRLE3YrN0l-5Jrg" rel="noopener noreferrer"&gt;https://mega.nz/#!Ds0mWaCJ!4uKfJeJwhupG7Tvx8ReTBP1reFgdzRLE3YrN0l-5Jrg&lt;/a&gt; hint: visit: &lt;a href="https://en.wikipedia.org/wiki/List_of_file_signatures" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/List_of_file_signatures&lt;/a&gt; Programming might be useful in this challenge.&lt;/p&gt;




&lt;p&gt;Feel free to download and attempt this challenge out before reading how I solved it :)&lt;/p&gt;

&lt;h3&gt;
  
  
  First steps
&lt;/h3&gt;

&lt;p&gt;After downloading the file &lt;code&gt;fl4g.jpeg&lt;/code&gt;, the first thing I did was try to open it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fwsx547dgpp6hud0e6frk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fwsx547dgpp6hud0e6frk.png" alt="img attempting to open file"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Obviously that didn't work out. The hint in the challenge description lead me to assume that the image's file signature must have been tampered with. Let's take a look at the first few bytes of &lt;code&gt;fl4g.jpeg&lt;/code&gt; and compare it to the expected file signature for .jpeg files.&lt;/p&gt;

&lt;p&gt;Here's the expected file signature.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

FF D8 FF E0 00 10 4A 46 49 46 00 01


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;I use the &lt;code&gt;xxd&lt;/code&gt; command and &lt;code&gt;fl4g.jpeg&lt;/code&gt; as an argument to get a hex dump of the first 12 bytes.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

$ xxd -l 12 fl4g.jpeg
00000000: e0ff d8ff 464a 1000 0100 4649  ....FJ....FI


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;At first glance, I saw that the hex values were present, but just in the wrong order.&lt;br&gt;
Using a hex editor (I used &lt;a href="https://www.suavetech.com/0xed/" rel="noopener noreferrer"&gt;0xed&lt;/a&gt;), I deleted the first twelve bytes and replaced it with the correct signature.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

$ xxd -l 12 modified_fl4g.jpeg                                                                                                                            
00000000: ffd8 ffe0 0010 4a46 4946 0001            ......JFIF..


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Thinking I was done, I opened the file again expecting to be rewarded only to find that the file still wouldn't open....😞&lt;/p&gt;

&lt;h3&gt;
  
  
  Brainstorming
&lt;/h3&gt;

&lt;p&gt;Fixing the signature didn't work, BUT because the values were all present only scrambled, I decided to take a look at the original file again and noticed a pattern. Every four bytes was reversed in order! &lt;code&gt;FF D8 FF E0&lt;/code&gt; had been reversed to read &lt;code&gt;E0 FF D8 FF&lt;/code&gt; and so on for every four bytes of the signature. Fixing just the signature wouldn't get anywhere because it's possible this reversing had happened to the entire file! I wrote a short script to reverse every four bytes of the image in order to test my hypothesis.&lt;/p&gt;

&lt;h3&gt;
  
  
  The script!
&lt;/h3&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;

&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;fl4g.jpeg&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;rb&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;BUF&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;    
    &lt;span class="n"&gt;bytes_rev&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;b&lt;/span&gt;&lt;span class="sh"&gt;""&lt;/span&gt;
    &lt;span class="n"&gt;bytes_read&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;bytearray&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;BUF&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;bytes_read&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;bytes_rev&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;bytes_read&lt;/span&gt;&lt;span class="p"&gt;[::&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="n"&gt;bytes_read&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;BUF&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;modified_fl4g.jpeg&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;wb&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;newfile&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;newfile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bytes_rev&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;To break this down:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;

&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;fl4g.jpeg&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;rb&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Here we open &lt;code&gt;fl4g.jpeg&lt;/code&gt; with the &lt;code&gt;rb&lt;/code&gt; mode to indicate that we are reading a file in binary mode.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;

&lt;span class="n"&gt;BUF&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;
&lt;span class="n"&gt;bytes_rev&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;b&lt;/span&gt;&lt;span class="sh"&gt;""&lt;/span&gt;
&lt;span class="n"&gt;bytes_read&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;bytearray&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;BUF&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;code&gt;BUF&lt;/code&gt; is set to 4 to indicate that the buffer for each time we read from the file will be four bytes. &lt;code&gt;bytes_rev&lt;/code&gt; is set to an empty bytestring so we have a place to store the reversed bytes. The file is then read from and stored as a &lt;code&gt;bytearray&lt;/code&gt; into &lt;code&gt;bytes_read&lt;/code&gt;.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;bytes_read&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;bytes_rev&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;bytes_read&lt;/span&gt;&lt;span class="p"&gt;[::&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="n"&gt;bytes_read&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;BUF&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Next up we loop as long as bytes_read is &lt;code&gt;True&lt;/code&gt;. &lt;code&gt;bytes_rev&lt;/code&gt; is appended the reversed bytearray of 4 bytes using slice notation. &lt;code&gt;bytes_read&lt;/code&gt; then reads the next set of four bytes from &lt;code&gt;file&lt;/code&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;

    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;modified_fl4g.jpeg&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;wb&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;newfile&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;newfile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bytes_rev&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Finally, we open a new file and write our bytes to it&lt;/p&gt;

&lt;h3&gt;
  
  
  Outcome?
&lt;/h3&gt;

&lt;p&gt;Running the script produced a &lt;code&gt;modified_flag.jpeg&lt;/code&gt; file with every four bytes reversed.&lt;/p&gt;

&lt;p&gt;I opened the file and....&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fwx9t6f5wld0jwni239uo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fwx9t6f5wld0jwni239uo.png" alt="We did it!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The flag is revealed! I took the liberty to censor out the flag text so that you can try it yourself if you'd like!&lt;/p&gt;

</description>
      <category>security</category>
      <category>beginners</category>
      <category>ctf</category>
    </item>
    <item>
      <title>What is CTF and how to get started!</title>
      <dc:creator>atan</dc:creator>
      <pubDate>Thu, 28 Mar 2019 03:11:17 +0000</pubDate>
      <link>https://dev.to/atan/what-is-ctf-and-how-to-get-started-3f04</link>
      <guid>https://dev.to/atan/what-is-ctf-and-how-to-get-started-3f04</guid>
      <description>&lt;p&gt;CTFs are one of my favorite hobbies. I love the feeling of solving a particularly difficult task and seeing all the puzzle pieces click together. I'd like this post to serve as an introduction to CTF for those in the dev.to community that may not know what it is.&lt;/p&gt;

&lt;h1&gt;
  
  
  So what is CTF?
&lt;/h1&gt;

&lt;p&gt;CTF (Capture The Flag) is a kind of information security competition that challenges contestants to solve a variety of tasks ranging from a scavenger hunt on wikipedia to basic programming exercises, to hacking your way into a server to steal data. In these challenges, the contestant is usually asked to find a specific piece of text that may be hidden on the server or behind a webpage. This goal is called the flag, hence the name!&lt;/p&gt;

&lt;p&gt;Like many competitions, the skill level for CTFs varies between the events. Some are targeted towards professionals with experience operating on cyber security teams. These typically offer a large cash reward and can be held at a specific physical location. Other events target the high school and college student range, sometimes offering monetary support for education to those that place highly in the competition!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ctftime.org/ctf-wtf/"&gt;CTFtime&lt;/a&gt; details the different types of CTF. To summarize, Jeopardy style CTFs provide a list of challenges and award points to individuals or teams that complete the challenges, groups with the most points wins. Attack/Defense style CTFs focus on either attacking an opponent's servers or defending one's own. These CTFs are typically aimed at those with more experience and are conducted at a specific physical location.&lt;/p&gt;

&lt;p&gt;CTFs can be played as an individual or in teams so feel free to get your friends onboard!&lt;/p&gt;

&lt;p&gt;I'd like to stress that CTFs are available to everyone. Many challenges do not require programming knowledge and are simply a matter of problem solving and creative thinking.&lt;/p&gt;

&lt;h1&gt;
  
  
  Challenge types
&lt;/h1&gt;

&lt;p&gt;Jeopardy style CTFs challenges are typically divided into categories. I'll try to briefly cover the common ones.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cryptography - Typically involves decrypting or encrypting a piece of data&lt;/li&gt;
&lt;li&gt;Steganography - Tasked with finding information hidden in files or images&lt;/li&gt;
&lt;li&gt;Binary - Reverse engineering or exploiting a binary file&lt;/li&gt;
&lt;li&gt;Web - Exploiting web pages to find the flag&lt;/li&gt;
&lt;li&gt;Pwn - Exploiting a server to find the flag&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Where do I start?
&lt;/h1&gt;

&lt;p&gt;If I managed to pique your curiosity, I've compiled a list of resources that helped me get started learning. CTF veterans, feel free to add your own resources in the comments below!&lt;/p&gt;

&lt;h3&gt;
  
  
  Learning
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://ctfs.github.io/resources/"&gt;http://ctfs.github.io/resources/&lt;/a&gt; - Introduction to common CTF techniques such as  cryptography, steganography, web exploits (Incomplete)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://trailofbits.github.io/ctf/forensics/"&gt;https://trailofbits.github.io/ctf/forensics/&lt;/a&gt; - Tips and tricks relating to typical CTF challenges/scenarios&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ctftime.org/writeups"&gt;https://ctftime.org/writeups&lt;/a&gt; - Explanations of solutions to past CTF challenges&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://ctftime.org"&gt;https://ctftime.org&lt;/a&gt; - CTF event tracker &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/apsdehal/awesome-ctf"&gt;https://github.com/apsdehal/awesome-ctf&lt;/a&gt; - Comprehensive list of tools and further reading&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tools (That I use often)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/ReFirmLabs/binwalk"&gt;binwalk&lt;/a&gt; - Analyze and extract files&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://portswigger.net/burp"&gt;burp suite&lt;/a&gt; - Feature packed web penetration testing framework&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.caesum.com/handbook/Stegsolve.jar"&gt;stegsolve&lt;/a&gt; - Pass various filters over images to look for hidden text&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.gnu.org/software/gdb/"&gt;GDB&lt;/a&gt; - Binary debugger&lt;/li&gt;
&lt;li&gt;The command line :)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Practice
&lt;/h3&gt;

&lt;p&gt;Many of the "official" CTFs hosted by universities and companies are time-limited competitions. There are many CTFs however that are online 24/7 that can be used as practice and learning tools. Here are some that I found to be friendly for beginners.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://ctflearn.com"&gt;https://ctflearn.com&lt;/a&gt; - A collection of various user-submitted challenges aimed towards newcomers&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://overthewire.org/wargames/"&gt;https://overthewire.org/wargames/&lt;/a&gt; - A series of progressively more difficult pwn-style challenges. (Start with the bandit series)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://2018game.picoctf.com/"&gt;https://2018game.picoctf.com/&lt;/a&gt; - Yearly time-limited CTF now available to use as practice&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;CTF is a great hobby for those interested in problem-solving and/or cyber security. The community is always welcoming and it can be a lot of fun tackling challenges with friends. This is my first post, if I was able to spark interest with even a single person, I'd consider it a success 😊. Thank you for reading!&lt;/p&gt;

</description>
      <category>security</category>
      <category>ctf</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
