<?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: Kat Maddox</title>
    <description>The latest articles on Forem by Kat Maddox (@ctrlshifti).</description>
    <link>https://forem.com/ctrlshifti</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%2F143888%2Fd0e058df-a9ea-4518-871c-c6ebced55159.jpg</url>
      <title>Forem: Kat Maddox</title>
      <link>https://forem.com/ctrlshifti</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ctrlshifti"/>
    <language>en</language>
    <item>
      <title>The Worst of Kat</title>
      <dc:creator>Kat Maddox</dc:creator>
      <pubDate>Wed, 03 Jul 2019 22:30:59 +0000</pubDate>
      <link>https://forem.com/ctrlshifti/the-worst-of-kat-7d9</link>
      <guid>https://forem.com/ctrlshifti/the-worst-of-kat-7d9</guid>
      <description>&lt;p&gt;I'm flat out of creativity today, so I'm just going to compile the content I've most successfully terrorized Twitter with. Hope you enjoy!&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1134635023984807937-630" src="https://platform.twitter.com/embed/Tweet.html?id=1134635023984807937"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1134635023984807937-630');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1134635023984807937&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1137352808628273152-201" src="https://platform.twitter.com/embed/Tweet.html?id=1137352808628273152"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1137352808628273152-201');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1137352808628273152&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1139696176721096704-161" src="https://platform.twitter.com/embed/Tweet.html?id=1139696176721096704"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1139696176721096704-161');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1139696176721096704&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1140519226471407617-569" src="https://platform.twitter.com/embed/Tweet.html?id=1140519226471407617"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1140519226471407617-569');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1140519226471407617&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1141962739721465856-792" src="https://platform.twitter.com/embed/Tweet.html?id=1141962739721465856"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1141962739721465856-792');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1141962739721465856&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1142239420336103425-236" src="https://platform.twitter.com/embed/Tweet.html?id=1142239420336103425"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1142239420336103425-236');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1142239420336103425&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1142382806720339968-417" src="https://platform.twitter.com/embed/Tweet.html?id=1142382806720339968"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1142382806720339968-417');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1142382806720339968&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1144919494952808448-97" src="https://platform.twitter.com/embed/Tweet.html?id=1144919494952808448"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1144919494952808448-97');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1144919494952808448&amp;amp;theme=dark"
  }



&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F7kvl0fem30u59wgosogm.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F7kvl0fem30u59wgosogm.png"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>jokes</category>
    </item>
    <item>
      <title>Staying Motivated When Working on Projects: A Paradigm Shift</title>
      <dc:creator>Kat Maddox</dc:creator>
      <pubDate>Sat, 08 Jun 2019 14:31:03 +0000</pubDate>
      <link>https://forem.com/ctrlshifti/staying-motivated-when-working-on-projects-a-paradigm-shift-3kp4</link>
      <guid>https://forem.com/ctrlshifti/staying-motivated-when-working-on-projects-a-paradigm-shift-3kp4</guid>
      <description>&lt;p&gt;Picking up projects, feverishly working on them, and then entirely forgetting about them weeks later has been an issue for me ever since I started my tech career. I frequently compare myself to the tech version of Sisyphus - just that I get much less exercise.&lt;/p&gt;

&lt;p&gt;Recently, I started working on a project that I'm absolutely in love with. I can't think of many things that'd make me happier than finishing it.&lt;/p&gt;

&lt;p&gt;The issue? It's going to take me at least half a year to complete. I'm lucky if I can focus on something for more than half a month.&lt;/p&gt;

&lt;p&gt;I decided that I loved this project idea enough to finally do something real about my motivation issue. The usual self-help articles weren't going to cut it this time. &lt;/p&gt;

&lt;p&gt;I booked an appointment with a therapist, fully expecting to come out of the session being 120% motivated. Motivation would drip from every pore of my body. All my coder friends would say "Yeah, that's Kat, she's the one with the motivation". With the help of a professional - who unlike me was a real adult, judging by his nice couch and the certificates on his wall - I'd unlock the secret to eternal, unwavering motivation.&lt;/p&gt;

&lt;p&gt;Of course, I didn't. But I got a lot of other advice instead, and after taking it on board, I'm definitely seeing much better results in my dev habits.&lt;/p&gt;

&lt;p&gt;In this post, I'm going to compile most of the advice I was given, so that you can get the benefits of therapy without having to spend the $100. You can thank me later.&lt;/p&gt;

&lt;p&gt;So the first step is...&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;Embrace boredom&lt;/h3&gt;

&lt;p&gt;The problem wasn't just that I was losing motivation after the beginning of the project - it's that I was getting &lt;em&gt;bored&lt;/em&gt; of the project after the initial challenge. And that my aversion to boredom was so strong that I didn't want to continue. I &lt;em&gt;could&lt;/em&gt; power through it - I just really, really didn't want to.&lt;/p&gt;

&lt;p&gt;Unfortunately, boredom is a timer that starts the moment you write down that first line of code. You can't stop it. You're a coder, and boredom is coming for you.&lt;/p&gt;

&lt;p&gt;While I assert that being a coder isn't a personality type, we all do have one thing in common: we seek novelty. We love working with shiny new technologies. But the issue with shiny things is that they stop being shiny the moment you get your grubby hands on them. If you're anything like me, you'll stop working on something the moment it bores you.&lt;/p&gt;

&lt;p&gt;But if you do this - and I know you do this - you're wiring your brain for failure. By avoiding boredom, you're not exercising your mind's ability to deal with it - which creates a feedback loop of you being even more afraid of boredom the next time you encounter it.&lt;/p&gt;

&lt;p&gt;The only way past this is to embrace it. Next time something starts boring you, see it as a sign of progress instead of bouncing to a new project. It won't be easy the first time you try, but over time you'll learn to thrive despite boredom. And just as motivation left once, it'll come back eventually once you start seeing all the results of your hard work.&lt;/p&gt;

&lt;p&gt;In the meantime, you can slow down the impending march of boredom by...&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;Changing direction&lt;/h3&gt;

&lt;p&gt;Unless your project is tiny - in which case, why aren't you done with it already? - then it probably has more than one component. &lt;/p&gt;

&lt;p&gt;For example, I'm currently doing gamedev. When I've done too much coding, I'll switch to 3D modeling. Then I'll take a break to do worldbuilding, then writing, and then it's back to coding again.&lt;/p&gt;

&lt;p&gt;Take some time to think about how your project can be split into different, but parallelizable components. Section them off and start on the one that excites you most right now, and come back to the others later.&lt;/p&gt;

&lt;p&gt;The benefit of this is that working on components concurrently delays boredom long enough for you to get some results in. Once you do have results, looking back on them is going to be your #1 asset while you slowly crawl through the inevitable gloom. Be like a little coder squirrel, stashing away progress to prepare for the winter (the winter is boredom).&lt;br&gt; &lt;br&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7x4s9f6L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.explainhownow.com/assets/images/squirrel.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7x4s9f6L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.explainhownow.com/assets/images/squirrel.png" alt="squirrel stashing away fruit, but it's github commits instead"&gt;&lt;/a&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;And since you've already split your project into different components, what you can do next is...&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;Replace components that don't excite you with ones that do&lt;/h3&gt;

&lt;p&gt;If there's a part of your project that you know you're dreading, see if you can rework it. Maybe you can use a fresher, more exciting framework for that part instead. Take some time to explore more interesting ways of doing things!&lt;/p&gt;

&lt;p&gt;Once you work on your project for a while, you'll build up momentum. Momentum is amazing! It's an intoxicating feeling. So you'll probably hate me when I say -&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;Kill your momentum&lt;/h3&gt;

&lt;p&gt;Do you think I WANT to be writing this blog post? Hell no. I've got a game to make, god damn it. Stop bothering me.&lt;/p&gt;

&lt;p&gt;Telling me to kill my momentum and take frequent breaks from my project was the most counter-intuitive, irritating advice I got. But my momentum was a crutch. I was so unsure of my ability to stay committed to a project that the second I got any traction, I did everything possible not to let go. I pulled late nights, shirked friends, and dropped other commitments. &lt;br&gt; &lt;br&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4rbnIGV2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.explainhownow.com/assets/images/burnout.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4rbnIGV2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.explainhownow.com/assets/images/burnout.png" alt="do you want burnout? because that's how you get burnout"&gt;&lt;/a&gt;&lt;br&gt; &lt;/p&gt;

&lt;p&gt;Of course, we all know where that gets you. And while you can power through boredom, you can't power through burnout. When you find yourself getting too obsessed, pull away from your project to do other things.&lt;/p&gt;

&lt;p&gt;I know I sound like a madwoman, because so far I've pretty much told you to work on your project when you don't want to, and to put your project aside when you DO want to work. I understand if you're upset, so feel free to direct all your hate mail to me at &lt;a href="https://twitter.com/kathyra_"&gt;@kathyra_&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;But the point of this is to make sure that your project is controlled by you, not your impulses. You shouldn't allow boredom to make you abandon your work, and you shouldn't invite burnout by working too feverishly either. Stay driven, but above all, stay sane.&lt;/p&gt;

&lt;p&gt;But if you're REALLY having trouble pulling away from your work, here's a great project-adjacent way to take a break:&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;Take some time off to share your project with the community!&lt;/h3&gt;

&lt;p&gt;People say you should be your own cheerleader. &lt;/p&gt;

&lt;p&gt;To hell with that. Have you ever seen a cheerleader score a goal? Or a field player waving pompoms? Those are two different jobs, and doing both at the same time is just... not easy. There's going to be times during your project when you'll be feeling tired and unmotivated, and continuing while having a smile on your face won't be possible.&lt;/p&gt;

&lt;p&gt;That's why the developer community is here to help! We're here to be your cheerleaders. When &lt;em&gt;you've&lt;/em&gt; stopped feeling excited about your project, let &lt;em&gt;us&lt;/em&gt; be excited for you.&lt;/p&gt;

&lt;p&gt;Consider sharing the progress of your project with the Twitter developer community and writing posts about it on dev.to. As well as getting you ongoing support from the developer community, this also helps you build a following for your project so that more people see it once it's released!&lt;/p&gt;

&lt;p&gt;And of course...&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;Accept the death of motivation&lt;/h3&gt;

&lt;p&gt;Motivation gets you started on a project, but it won't see you through to the end. Asking "how do I stay motivated?" is the same as asking "how do I be happy?". It's something that comes and goes, and you should appreciate it when it's there but also learn to make the most of things when it's not.&lt;/p&gt;

&lt;p&gt;To summarise:&lt;br&gt;
&lt;/p&gt;


&lt;ul&gt;
&lt;li&gt;Embrace boredom as a sign of progress&lt;/li&gt;
&lt;li&gt;Split your project into parallelizable components and switch between them to keep things novel&lt;/li&gt;
&lt;li&gt;Find fun alternatives to the boring bits&lt;/li&gt;
&lt;li&gt;Don't rely on momentum&lt;/li&gt;
&lt;li&gt;Share your progress with the community&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;

&lt;h3&gt;Keep in touch!&lt;/h3&gt;

&lt;p&gt;Like my posts? &lt;a href="https://twitter.com/kathyra_"&gt;Check out my Twitter!&lt;/a&gt; I make bad jokes, reduce important social issues to juvenile satire, and occasionally rant about tech.&lt;/p&gt;

&lt;p&gt;Want just the tech? &lt;a href="http://eepurl.com/gj1EpH"&gt;Subscribe to my email list to get notified of when new posts are released!&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post was originally published on &lt;a href="https://www.explainhownow.com/"&gt;explainhownow.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>productivity</category>
      <category>motivation</category>
    </item>
    <item>
      <title>Scan Your Network for Vulnerabilities With Nmap</title>
      <dc:creator>Kat Maddox</dc:creator>
      <pubDate>Sun, 14 Apr 2019 04:29:30 +0000</pubDate>
      <link>https://forem.com/ctrlshifti/scan-networks-for-vulnerabilities-with-nmap-2pc</link>
      <guid>https://forem.com/ctrlshifti/scan-networks-for-vulnerabilities-with-nmap-2pc</guid>
      <description>&lt;p&gt;&lt;em&gt;Nmap is a free, open source tool for running scans on networks and discovering potential vulnerabilities. If you're a pentester, Nmap is a crucial part of your reconnaissance for understanding the landscape of what you're working with. As a developer or sysadmin, you should absolutely learn how to use Nmap to scan your networks! It gives you a "black box" view of what's going on in your network and allows you to view it the way hackers do. So if you can spot any issues - chances are, someone malicious already has!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: if you're a web developer hosting your website on a third-party service, you might not have permission to do networks scans. &lt;a href="https://aws.amazon.com/security/penetration-testing/"&gt;AWS allows customers to carry out penetration tests&lt;/a&gt;, but other hosters might not. Make sure you check first!&lt;/em&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Target audience:&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;


&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Developers&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Sysadmins&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Penetration testers&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;

&lt;h3&gt;Installing Nmap&lt;/h3&gt;

&lt;p&gt;Nmap is pretty easy to install on Windows and MacOS - check out the &lt;a href="https://nmap.org/download.html"&gt;official download page&lt;/a&gt;. I recommend using Zenmap, the GUI that comes with the Windows and MacOS download. Zenmap looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1JEp80um--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.explainhownow.com/assets/images/zenmap_1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1JEp80um--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.explainhownow.com/assets/images/zenmap_1.png" alt="zenmap preview"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're on Ubuntu or similar, you can instead run something like this:&lt;br&gt;
&lt;br&gt;
 &lt;code&gt;sudo apt-get install nmap&lt;/code&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;Scanning for Ports With Nmap&lt;/h3&gt;

&lt;p&gt;Nmap is a powerfully versatile tool with many options. So many that the people behind Nmap managed to &lt;a href="https://nmap.org/book/"&gt;write a 468-page long book on it&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I'll go over the basic usage of Nmap first, and then we can get into some of the fancier options. I'll use Yahoo.com at my target host since they've got an active bug bounty program and won't arrest me.&lt;/p&gt;

&lt;p&gt;Here's a basic scan:&lt;br&gt;
&lt;br&gt;
&lt;code&gt;nmap -sS yahoo.com&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--caTBwRgN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.explainhownow.com/assets/images/zenmap_2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--caTBwRgN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.explainhownow.com/assets/images/zenmap_2.png" alt="zenmap scan"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The -sS flag performs a SYN scan, scanning many ports without ever completing a TCP connection. This is a great option if you don't want to be &lt;a href="https://www.google.com/search?client=firefox-b-d&amp;amp;q=give+the+sysadmin+a+heart+attack"&gt;too noisy&lt;/a&gt;. This shows us there are two open ports, 80 and 443 (for HTTP and HTTPS). Pretty much what we'd expect!&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;Let's add another flag to this, -O.&lt;br&gt;
&lt;br&gt;
&lt;code&gt;nmap -sS -O yahoo.com&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LaWWZtrH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.explainhownow.com/assets/images/zenmap_3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LaWWZtrH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.explainhownow.com/assets/images/zenmap_3.png" alt="zenmap scan"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This time, we see the ports and also some guesses of what OS the server might be running. Knowing what OS is running on a server is an important part of reconnaissance since some vulnerabilities are OS-specific. For example, OpenSSH 5.3 is &lt;em&gt;ancient&lt;/em&gt; and has exploits publicly available, and if you see it on a server, chances are it's vulnerable. The most notable exception to this is if the server runs Redhat OS, since Redhat has patched around OpenSSH 5.3's issues.&lt;/p&gt;

&lt;p&gt;Side note: the -O flag is slow, so drop it from your scan if you don't need it.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;Let's check out another flag, -sV.&lt;br&gt;
&lt;br&gt;
&lt;code&gt;nmap -sS -O -sV yahoo.com&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

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

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PORT    STATE  SERVICE        VERSION
80/tcp  open   http-proxy     Apache Traffic Server
113/tcp closed ident
443/tcp open   ssl/http-proxy Apache Traffic Server
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;This time, we see the version of what software is running on the ports! This is crucial for discovering vulnerabilities since older software tends to have more exploits available. Try also throwing in the -v flag, which gives you more verbose information about the output.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;Next, let's try specifying what ports we want to check for instead of just doing a general scan.&lt;br&gt;
&lt;br&gt;
 &lt;code&gt;nmap -sS -sV -v -p 22 yahoo.com&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

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

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PORT   STATE    SERVICE VERSION
22/tcp filtered ssh
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;We can see that port 22 is filtered on Yahoo, which means we'd probably have a hard time attacking it. You can specify a range of ports by replacing &lt;em&gt;-p 22&lt;/em&gt; with something like &lt;em&gt;-p 1-165535&lt;/em&gt;. The flag that I usually use is &lt;em&gt;--top-ports 1000&lt;/em&gt;, which as the name implies, scans the most common 1000 ports. &lt;/p&gt;

&lt;p&gt;Putting it all together, this is what I'll usually run to get an overall look of the host:&lt;br&gt;
&lt;br&gt;
&lt;code&gt;nmap -sS -sV -O -v --top-ports 1000 yahoo.com&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;Here, we're doing a sneaky scan (sS), version detection (sV), operating system detection (O), verbose output (v), and scanning the top 1000 ports. &lt;/p&gt;

&lt;p&gt;Now you know the basics of port scanning with Nmap!&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;Going Further&lt;/h3&gt;

&lt;h4&gt;Scanning IP Ranges&lt;/h4&gt;

&lt;p&gt;Scanning IP ranges instead of a single host is useful if you're testing on your own servers. I don't recommend doing this on servers you don't own, since you might miss and scan someone who's not your target. &lt;/p&gt;

&lt;p&gt;Nmap uses CIDR notation, so you can just run something like this:&lt;br&gt;
&lt;br&gt;
&lt;code&gt;nmap -sV --top-ports 1000 192.168.1.0/24&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;h4&gt;Timing&lt;/h4&gt;

&lt;p&gt;Nmap has five timing options, officially named: paranoid, sneaky, polite, normal, aggressive, insane. You can specify this with the T flag, e.g. -T0 for paranoid and -T5 for insane. By default, Nmap runs on "normal" mode, so -T3 does nothing. I'll usually run my scans on -T4 if I know it won't upset the client.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;File Output&lt;/h4&gt;

&lt;p&gt;If you want to save Nmap's results to a file for later, add the &lt;em&gt;-oN filename&lt;/em&gt; flag. &lt;em&gt;-oX filename&lt;/em&gt; outputs results in XML format, which is useful if you've got scripts that process Nmap output.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;Scripts&lt;/h4&gt;

&lt;p&gt;Nmap comes with some scripts you can enable! I don't normally use them since I prefer other tools, but &lt;a href="https://null-byte.wonderhowto.com/how-to/use-nmap-7-discover-vulnerabilities-launch-dos-attacks-and-more-0168788/"&gt;here's a good guide explaining them&lt;/a&gt;.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;The Fun Part: Exploitation&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VvpZEetk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.explainhownow.com/assets/images/security_updates.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VvpZEetk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.explainhownow.com/assets/images/security_updates.png" alt="zenmap scan"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that we know what's running on a host, we want to exploit it.&lt;/p&gt;

&lt;p&gt;Attacking networks is an entire topic of its own, but I'll cover some of the basics here!&lt;/p&gt;

&lt;h4&gt;Port 22: SSH&lt;/h4&gt;

&lt;p&gt;If the network has port 22 open and ssh running on it, that's a good starting point. If you can successfully manage to log in through SSH, well... that's a bad sign for the server.&lt;/p&gt;

&lt;p&gt;First off, check the version of SSH that's running (recall that you can do this with the -sV flag). Google that version and chuck in the keyword "exploit". If it's an older version of SSH, you have good chances of finding publicly available exploits that you can just copy and run.&lt;/p&gt;

&lt;p&gt;If that doesn't work, you still have a chance of getting a login. Go back to your terminal and run something like this:&lt;br&gt;
&lt;br&gt;
&lt;code&gt;ssh remote_username@remote_host&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;"remote_username" can be any number of things, but the common names I'd check for are admin and root. Try &lt;a href="https://www.esquire.com/lifestyle/a25570880/top-passwords-2018/"&gt;some common passwords&lt;/a&gt;, and also try some company-specific things (does the network admin have a dog? kids? try their names). You can also try to run a &lt;a href="https://www.offensive-security.com/metasploit-unleashed/scanner-ssh-auxiliary-modules/"&gt;bruteforce&lt;/a&gt; scan, but that's out of the scope of this post.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;Everything Else&lt;/h4&gt;

&lt;p&gt;SSH is a special case because of the severity of compromise possible if you get a login, but other services can be equally vulnerable.&lt;/p&gt;

&lt;p&gt;Once you've run an Nmap scan with version detection enabled, see if anything other than just port 80 and 443 shows up. Google the name of any services you find and figure out what they do, and if any exploits are publicly available. You know how developers joke about ripping all their work off StackOverflow? Pentesters pretty much do the same but with &lt;a href="https://www.cvedetails.com/"&gt;CVE (Common Vulnerabilities and Exposures) databases&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Once you've run out of services to Google public exploits for, you can double back and check if any of the services have login portals. For example, if the service is webmail, you can try logging in to it with netcat by trying out default usernames and passwords for that service.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;How do I fix my vulnerable server?&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://youtu.be/5V7me25aNtI?t=52"&gt;That's not my department.&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;Check out these posts though:&lt;br&gt;
&lt;/p&gt;


&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/vkolesov/how-to-protect-your-server-from-hackers-4j6l"&gt;How to Protect Your Server From Hackers, by &lt;br&gt;
Vitaliy Kolesov&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/7-security-measures-to-protect-your-servers"&gt;7 Security Measures to Protect Your Servers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/answers/security/aws-securing-ec2-instances/"&gt;Securing Amazon EC2 Instances&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;

&lt;h3&gt;Keep in touch!&lt;/h3&gt;

&lt;p&gt;Like my posts? &lt;a href="https://twitter.com/kathyra_"&gt;Check out my Twitter!&lt;/a&gt; I make bad jokes, reduce important social issues to juvenile satire, and occasionally rant about tech.&lt;/p&gt;

&lt;p&gt;Want just the tech? &lt;a href="http://eepurl.com/gj1EpH"&gt;Subscribe to my email list to get notified of when new posts are released!&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post was originally published on &lt;a href="https://www.explainhownow.com/"&gt;explainhownow.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>networks</category>
    </item>
    <item>
      <title>Protect Yourself from Social Engineering</title>
      <dc:creator>Kat Maddox</dc:creator>
      <pubDate>Sat, 06 Apr 2019 11:58:33 +0000</pubDate>
      <link>https://forem.com/ctrlshifti/protect-yourself-from-social-engineering-3ihk</link>
      <guid>https://forem.com/ctrlshifti/protect-yourself-from-social-engineering-3ihk</guid>
      <description>&lt;p&gt;&lt;em&gt;As developers, we're a prime target for social engineering scams. Hacking people is much easier than hacking infrastructures, and developers have access to things that are especially appealing to attackers.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;While this article isn't strictly about coding - or even computers at all! - every dev should know how to avoid social engineering scams to keep themselves and their projects safe.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Target audience:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Developers&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Everyone else, too&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;


&lt;h3&gt;Be Careful With Sharing on Social Media&lt;/h3&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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Ftwitter_game.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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Ftwitter_game.png" alt="twitter social engineering"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Does something about this tweet look concerning?&lt;/p&gt;

&lt;p&gt;If you guessed "answering this question pretty much gives a hacker everything they need to reset your password" - then yep. Correct.&lt;/p&gt;

&lt;p&gt;Gone are the days when tech-savvy people avoided having any online identity. Now, your Twitter name is your full name, and your workplace is in your bio (because what kind of dev doesn't love showing off?). With your name and workplace, attackers can guess your work email. If you start throwing in personal info like answers to security questions - it's over. &lt;/p&gt;

&lt;p&gt;Even if your workplace doesn't have security questions, &lt;em&gt;chances are your passwords are based on your personal info such as pet names anyway&lt;/em&gt;. &lt;a href="https://www.csoonline.com/article/2126506/79-percent-of-users-put-personal-info-in-passwords.html" rel="noopener noreferrer"&gt;79% of users admit to having personal info in their passwords&lt;/a&gt;... and that's just the ones who admit to it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Mebus/cupp" rel="noopener noreferrer"&gt;Check out CUPP&lt;/a&gt;. CUPP is a tool where you can input someone's name, pet name, child name, DOB, etc. and generate a list of potential passwords. It works. Quite well.&lt;/p&gt;

&lt;p&gt;In short: be careful with the info your share online!&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;Enable 2FA and Integrate it Into Your Projects&lt;/h3&gt;

&lt;p&gt;Wherever possible, enable 2FA on services you use, such as your Google account, bank accounts, Slack, etc. &lt;a href="https://threatpost.com/charming-kitten-iranian-2fa/139979/" rel="noopener noreferrer"&gt;While 2FA isn't perfect&lt;/a&gt;, it's pretty close.&lt;/p&gt;

&lt;p&gt;If you're working on a project that requires personal login and deals with any sensitive information, please consider coding a 2FA option into your app. Here are some resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developers.google.com/identity/" rel="noopener noreferrer"&gt;Just use Google Sign-In instead, maybe?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/google/google-authenticator" rel="noopener noreferrer"&gt;Google Authenticator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.twilio.com/docs/authy" rel="noopener noreferrer"&gt;Authy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.twilio.com/learn/account-security/the-pitfalls-of-developing-your-own-2fa" rel="noopener noreferrer"&gt;The Pitfalls Of Developing Your Own 2FA&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;


&lt;h3&gt;Don't Get Phished&lt;/h3&gt;

&lt;p&gt;Phishing is still the most popular form of social engineering. &lt;a href="https://blog.alertlogic.com/must-know-phishing-statistics-2018/" rel="noopener noreferrer"&gt;92% of malware is delivered via email&lt;/a&gt;, and &lt;a href="https://www.networkworld.com/article/2164139/how-to-blunt-spear-phishing-attacks.html" rel="noopener noreferrer"&gt;95% of attacks on enterprise networks are the result of successful spear phishing&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Many developers are still operating on the archaic belief that phishing emails are poorly written, have terrible grammar and are obviously fake. Unfortunately, phishing emails have evolved significantly in the past few years. Nowadays, many phishing emails will be excellently written and almost indistinguishable from a legitimate email.&lt;/p&gt;

&lt;p&gt;Here are some of the most common phishing scams lately:&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;Spear Phishing&lt;/h4&gt;

&lt;p&gt;Spear phishing involves selectively targetting employees, &lt;a href="https://www.teiss.co.uk/threats/developers-vulnerable-phishing-attacks/" rel="noopener noreferrer"&gt;and developers are especially vulnerable&lt;/a&gt;. Spear phishers will discover information about you, and then selectively use it against you.&lt;/p&gt;

&lt;p&gt;One of the most classic examples of spear phishing is sending fake invoices to people in finance teams. Lately, however, attackers have been expanding their reach by farming employee's social media accounts and sending them tailored email scams.&lt;/p&gt;

&lt;p&gt;Here's a fun story.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;So, I had to take a day off from work to take my dog to the vet. The team was short-staffed already, so I was feeling a little guilty. &lt;br&gt;&lt;br&gt;
I posted a pic of my dog on Instagram with the caption &lt;em&gt;"Taking Lucy to the vet today. Feeling guilty about missing work though!"&lt;/em&gt;&lt;br&gt;&lt;br&gt;
About an hour later, I got this email from my boss:&lt;br&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;"Hi [my name],&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Hope Lucy is okay! But if you miss another day of work I might have to fire you. LOL.&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Please send $15,000 to this client before COB today.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;[client details]&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Regards,&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;[boss' name]&lt;/em&gt;"&lt;br&gt;&lt;br&gt;&lt;br&gt;
I was planning on transferring the amount, but it completely slipped my mind before the end of the day. I called my boss in panic apologizing for not paying the client in time.&lt;br&gt;&lt;br&gt;
He asked me what on Earth I was talking about.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Terrifying, right?&lt;/p&gt;

&lt;p&gt;Spear phishing takes many forms and is becoming progressively more sophisticated with the rise of social media.&lt;/p&gt;

&lt;p&gt;To protect yourself from spear phishing, consider the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Was I expecting this email from this person? Have we discussed the matter through other channels previously?&lt;/li&gt;
&lt;li&gt;Does the email convey a sense of urgency?&lt;/li&gt;
&lt;li&gt;Does the email demand action from me?&lt;/li&gt;
&lt;li&gt;Can I confirm the authenticity of this email through other channels?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also, check the sender's email address for any potential typos - e.g., replacing an "i" with an "l", or an "m" with "rn". Even if the email address is perfect, remember that spoofing addresses is simple and that there's no guarantee the email came from the shown source.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;Impersonating Services&lt;/h4&gt;

&lt;p&gt;This is the most well-known form of phishing. It involves posing as a business, often styling emails to look like what that business would typically send. Here's an example with Dropbox:&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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fdropbox.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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fdropbox.png" alt="dropbox phishing"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source: &lt;a href="https://www.mailguard.com.au/blog/dropbox-phishing-180302" rel="noopener noreferrer"&gt;https://www.mailguard.com.au/blog/dropbox-phishing-180302&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Fun fact: this form of phishing is how &lt;a href="https://en.wikipedia.org/wiki/Podesta_emails" rel="noopener noreferrer"&gt;hackers got into John Podesta's email account!&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To protect yourself from this type of phishing, consider the following:&lt;/p&gt;


&lt;ul&gt;

&lt;li&gt;Does the email convey a sense of urgency, or demand action from me?&lt;/li&gt;

&lt;li&gt;Does anything look off about the sender?&lt;/li&gt;

&lt;li&gt;When I hover over links in the email, does the popup box show that they point to a strange location?&lt;/li&gt;

&lt;/ul&gt;
&lt;br&gt;

&lt;h4&gt;Smishing&lt;/h4&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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fapple_smishing.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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fapple_smishing.png" alt="apple smishing"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source: &lt;a href="https://www.welivesecurity.com/2016/11/10/apple-id-smishing-evolves-lure-victims/" rel="noopener noreferrer"&gt;https://www.welivesecurity.com/2016/11/10/apple-id-smishing-evolves-lure-victims/&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Smishing (SMS phishing) is similar to standard phishing emails, but over SMS instead. Smishing texts will usually impersonate companies and encourage you to click on a link or give away your personal info.&lt;/p&gt;

&lt;p&gt;Smishing attacks are difficult to detect, which is why the general advice is never to follow links you receive over text.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;Vishing&lt;/h4&gt;

&lt;p&gt;Vishing ("voice" and "phishing") involves phishing through phone calls. Of course, this isn't a big deal to us, because what kind of developer seriously answers the phone nowadays? Just send me a text, FFS.&lt;/p&gt;

&lt;p&gt;Most vishing relies on spoofing the caller ID to appear as a legitimate source. In a recent scam, &lt;a href="https://krebsonsecurity.com/2019/01/apple-phone-phishing-scams-getting-better/" rel="noopener noreferrer"&gt;attackers have been spoofing Apple&lt;/a&gt;. Phone calls coming from these scammers appear entirely legitimate, featuring "Apple Inc" as the caller name, and even showing Apple's logo. Victims would be prompted to share their personal information, and potentially make credit card purchases.&lt;/p&gt;

&lt;p&gt;To avoid vishing, consider:&lt;/p&gt;


&lt;ul&gt;

&lt;li&gt;Was I expecting this phone call?&lt;/li&gt;

&lt;li&gt;Does the call convey a sense of urgency, or demand action from me?&lt;/li&gt;

&lt;li&gt;Is the caller asking for my personal information?&lt;/li&gt;

&lt;/ul&gt;
&lt;br&gt;

&lt;h4&gt;Socialshing&lt;/h4&gt;

&lt;p&gt;Okay, I made that word up. But social media phishing is beginning to become a big deal. Here are some of the tactics to watch out for:&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;strong&gt;LinkedIn Contact Compromise:&lt;/strong&gt;&lt;br&gt;
In this attack, a hacker has already compromised one of your contacts. Through the contact, they leverage the trust you have and send you a message asking you to follow a link.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Infamy Video:&lt;/strong&gt;&lt;br&gt;
A compromised contact, usually on Facebook, will send you a message with a link. They'll claim the link is a video of you doing something embarrassing, with a very high view count. If you click on the link, it'll redirect you to a fake Facebook login page.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Twitter Baiting:&lt;/strong&gt;&lt;br&gt;
An attacker will find a Twitter comment thread where a legitimate company is interacting with some users. The attacker will set the same display name and profile picture as the company, then insert themselves into the thread, usually encouraging users to click on a malicious link.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;Automate, Automate, Automate&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;... &lt;a href="https://www.teiss.co.uk/threats/developers-vulnerable-phishing-attacks/" rel="noopener noreferrer"&gt;the security of software applications should not be entrusted completely to developers. Instead, as Podjarny said, companies should introduce automation into security controls, implement automatic malware-detection scans, multi-factor authentication, and auto-expiring access tokens to ensure attackers are not able to gain access to or to inject malware into sensitive software programmes.&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Where possible, try to integrate automation into your security practices. Humans can only be so aware, and there's a lot of awesome apps out there that help fill the gaps. Enable 2FA, install a password manager if you haven't already, and scan your networks regularly.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;Stay Safe!&lt;/h3&gt;

&lt;p&gt;The world is a scary place, and everyone is out to get you. Try to stay up to date on the latest phishing scams, as attackers are continually learning and are never too far behind us.&lt;/p&gt;

&lt;p&gt;Happy hacking!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post was originally published on &lt;a href="https://www.explainhownow.com/" rel="noopener noreferrer"&gt;explainhownow.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>beginners</category>
    </item>
    <item>
      <title>What Security Through Obscurity Is, and Why It's Evil</title>
      <dc:creator>Kat Maddox</dc:creator>
      <pubDate>Sun, 31 Mar 2019 07:17:08 +0000</pubDate>
      <link>https://forem.com/ctrlshifti/what-security-through-obscurity-is-and-why-it-s-evil-47d5</link>
      <guid>https://forem.com/ctrlshifti/what-security-through-obscurity-is-and-why-it-s-evil-47d5</guid>
      <description>&lt;p&gt;This article is an explanation of what security through obscurity is, why it's terrible if it's your only defense, and some ways in which you might be using it in your webapps. If you do pentesting, this will give you some tips on where to look in webapps to find examples of poor security you can exploit.&lt;br&gt;
&lt;/p&gt;
&lt;br&gt;
&lt;em&gt;Target audience:&lt;/em&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Webapp developer, or&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Beginner pentester&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;


&lt;h3&gt;What is Security Through Obscurity?&lt;/h3&gt;

&lt;p&gt;Security through obscurity is the reliance on secrecy and confusing attackers instead of building proper controls to keep them out.&lt;/p&gt;

&lt;p&gt;Let's take a real-world example.&lt;/p&gt;

&lt;p&gt;Say you're a teenager again, and you've got a particular folder of files that you'd rather your parents don't find. You know the kind.&lt;/p&gt;

&lt;p&gt;You probably hid this folder behind a whole bunch of other folders and named it something boring. And you might have felt very confident knowing that there's no reason your parents would ever look in the "homework" directory. &lt;/p&gt;

&lt;p&gt;This would be security through obscurity. It might work for a while, but the moment anyone checks the "Frequent Files" section of Windows Explorer, your secret's out. A much better bet would have been to password protect your files.&lt;/p&gt;

&lt;p&gt;In computing, security through obscurity is used more commonly than you'd expect. Here are some of the most harmful examples of security through obscurity I've seen. &lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;Reliance on Robots.txt&lt;/h3&gt;

&lt;p&gt;Robots.txt is a file located at the root of your domain, e.g., &lt;code&gt;mywebsite.com/robots.txt&lt;/code&gt;. Robots.txt is used to tell search engines such as Google not to crawl certain sections of your website. A robots.txt might look something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User-agent: *
Disallow: /super-secret-passwords/
Disallow: /secret-admin-access-panel/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All this does is prevent Google from crawling those pages! It doesn't ward away hackers. Checking for a robots.txt file is one of the first things a malicious person might do - and where do you think they're going next when they see you've told Google not to crawl "super-secret-passwords/"?&lt;/p&gt;

&lt;p&gt;Instead, if you want a page to not show up in results, add a &lt;a href="https://support.google.com/webmasters/answer/93710?hl=en" rel="noopener noreferrer"&gt;noindex metatag&lt;/a&gt; to the page. Better yet, if anyone other than you shouldn't see a page, make sure it's behind a secure login page. Also consider IP-restricting it if you don't move around too much.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;Hiding Common Wordpress Files&lt;/h3&gt;

&lt;p&gt;Some Wordpress websites try to conceal the fact that they're running Wordpress. Common ways of doing this include removing Wordpress' &lt;em&gt;readme.html&lt;/em&gt; file and renaming folders such as &lt;em&gt;wp-admin&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;While these might deter a novice attacker, any hacker worth their internet connection will be able to figure out that you're running Wordpress by checking your CSS. &lt;/p&gt;

&lt;p&gt;The alternative? Honestly, don't bother too much. Hiding the fact that you're using Wordpress isn't as important as just keeping your Wordpress and plugins updated. If you have a Wordpress website, try running &lt;a href="https://github.com/wpscanteam/wpscan" rel="noopener noreferrer"&gt;wpscan&lt;/a&gt; on it to see if there are any glaring vulnerabilities you should fix.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;Hiding Insecure Code in Subdomains&lt;/h3&gt;

&lt;p&gt;Say there's a part of your website that you want to hide - maybe some insecure code that you still need to test, or some admin controls. One of the ways you might do this is stowing it away in a subdomain.&lt;/p&gt;

&lt;p&gt;This is fine, as long as it &lt;em&gt;isn't your only method of security&lt;/em&gt;. If the subdomain requires a secure login and is IP-restricted, you're a-okay. But just putting your insecure code behind a random subdomain with no other controls is a terrible idea. &lt;a href="https://www.explainhownow.com/2019/how-to-find-subdomains/" rel="noopener noreferrer"&gt;I explain why in this post&lt;/a&gt;.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;Rolling Your Own Crypto&lt;/h3&gt;

&lt;p&gt;Surely, &lt;a href="https://www.google.com/search?client=firefox-b-d&amp;amp;q=lindy+effect" rel="noopener noreferrer"&gt;given how long all those other hashing algorithms have been around for&lt;/a&gt;, they must be insecure by now, right? Maybe it's better to make your own.&lt;/p&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;No, no no no.&lt;/p&gt;

&lt;p&gt;No no no.&lt;br&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.explainhownow.com%2Fassets%2Fimages%2Frolling_crypto.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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Frolling_crypto.png" alt="rolling your own crypto image"&gt;&lt;/a&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;Unless you SERIOUSLY know what you're doing, don't try to make your own encryption or hashing algorithm. The current popular algorithms have been properly vetted by the security community and are &lt;em&gt;much&lt;/em&gt; more secure than anything you could make on your own. If you make your own algorithm, it's likely to contain serious mistakes that you might be overlooking. Please, just don't.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;Relying on Obscure Database Names&lt;/h3&gt;

&lt;p&gt;Sure, maybe renaming your "User" SQL database column to something more esoteric will make it a little bit harder for attackers to perform &lt;a href="https://www.incapsula.com/web-application-security/sql-injection.html" rel="noopener noreferrer"&gt;SQLi&lt;/a&gt;. But if SQLi is possible on your site, &lt;em&gt;fixing the vulnerability&lt;/em&gt; should be your main concern. &lt;/p&gt;

&lt;p&gt;If you're not sure whether or not your site is vulnerable to SQLi, check out &lt;a href="https://github.com/sqlmapproject/sqlmap" rel="noopener noreferrer"&gt;sqlmap&lt;/a&gt;.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;Secret Parameters&lt;/h3&gt;

&lt;p&gt;This is one of my favorites because of how often &lt;a href="https://www.youtube.com/watch?v=8ev9ZX9J45A" rel="noopener noreferrer"&gt;CTFs&lt;/a&gt; use it, but it also occurs in the real world.&lt;/p&gt;

&lt;p&gt;Say you've got &lt;code&gt;http://mywebsite.com/normalpage&lt;/code&gt;, but when you navigate to &lt;code&gt;http://mywebsite.com/normalpage?admin=true&lt;/code&gt;, admin access is enabled. &lt;/p&gt;

&lt;p&gt;An average user might not try to add the admin parameter, but any half-decent hacker with a fuzzing tool will find it in minutes. Using secret parameters to control access to hidden content is a bad idea.&lt;/p&gt;

&lt;p&gt;Of course, "admin" isn't such a secret word. What if the control parameter was instead something like &lt;code&gt;http://mywebsite.com/normalpage?230j7x9832nnc=true&lt;/code&gt;?&lt;/p&gt;

&lt;p&gt;Now it's pretty much the same as having a password, right? Nope. The main issue you're facing now is that if your page links to anywhere else, your secret parameter has a chance of showing up as a &lt;em&gt;Referer&lt;/em&gt; heading, which wouldn't have been an issue if you had just implemented a standard login panel.&lt;/p&gt;

&lt;p&gt;If you &lt;em&gt;must&lt;/em&gt; do this, for whatever reason, maybe instead consider moving the parameter to be in the body of a POST request instead.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;An Aside&lt;/h3&gt;

&lt;p&gt;Of course, obscurity certainly has its place in webapp design. It's perfectly reasonable to put sensitive code on a subdomain or remove references to your backend. The key consideration is that this should &lt;em&gt;not&lt;/em&gt; be your only line of defense.&lt;/p&gt;

&lt;p&gt;You can ensure you're using obscurity appropriately by also implementing standard access controls, and just generally following best security practices. Remember: if the only thing between you and the hacker is obscurity, then the only thing between the hacker and you is time.&lt;/p&gt;

&lt;p&gt;If you're interested in upping your security skills, check out my other post on &lt;a href="https://www.explainhownow.com/2019/learn-penetration-testing/" rel="noopener noreferrer"&gt;how to get into penetration testing&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Happy hacking!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post was originally published on &lt;a href="https://www.explainhownow.com/" rel="noopener noreferrer"&gt;explainhownow.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>beginners</category>
      <category>webappsecurity</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How to Find Subdomains on a Website (And Why You Should)</title>
      <dc:creator>Kat Maddox</dc:creator>
      <pubDate>Mon, 25 Mar 2019 04:51:35 +0000</pubDate>
      <link>https://forem.com/ctrlshifti/how-to-find-subdomains-and-why-you-should-3he1</link>
      <guid>https://forem.com/ctrlshifti/how-to-find-subdomains-and-why-you-should-3he1</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a guide to discovering website subdomains. I'll be going over the basics of what subdomains are, why you should be searching for them, and how to actually find them.&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;
&lt;br&gt;
&lt;em&gt;Assumed knowledge:&lt;/em&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Basic Linux/Unix commands&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;


&lt;h3&gt;What are Subdomains?&lt;/h3&gt;

&lt;p&gt;On the surface, a subdomain is just an additional, prepended part to a domain name. In the example "&lt;em&gt;dev.mytotallysecurewebsite.com&lt;/em&gt;", "&lt;em&gt;mytotallysecurewebsite.com&lt;/em&gt;" is the root domain and "&lt;em&gt;dev&lt;/em&gt;" is the subdomain.&lt;/p&gt;

&lt;p&gt;As a developer, creating subdomains allows you to make a totally independent site, but still use your root domain. For example, it's common to create a subdomain where you test new features that aren't ready to be deployed on the official website yet. &lt;/p&gt;

&lt;p&gt;Development subdomains are often used to "hide" new and untested features. By just visiting &lt;em&gt;mytotallysecurewebsite.com&lt;/em&gt;, an average user has no way of knowing that something like &lt;em&gt;dev.mytotallysecurewebsite.com&lt;/em&gt; exists.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;Why Should I Find Subdomains?&lt;/h3&gt;

&lt;p&gt;Usually, a development/testing subdomain is the developer's dirty little secret. Many companies will put a lot of money and effort into making sure their root domain is as secure as possible, but then totally neglect their subdomains under the assumption that they'll never be discovered.&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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fsubdomains_nolooking.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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fsubdomains_nolooking.png" alt="subdomains no looking"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But without proper controls such as firewalls, subdomains will eventually be found. You can't hide anything from Google - or a particularly curious hacker.&lt;/p&gt;

&lt;p&gt;If you're a developer with "hidden" subdomains, it's good practice to run your site against some subdomain enumerators. Because if you can find it, someone else probably already has.&lt;/p&gt;

&lt;p&gt;As a pentester, subdomain enumeration is going to be a critical part of your reconnaissance. Subdomains are likely to contain A LOT more vulnerabilities than the root domain. Searching for subdomains is one of the first things I do when deciding how I'll be testing a website.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;Find Subdomains Using Google&lt;/h3&gt;

&lt;p&gt;I don't know why you'd do this instead of just using an automated tool. But here's how.&lt;/p&gt;

&lt;p&gt;Using Google's "site:" filter, we can see some of the subdomains Google has discovered for a site.&lt;br&gt;&lt;br&gt;&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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fgoogle1.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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fgoogle1.png" alt="subdomains with google"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;We can then add the "-inurl:" filter to exclude the subdomains we've already found, allowing us to see more.&lt;br&gt;&lt;br&gt;&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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fgoogle2.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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fgoogle2.png" alt="subdomains with google"&gt;&lt;/a&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;You can keep iterating like this until you run out of subdomains, or get bored and just use an automatic tool instead. There are hundreds of decent subdomain enumeration tools, so instead of just dumping a bunch of them on you, I'll list only the ones I regularly use. Please don't yell at me if I missed your favorite!&lt;/p&gt;

&lt;p&gt;Disclaimer: some of these tools are brute force and will trigger alarms. Alarms can be fine in some cases, but &lt;a href="https://www.google.com/search?client=firefox-b-d&amp;amp;q=prison" rel="noopener noreferrer"&gt;unideal&lt;/a&gt; in others.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;Censys.io&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://censys.io/" rel="noopener noreferrer"&gt;Censys.io&lt;/a&gt; is a pretty awesome tool that gives you a lot of information about a website. It can be used to potentially find subdomains with the following search string: &lt;a href="https://censys.io/certificates?q=.examplesite.com" rel="noopener noreferrer"&gt;https://censys.io/certificates?q=.examplesite.com&lt;/a&gt;&lt;br&gt;&lt;br&gt;&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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fcensys.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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fcensys.png" alt="subdomains with censys.io"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;There's also a &lt;a href="https://github.com/christophetd/censys-subdomain-finder" rel="noopener noreferrer"&gt;decent tool on Github&lt;/a&gt; for automatically finding subdomains with Censys.io certificates.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;Pentest-Tools&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://pentest-tools.com/information-gathering/find-subdomains-of-domain" rel="noopener noreferrer"&gt;Pentest-Tools&lt;/a&gt; is another web app that finds subdomains. It's pretty easy to use - just type in the root domain and hit scan.&lt;br&gt;&lt;br&gt;&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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fpentest-tools.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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fpentest-tools.png" alt="subdomains with pentest-tools"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;Aquatone&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/ehsahil/recon-my-way/tree/master/aquatone" rel="noopener noreferrer"&gt;Aquatone-discover&lt;/a&gt; is one of my favorite subdomain tools. It takes a bit of time to run, but it's generally pretty robust and will yield a lot of results. Usually, I'll run Aquatone-discover first, and then get the other tools going while I wait for Aquatone to finish.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;Sublist3r&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/aboul3la/Sublist3r" rel="noopener noreferrer"&gt;Sublist3r&lt;/a&gt; is seriously amazing. Sublist3r uses open-source intelligence to find subdomains and will usually give you results within minutes. It's great for when you're itching to get started. By the time my other tools are done running, I've usually already taken a quick look at all the domains Sublist3r has given me.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;Scavenging&lt;/h3&gt;

&lt;p&gt;Face it - you're probably not the best hacker out there. Anything you're doing, someone else might have already done better.&lt;/p&gt;

&lt;p&gt;One of the things I like to try is Googling "site:github.com hosts example.com", or just "site:github.com" with one or two subdomains that I've already discovered. If you're lucky, someone has probably already made a dump of subdomains for the site you're testing (or unlucky, if this is a site you own).&lt;br&gt;&lt;br&gt;&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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fyahoo.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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fyahoo.png" alt="subdomains with scavenging"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;Apart from searching in Github, Pastebin can have results too. This is a great way to save yourself a bit of effort if you're doing bug bounties where many pentesters have already checked out the site.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;Putting it All Together&lt;/h3&gt;

&lt;p&gt;If you're a web developer and have subdomains, runnings scans on your website is a great way to check how exposed you are. Don't assume that no one will find your subdomains just because you've configured your robots.txt.&lt;/p&gt;

&lt;p&gt;If you're a pentester, this is a vital step to understanding the attack surface of your target. If you're doing bug bounties with wide scopes, sometimes it's worthwhile to even ignore the official domain altogether and only focus your efforts on the subdomains.&lt;/p&gt;

&lt;p&gt;Happy hacking!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post was originally published on &lt;a href="https://www.explainhownow.com/" rel="noopener noreferrer"&gt;explainhownow.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>beginners</category>
      <category>dns</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How to Learn Penetration Testing: A Beginners Tutorial</title>
      <dc:creator>Kat Maddox</dc:creator>
      <pubDate>Fri, 15 Mar 2019 11:57:02 +0000</pubDate>
      <link>https://forem.com/ctrlshifti/how-to-learn-penetration-testing-a-beginners-tutorial-505a</link>
      <guid>https://forem.com/ctrlshifti/how-to-learn-penetration-testing-a-beginners-tutorial-505a</guid>
      <description>&lt;p&gt;&lt;em&gt;Disclaimer: Hacking is a difficult skill to learn. You will not become a good pentester by just doing a few online courses. You will not become a good pentester by just installing Kali Linux and learning how to use the tools. This is a challenging path, wrought with endless frustrations, and you will not learn how to travel it well within a day - a month - or even a year. However, if you're determined, you'll find pentesting to be an incredibly rewarding field and you might never want to leave.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;In this tutorial, I'll specifically cover the&lt;/em&gt; &lt;strong&gt;&lt;em&gt;web application hacking&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;side of penetration testing. This is a guide for ethical hacking. If you're doing the unethical sort, I'd really rather you not. Or at least give me part of your profits, please.&lt;/em&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Assumed knowledge:&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Basic technical background (Unix commands, some software development skills)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Intense desire to break things&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;


&lt;h4&gt;0 - The Background Knowledge&lt;/h4&gt;

&lt;p&gt;Some CS101 knowledge is a must. Trying to learn how to hack without even being comfortable with Unix commands wouldn't just be like trying to run before you can walk. It'd be like flying an A380 without knowing which direction up is. &lt;br&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fpentest_pilot.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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fpentest_pilot.png" alt="communication skills"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you try to jump into pentesting without the necessary prior knowledge and "fill the gaps" as you go along, you'll struggle needlessly. Here's what you'll need to know:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to Linux&lt;/strong&gt;: The main power of Linux/Unix for coding and pentesting comes from the terminal and the sheer number of tools available. You can &lt;em&gt;try&lt;/em&gt; to do everything you need in Windows, but it's not going to be easy - and if you're getting into pentesting, you'll need to know some Linux eventually. Trust me: if you get a job in security and your coworkers find out you've never used Linux, they'll laugh at you forever.&lt;/p&gt;

&lt;p&gt;You have three main options here: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Get an install of a Linux distribution (such as Ubuntu). Your best option for this is to download a virtual machine software where you can contain your Linux install (links down below).&lt;/li&gt;
&lt;li&gt;Keep using macOS, if you have it. You can &lt;a href="https://www.google.com/search?client=firefox-b-d&amp;amp;q=pc+masterrace" rel="noopener noreferrer"&gt;make do&lt;/a&gt; with this since the terminal and tools on Macs are pretty much the same as Linux. &lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use &lt;a href="https://tutorials.ubuntu.com/tutorial/tutorial-ubuntu-on-windows" rel="noopener noreferrer"&gt;Ubuntu on Windows 10&lt;/a&gt;. I'd consider this the worst option for a beginner because it can be pretty unreliable when it comes to installing tools, and getting the GUI to work can sometimes be a nightmare.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.virtualbox.org/" rel="noopener noreferrer"&gt;VirtualBox&lt;/a&gt;: Free virtual machine software&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.ubuntu.com/" rel="noopener noreferrer"&gt;Ubuntu&lt;/a&gt;: Decent Linux starting distro&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://itsfoss.com/install-linux-in-virtualbox/" rel="noopener noreferrer"&gt;Install Ubuntu in VirtualBox&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://www.ee.surrey.ac.uk/Teaching/Unix/" rel="noopener noreferrer"&gt;Unix commands for Beginners&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;br&gt;&lt;strong&gt;How to Code&lt;/strong&gt;: Now that you have your environment set up, we can get to the fun bit! Learning some basic coding skills is essential to pentesting. If you want to learn how to break it, first learn how to make it. For web application pentesting, you'll want to learn some full stack stuff such as HTML, CSS, Javascript, and Python. Python has the added benefit of being a great language for scripting and will allow you to write your own pentesting tools (exciting!).&lt;br&gt;
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/applantic/getting-started-with-front-end-development-in-2018-6ce4993926d8" rel="noopener noreferrer"&gt;Learn front-end&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.python-guide.org/intro/learning/" rel="noopener noreferrer"&gt;Learn Python&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;


&lt;h4&gt;1 - Set up Your Environment&lt;/h4&gt;

&lt;p&gt;If you're a dev, you probably have your perfect setup already. Gratz! The way to go here is usually Linux or Mac. Personally, I use Ubuntu on Windows 10 (sue me) but only because I know all my favorite tools work on it. &lt;/p&gt;

&lt;p&gt;Many beginners start with Kali, but I recommend against this. Part of becoming a confident pentester is building your library of tools. Kali hands you a bunch of tools, none of which you'll really understand and appreciate.&lt;/p&gt;

&lt;p&gt;But whatever you're doing, it's &lt;em&gt;absolutely crucial&lt;/em&gt; that you have a comfortable setup. Take some time now to fix any issues you might have in your setup (like bootloaders, window managers, GUI, etc). Pentesting can get messy when you have countless windows and complicated tools open, and the last thing you need is your own environment working against you.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;2 - Learn the Theory&lt;/h4&gt;

&lt;p&gt;No way around this one. Even in just web application hacking, there's a whole breadth of knowledge you need to know. I'd split web hacking knowledge into two categories: The Basics, and the Nifty Tricks. The Basics are what you should learn first from books, videos, online tutorials, etc. &lt;/p&gt;

&lt;p&gt;Unfortunately, given how quickly the world of hacking moves, most competent websites are already secure against The Basics (but you still need to know them!). The Nifty Tricks are the real moneymakers. You'll learn these later through browsing experienced pentesters blogs, joining ethical hacking communities, and obscure Youtube videos. If you're the first to discover a Nifty Trick, you get a place in &lt;a href="https://www.cvedetails.com/" rel="noopener noreferrer"&gt;The Hall of Fame&lt;/a&gt; and &lt;a href="https://www.google.com/search?client=firefox-b-d&amp;amp;q=black+market" rel="noopener noreferrer"&gt;maybe lots of money&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here are some great resources for The Basics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com.au/Web-Application-Hackers-Handbook-Exploiting/dp/1118026470" rel="noopener noreferrer"&gt;The Web Application Hacker's Handbook&lt;/a&gt;: This is a great starting point. This covers almost all the basics you need. But don't bother with the "lab" that comes with the book. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.owasp.org/images/1/19/OTGv4.pdf" rel="noopener noreferrer"&gt;OWASP's Testing Guide&lt;/a&gt;: OWASP is a key player in web application hacking, and this guide is &lt;em&gt;immense&lt;/em&gt;. It has a lot of what you'd need to know.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=2TofunAI6fU" rel="noopener noreferrer"&gt;LiveOverflow on Youtube&lt;/a&gt;: This guy is great - he covers a lot of The Basics and also plenty of Nifty Tricks.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.hacksplaining.com/lessons" rel="noopener noreferrer"&gt;Hacksplaining&lt;/a&gt;: Lots of info on different vulnerabilities.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://sechub.io/" rel="noopener noreferrer"&gt;SecHub&lt;/a&gt;: A compilation of a bunch of different exploits, with writeups too! Super cool.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.geeksforgeeks.org/computer-network-tcpip-model/" rel="noopener noreferrer"&gt;Learn the HTTP TCP/IP Model&lt;/a&gt;, &lt;a href="https://commotionwireless.net/docs/cck/networking/learn-networking-basics/" rel="noopener noreferrer"&gt;basic networking&lt;/a&gt;, and &lt;a href="https://www.ntu.edu.sg/home/ehchua/programming/webprogramming/HTTP_Basics.html" rel="noopener noreferrer"&gt;packets&lt;/a&gt;. You'll need this, trust me.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you've learned and practiced The Basics (more on how to practice in the next section), you can move on to learning some Nifty Tricks. Some resources:&lt;/p&gt;


&lt;ul&gt;

&lt;li&gt;

&lt;a href="https://www.youtube.com/watch?v=-FAjxUOKbdI" rel="noopener noreferrer"&gt;DEF CON videos are great&lt;/a&gt;.&lt;/li&gt;

&lt;li&gt;

&lt;a href="https://medium.com/bugbountywriteup/tagged/web-application-security" rel="noopener noreferrer"&gt;Vulnerability writeups&lt;/a&gt;: There's a lot of places to find them, and Medium can be a good one. Check out &lt;a href="https://www.reddit.com/r/netsec" rel="noopener noreferrer"&gt;r/Netsec&lt;/a&gt; too. Also Google the vulnerability you want to learn more about with the word "writeup" or "POC" appended, e.g. "XSS writeup". You'll find posts from very clever people about new ways they've found to exploit stuff.&lt;/li&gt;

&lt;li&gt;Look for pentesting communities and join them. Hacking, surprisingly, is a very social field, and a lot of cool tricks can be learned just by talking to other pentesters.&lt;/li&gt;

&lt;/ul&gt;
&lt;br&gt;

&lt;h4&gt;3 - Practice with CTFs and Wargames&lt;/h4&gt;

&lt;p&gt;This is the fun bit. Once you have some theory down, you can start practicing by doing hacking challenges. These are vulnerable web applications with hidden "flags" that you find by exploiting the application. &lt;/p&gt;

&lt;p&gt;CTF (Capture the Flag) competitions are live events with scoreboards and teams, while wargames are less competitive and are more like playgrounds to practice your skills on.&lt;/p&gt;

&lt;p&gt;Check out &lt;a href="https://ctftime.org/ctfs" rel="noopener noreferrer"&gt;CTFtime&lt;/a&gt; for current and upcoming CTFs, although most of these will be too difficult for a beginner. Good wargames are &lt;a href="https://www.owasp.org/index.php/Category:OWASP_WebGoat_Project" rel="noopener noreferrer"&gt;OWASP's WebGoat&lt;/a&gt; and &lt;a href="http://overthewire.org/wargames/natas/natas0.html" rel="noopener noreferrer"&gt;OverTheWire&lt;/a&gt;. Also check out &lt;a href="https://www.owasp.org/index.php/OWASP_Juice_Shop_Project" rel="noopener noreferrer"&gt;OWASP's Juice Shop&lt;/a&gt;, &lt;a href="https://ctf.hacker101.com/" rel="noopener noreferrer"&gt;Hacker101 CTF&lt;/a&gt;, &lt;a href="https://www.hackthebox.eu/" rel="noopener noreferrer"&gt;Hack The Box&lt;/a&gt;, and &lt;a href="https://xss-game.appspot.com/" rel="noopener noreferrer"&gt;Google's XSS game&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;While fun and a great way to learn, note that the skills you need for wargames/CTFs are somewhat different from the skills you need for real-life applications such as bug bounties. It's possible to be a top scorer in CTFs, but be utterly incapable of doing bug bounties (this was me for a while) and vice versa. &lt;/p&gt;

&lt;p&gt;Wargames are to bug bounties what Civ5 is to running an actual country. Wargames teach you some excellent strategy and puzzle solving skills, but real life is a different landscape - more on this in Section 5.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;4 - Get Good at Scripting&lt;/h4&gt;

&lt;p&gt;This will make your life much, much easier. Python is amazing as a scripting language, especially for hacking. A lot of CTFs and bug bounties will require brute force actions such as sending many packets and hashing, all of which can be done easily by writing your own Python scripts.&lt;/p&gt;

&lt;p&gt;Check out &lt;a href="https://github.com/Gallopsled/pwntools" rel="noopener noreferrer"&gt;pwntools&lt;/a&gt;, a Python CTF framework. It simplifies exploit writing! &lt;a href="http://docs.pwntools.com/en/stable/tubes/sockets.html" rel="noopener noreferrer"&gt;Here's&lt;/a&gt; how you send packets.&lt;/p&gt;

&lt;p&gt;I recommend making a folder where you keep your own Python scripts and build on them over time. I really can't understate how much time this will save you.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;5 - The Real World and Bug Bounties&lt;/h4&gt;

&lt;p&gt;At some point, you'll get the flag for your first moderately difficult CTF challenge without having to Google the solution. And you'll feel amazing. Likely, you'd have spent hours and hours on it, and finally figuring out the answer on your own will be a feeling that'll get you hooked on pentesting forever. &lt;/p&gt;

&lt;p&gt;You're a hunter now. Fierce. Unstoppable.&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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fpentest_hunter.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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fpentest_hunter.png" alt="communication skills"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You might even think that you're ready to start making money now. But once you check bug bounty sites, you'll realize you have no idea what you're doing. There are no clues telling you where vulnerabilities are. There's such a wide attack surface that you don't even know where to start. And thousands of better hackers have already wiped the site clean.&lt;/p&gt;

&lt;p&gt;As disheartening as it might be, this is the point where the fun really starts. You're out of the playground and ready to play with the big kids now. A good starting point is watching &lt;a href="https://www.youtube.com/watch?v=-FAjxUOKbdI" rel="noopener noreferrer"&gt;this DEF CON video I linked earlier&lt;/a&gt; and digging into finding good tools and more Nifty Tricks. &lt;/p&gt;

&lt;p&gt;Now is the time to start learning web reconnaissance. It's covered well in the DEF CON video, and you'll learn more about it as you build your library of recon tools.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;6 - Know thy Tools&lt;/h4&gt;

&lt;p&gt;Tools don't make a hacker. But you're probably not going to get too far without them.&lt;/p&gt;

&lt;p&gt;I recommend starting off with just downloading a couple of the "mandatory" tools like &lt;a href="https://nmap.org/download.html" rel="noopener noreferrer"&gt;Nmap&lt;/a&gt; and &lt;a href="https://portswigger.net/burp" rel="noopener noreferrer"&gt;Burp Suite&lt;/a&gt;. Nmap is a discovery tool that finds hosts and open ports on domains, generally giving you a good feel for what the network looks like. And Burp Suite is your new best friend. Seriously. It's the #1 multitool of web hacking. Its main use is capturing and editing packets, but it does so much more. I really can't give it justice in this blog post - just google it and watch some tutorial videos. &lt;/p&gt;

&lt;p&gt;After those two, it's up to you to find (or make) the tools that suit you best. Here are some of my favorites:&lt;/p&gt;


&lt;ul&gt;

&lt;li&gt;

&lt;a href="https://github.com/aboul3la/Sublist3r" rel="noopener noreferrer"&gt;Sublist3r&lt;/a&gt;: I'm absolutely in love with this subdomain enumerator. It's crazy quick and finds a bunch of stuff.&lt;/li&gt;

&lt;li&gt;

&lt;a href="https://github.com/michenriksen/aquatone" rel="noopener noreferrer"&gt;Aquatone&lt;/a&gt;: Similar to Sublist3r but much more robust. Trades speed for power; I usually run Sublist3r first and then keep Aquatone in the background.&lt;/li&gt;

&lt;li&gt;

&lt;a href="https://github.com/maurosoria/dirsearch" rel="noopener noreferrer"&gt;dirsearch&lt;/a&gt;: Directory bruteforcer.&lt;/li&gt;

&lt;li&gt;

&lt;a href="https://github.com/GerbenJavado/LinkFinder" rel="noopener noreferrer"&gt;LinkFinder&lt;/a&gt;: Discovers endpoints in Javascript files.&lt;/li&gt;

&lt;li&gt;

&lt;a href="https://hackertarget.com/recon-ng-tutorial/" rel="noopener noreferrer"&gt;recon-ng&lt;/a&gt;: An entire framework for web reconnaissance that does pretty much everything. Will probably walk your dog and cook dinner for you if you find the right setting.&lt;/li&gt;

&lt;li&gt;

&lt;a href="https://github.com/danielmiessler/SecLists" rel="noopener noreferrer"&gt;SecLists&lt;/a&gt;: Not a tool per se, but a collection of lists for bruteforcing. Pretty much a staple of web pentesting - I'd almost put it in the mandatory section.&lt;/li&gt;

&lt;li&gt;&lt;a href="https://open.spotify.com/playlist/0Jt2JW0NTIL6MvV9dSOnqZ" rel="noopener noreferrer"&gt;Spotify hacking mixtapes for feeling cool&lt;/a&gt;&lt;/li&gt;

&lt;/ul&gt;
&lt;br&gt;

&lt;h4&gt;7 - Keep Hacking&lt;/h4&gt;

&lt;p&gt;I told you it'd be difficult, didn't I?&lt;/p&gt;

&lt;p&gt;Pentesting is challenging, confusing, and overall just frustrating. But if this is something you really want to do, you'll find ways to overcome all of that.&lt;/p&gt;

&lt;p&gt;Try to join communities, such as the ones on &lt;a href="https://twitter.com/Bugcrowd/lists/security-researchers/members" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; and &lt;a href="https://forum.bugcrowd.com" rel="noopener noreferrer"&gt;Bugcrowd&lt;/a&gt;, since the journey is always more fun with others.&lt;/p&gt;

&lt;p&gt;And remember: this is a field that &lt;em&gt;really&lt;/em&gt; matters. It's rewarding, and you'll be doing legitimate good for the world. Blackhat hackers are learning every day too, and the ethical hacking community needs all the help it can get. Good luck, and godspeed!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post was originally published on &lt;a href="https://www.explainhownow.com/" rel="noopener noreferrer"&gt;explainhownow.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>beginners</category>
      <category>webappsecurity</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Quick Tips for Coding Interviews</title>
      <dc:creator>Kat Maddox</dc:creator>
      <pubDate>Wed, 13 Mar 2019 21:31:48 +0000</pubDate>
      <link>https://forem.com/ctrlshifti/quick-tips-for-coding-interviews-jhb</link>
      <guid>https://forem.com/ctrlshifti/quick-tips-for-coding-interviews-jhb</guid>
      <description>&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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fcodinginterview.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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fcodinginterview.png" alt="coding"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Coding interviews suck. I've gone through plenty, including some with Microsoft, and I can confidently say: I hate them and I think they're a terrible idea. Unfortunately, they're not going away anytime soon, and if you're here you've probably got one coming up soon. Here's how to survive it!&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;1 - Be Prepared&lt;/h4&gt;

&lt;p&gt;Make sure you refresh all your first-year compsci knowledge. Many coding interviews, particularly with Microsoft in my experience, will want to see you demonstrate knowledge about sorting algorithms, operations on binary trees, recursion, linked lists, etc. You know - all that boring stuff you covered years ago and then forgot. &lt;/p&gt;

&lt;p&gt;Get on &lt;a href="https://www.hackerrank.com/" rel="noopener noreferrer"&gt;HackerRank&lt;/a&gt; and start doing some challenges, and make sure you pick one language to focus on so you're not messing up your syntax during the interview. I use Python since it's easy to write and most interviewers should accept it.&lt;/p&gt;

&lt;p&gt;Other than that, read up on the theoretical concepts such as &lt;a href="http://bigocheatsheet.com/" rel="noopener noreferrer"&gt;Big O Complexity&lt;/a&gt;, since it's not uncommon for interviewers to ask questions on this.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;2 - Don't be Overprepared&lt;/h4&gt;

&lt;p&gt;Yes - it's possible, and it's just as bad as being under-prepared. I define this as spending any more than 40 hours in a week studying, but YMMV. There are three key reasons why you shouldn't overprepare for coding interviews.&lt;br&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Reason 1: Studying too hard for long stretches of time is inefficient&lt;/strong&gt;. &lt;a href="https://www.nyu.edu/about/news-publications/news/2010/january/a_mind_at_rest_strengthens.html" rel="noopener noreferrer"&gt;Research shows&lt;/a&gt; that your brain needs rest to encourage memory retention. There's a certain point where studying just doesn't help you anymore, and it looks a little something like this:&lt;br&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.explainhownow.com%2Fassets%2Fimages%2Ftime_spent_studying.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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Ftime_spent_studying.png" alt="coding interview"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Instead of cramming for your coding interview (if it's not too late already!) just practice for a few hours a day, about a week or so in advance. You'll learn better, and it'll be &lt;em&gt;much less of a chore&lt;/em&gt;.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Reason 2: You risk confusing yourself or panicking mid-question&lt;/strong&gt;. If you fill your head with too much information, you'll find it hard to pull out the stuff that really matters when you most need it. Even worse, the more you prepare, the more you build up the expectation in your mind that &lt;em&gt;this will be difficult&lt;/em&gt;. You'll stress yourself out, and if you're anything like me you'll be more likely to panic during the interview.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Reason 3: You'll look fake, and you'll feel fake&lt;/strong&gt;. Managers can tell when you're overprepared for an interview. If your answers are too rehearsed, they'll know that you've memorized solutions, and they'll be less likely to trust you. Similarly, you'll feel like a fake yourself. You'll siphon the fun out of coding (remember why you're doing this in the first place!) and you'll lose confidence in yourself and your abilities. Coding interviews suck - don't make them suck even more by torturing yourself too much while preparing.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;3 - People Skills Are Still Important!&lt;/h4&gt;

&lt;p&gt;You can't escape it. Even in a coding interview, managers will want to see that you have decent communication skills and that you'll be competent at working in a team. You can be the best coder in the world, but if the thought of interacting with another human makes you recoil back into your Vim set-up - you won't do well in the interview.&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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fcommunication.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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fcommunication.png" alt="communication skills"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unfortunately, improving this just comes with experience. Going to networking events and interviewing with companies often will put you on the right track. Check out places like &lt;a href="https://www.meetup.com/" rel="noopener noreferrer"&gt;Meetup.com&lt;/a&gt; for networking events where you can practice communicating in a professional environment.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;4 - Remember That You Have Value&lt;/h4&gt;

&lt;p&gt;This is an important, but often neglected tip. Remember that not only is the company interviewing you, you are interviewing &lt;em&gt;them&lt;/em&gt;. Starting from now, every day until the interview - tell yourself that &lt;em&gt;you are interviewing them&lt;/em&gt;. Remember it during the interview whenever you're getting anxious. &lt;/p&gt;

&lt;p&gt;You'll have a more casual, confident attitude that'll make you stand out from the other candidates. This takes some time, but it's the main thing that took me from desperately begging companies for jobs, to getting multiple offers and choosing who I want to work with. It takes practice and might feel weird at first, but try it and watch as it pays off!&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This was originally published on &lt;a href="https://www.explainhownow.com" rel="noopener noreferrer"&gt;explainhownow.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>interviewing</category>
      <category>career</category>
      <category>computerscience</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Quick and Easy Guide To Making a Blog with Jekyll And Namecheap</title>
      <dc:creator>Kat Maddox</dc:creator>
      <pubDate>Sun, 10 Mar 2019 03:05:25 +0000</pubDate>
      <link>https://forem.com/ctrlshifti/how-to-make-a-blog-with-jekyll-and-get-it-online-in-less-than-an-hour-5a46</link>
      <guid>https://forem.com/ctrlshifti/how-to-make-a-blog-with-jekyll-and-get-it-online-in-less-than-an-hour-5a46</guid>
      <description>&lt;p&gt;Install Ruby if you don't have it yet.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt update
sudo apt install ruby-full
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now install Jekyll.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo gem install jekyll
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a new Jekyll project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;jekyll new blogname
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(note: if you want to use a template, instead of using the above command, just git clone the template you want)&lt;/p&gt;

&lt;p&gt;Now, just cd into the folder Jekyll just made and check out the _&lt;em&gt;config.yml&lt;/em&gt; file. Change all the applicable stuff, like name, email, and whatever else if you're using a template. &lt;em&gt;url&lt;/em&gt; can be changed later once you've bought your domain.&lt;/p&gt;

&lt;p&gt;To make a post, create a markdown file in the _&lt;em&gt;posts&lt;/em&gt; directory, in the naming convention of &lt;em&gt;yyyy-mm-dd-name-of-post.md&lt;/em&gt;, for example &lt;em&gt;2019-03-10-how-to-jekyll.md&lt;/em&gt;. The format of the file should look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;---
layout: post
title: Welcome to Jekyll!
categories: jekyll
---
Post content goes here.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you're using a template, check the sample posts to see what other parameters you should add in the top section.&lt;/p&gt;

&lt;p&gt;You may need to run the following to make sure you have all the required dependencies:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;After all this, you run this to see your website in action:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bundle exec jekyll serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now your website should be online at &lt;em&gt;&lt;a href="http://127.0.0.1:4000/" rel="noopener noreferrer"&gt;http://127.0.0.1:4000/&lt;/a&gt;&lt;/em&gt;. Make a repo for it in Github, so that we can set it up with Github Pages later. Push the project to your new repo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git add .
git commit -m "hello world"
git remote add origin [repo_url]
git push origin master
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, we want to vomit this onto the internet. I'll be using Namecheap in this guide, but any other domain provider should work.&lt;br&gt;&lt;br&gt;&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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fjekyll2.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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fjekyll2.png" alt="domain_purchase"&gt;&lt;/a&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;Once you buy the domain, you'll need to change the DNS settings so that it can be reached. In Namecheap, you can go to the Dashboard, select "Manage" next to the domain name, then "Advanced DNS", and add the following records, changing my Github username to yours.&lt;br&gt;&lt;br&gt;&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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fjekyll3.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%2Fwww.explainhownow.com%2Fassets%2Fimages%2Fjekyll3.png" alt="dns"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A Record    @   185.199.108.153
A Record    @   185.199.109.153
A Record    @   185.199.110.153
A Record    @   185.199.111.153
CNAME Record    www     you.github.io.      30 min
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now go to the settings page of your blog repo, which should be &lt;em&gt;&lt;a href="https://github.com/%5Byourgitname%5D/%5Byourblogname%5D/settings" rel="noopener noreferrer"&gt;https://github.com/[yourgitname]/[yourblogname]/settings&lt;/a&gt;&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;Under the "Github Pages" headline, add your custom domain (should be in a form similar to &lt;em&gt;&lt;a href="http://www.blogname.com" rel="noopener noreferrer"&gt;www.blogname.com&lt;/a&gt;&lt;/em&gt;) and hit save. Don't forget to change &lt;em&gt;url&lt;/em&gt; in _&lt;em&gt;config.yml&lt;/em&gt; to your domain in the form &lt;em&gt;&lt;a href="https://www.blogname.com" rel="noopener noreferrer"&gt;https://www.blogname.com&lt;/a&gt;&lt;/em&gt;. It could take an hour or so for the DNS to resolve, but eventually, you should be able to see your site at the domain name you bought. Yay! Great job. Note: actual blog content sold separately.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Additional Tips&lt;br&gt;
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Templates
&lt;/h4&gt;

&lt;p&gt;The above should work, but you're cool so you want a cool blog. Like mentioned above, the steps for getting your blog to work on a custom template should be exactly the same, but instead of &lt;em&gt;jekyll new blogname&lt;/em&gt; you just git clone the template and cd into it, doing everything else from there. You can find a wide variety of Jekyll templates from these sites:&lt;br&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://jekyllthemes.org/" rel="noopener noreferrer"&gt;http://jekyllthemes.org/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jekyllthemes.io/" rel="noopener noreferrer"&gt;https://jekyllthemes.io/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://themes.jekyllrc.org/" rel="noopener noreferrer"&gt;http://themes.jekyllrc.org/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  SSL
&lt;/h4&gt;

&lt;p&gt;Next, you'll want your blog to have SSL, to save your readers the embarrassment of anyone potentially finding out they're on your site. And from content defacement as well, I guess. Fortunately, Github Pages does this easily for you - under your git repo settings, just tick the "Enforce HTTPS" box under "Github Pages". Don't buy Namecheap's SSL certificate, you don't need it.&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Images
&lt;/h4&gt;

&lt;p&gt;In your root project folder, create a folder named &lt;em&gt;assets&lt;/em&gt;, and within assets, make an &lt;em&gt;images&lt;/em&gt;. Put images there. Then, in your post content, add something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;![alt_text]({{static.static_files}}/assets/images/image.png)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;h4&gt;
  
  
  Automatic Sitemap
&lt;/h4&gt;

&lt;p&gt;You can make Jekyll automatically generate a sitemap for you! Add the &lt;a href="https://github.com/jekyll/jekyll-sitemap" rel="noopener noreferrer"&gt;Jekyll Sitemap Plugin&lt;/a&gt; to your project (instructions are in the readme).&lt;/p&gt;

&lt;p&gt;If you're using &lt;em&gt;bundle exec jekyll serve&lt;/em&gt; to build your site, you may encounter an issue with your sitemap listing your urls in localhost terms instead of using your domain name. Instead, try building your site files with &lt;em&gt;bundle exec jekyll build&lt;/em&gt;. If you find that this still doesn't work, enter the following command: &lt;em&gt;JEKYLL_ENV=prod jekyll serve&lt;/em&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post was originally published on &lt;a href="https://www.explainhownow.com/" rel="noopener noreferrer"&gt;explainhownow.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>jekyll</category>
      <category>blogging</category>
      <category>dns</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
