<?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>Security Forem: Hitanshu Gedam</title>
    <description>The latest articles on Security Forem by Hitanshu Gedam (@hitanshugedam).</description>
    <link>https://zeroday.forem.com/hitanshugedam</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%2F3499351%2F816476e9-9f46-443b-a4c9-8adb4342ffbb.jpeg</url>
      <title>Security Forem: Hitanshu Gedam</title>
      <link>https://zeroday.forem.com/hitanshugedam</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://zeroday.forem.com/feed/hitanshugedam"/>
    <language>en</language>
    <item>
      <title>picoCTF bloat.py writeup</title>
      <dc:creator>Hitanshu Gedam</dc:creator>
      <pubDate>Mon, 22 Sep 2025 14:08:19 +0000</pubDate>
      <link>https://zeroday.forem.com/hitanshugedam/picoctf-bloatpy-writeup-agp</link>
      <guid>https://zeroday.forem.com/hitanshugedam/picoctf-bloatpy-writeup-agp</guid>
      <description>&lt;p&gt;We are given two files and are askedd to run them in the same directory.&lt;br&gt;
I create a &lt;code&gt;~/tmp&lt;/code&gt; directory on pico webshell and wget those two files in it. First, I open the python file to try to understand the code.&lt;/p&gt;

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

&lt;p&gt;This code is obfuscated which makes it difficult for a human to read.&lt;/p&gt;

&lt;p&gt;The variable a is given a long string.&lt;/p&gt;

&lt;p&gt;I head over to &lt;a href="https://www.programiz.com/python-programming/online-compiler/" rel="noopener noreferrer"&gt;Programiz &lt;/a&gt;to find what the first condition is:&lt;/p&gt;

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

&lt;p&gt;It checks for the argument to be equal to the string "happychance", if it is, then it returns True, else it returns "That password is incorrect" and exits with code 0.&lt;br&gt;
I re-wrote python code in a readable format:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;a = "!\"#$%&amp;amp;'()*+,-./0123456789:;&amp;lt;=&amp;gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ"+ \
            "[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ "
def check(pwd):
  if pwd == "happychance":
    return True
  else:
    print("The password is incorrect")

def decoder(arg444):
  return join_flag(arg444.decode(), "rapscallion")

def getinput():
  return input("Please enter correct password for flag: ")

def open_flag():
  return open('flag.txt.enc', 'rb').read()

def welc():
  print("Welcome back... your flag, user: ")


def join_flag(first_string, second_string):
    second_string_copy = second_string
    i = 0
    while len(second_string_copy) &amp;lt; len(first_string):
        second_string_copy = second_string_copy + second_string[i]
        i = (i + 1) % len(second_string)        
    return "".join([chr(ord(first_string_char) ^ ord(second_string_char)) for (first_string_char,second_string_char) in zip(first_string,second_string_copy)])


opened_flag_binary = open_flag()
pwd = getinput()
check(pwd)
welc()
decoded_flag = decoder(opened_flag_binary)
print(decoded_flag)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I decoded this much and after a while, I thought it was enough since later in the code the functions are being called and the values are getting stored in the variables. &lt;/p&gt;

&lt;p&gt;I ran the python file and gave "happychance" as the input, and there I had my flag!&lt;/p&gt;

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

</description>
    </item>
    <item>
      <title>picoCTF RPS writeup</title>
      <dc:creator>Hitanshu Gedam</dc:creator>
      <pubDate>Sat, 20 Sep 2025 12:06:55 +0000</pubDate>
      <link>https://zeroday.forem.com/hitanshugedam/picoctf-rps-writeup-365k</link>
      <guid>https://zeroday.forem.com/hitanshugedam/picoctf-rps-writeup-365k</guid>
      <description>&lt;p&gt;We are given a Rock-Paper-Scissors game. I used wget to download the source file onto the webshell. I read the C source code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;stdbool.h&amp;gt;
#include &amp;lt;string.h&amp;gt;
#include &amp;lt;time.h&amp;gt;
#include &amp;lt;unistd.h&amp;gt;
#include &amp;lt;sys/time.h&amp;gt;
#include &amp;lt;sys/types.h&amp;gt;


#define WAIT 60



static const char* flag = "[REDACTED]";

char* hands[3] = {"rock", "paper", "scissors"};
char* loses[3] = {"paper", "scissors", "rock"};
int wins = 0;



int tgetinput(char *input, unsigned int l)
{
    fd_set          input_set;
    struct timeval  timeout;
    int             ready_for_reading = 0;
    int             read_bytes = 0;

    if( l &amp;lt;= 0 )
    {
      printf("'l' for tgetinput must be greater than 0\n");
      return -2;
    }


    /* Empty the FD Set */
    FD_ZERO(&amp;amp;input_set );
    /* Listen to the input descriptor */
    FD_SET(STDIN_FILENO, &amp;amp;input_set);

    /* Waiting for some seconds */
    timeout.tv_sec = WAIT;    // WAIT seconds
    timeout.tv_usec = 0;    // 0 milliseconds

    /* Listening for input stream for any activity */
    ready_for_reading = select(1, &amp;amp;input_set, NULL, NULL, &amp;amp;timeout);
    /* Here, first parameter is number of FDs in the set, 
     * second is our FD set for reading,
     * third is the FD set in which any write activity needs to updated,
     * which is not required in this case. 
     * Fourth is timeout
     */

    if (ready_for_reading == -1) {
        /* Some error has occured in input */
        printf("Unable to read your input\n");
        return -1;
    } 

    if (ready_for_reading) {
        read_bytes = read(0, input, l-1);
        if(input[read_bytes-1]=='\n'){
        --read_bytes;
        input[read_bytes]='\0';
        }
        if(read_bytes==0){
            printf("No data given.\n");
            return -4;
        } else {
            return 0;
        }
    } else {
        printf("Timed out waiting for user input. Press Ctrl-C to disconnect\n");
        return -3;
    }

    return 0;
}


bool play () {
  char player_turn[100];
  srand(time(0));
  int r;

  printf("Please make your selection (rock/paper/scissors):\n");
  r = tgetinput(player_turn, 100);
  // Timeout on user input
  if(r == -3)
  {
    printf("Goodbye!\n");
    exit(0);
  }

  int computer_turn = rand() % 3;
  printf("You played: %s\n", player_turn);
  printf("The computer played: %s\n", hands[computer_turn]);

  if (strstr(player_turn, loses[computer_turn])) {
    puts("You win! Play again?");
    return true;
  } else {
    puts("Seems like you didn't win this time. Play again?");
    return false;
  }
}


int main () {
  char input[3] = {'\0'};
  int command;
  int r;

  puts("Welcome challenger to the game of Rock, Paper, Scissors");
  puts("For anyone that beats me 5 times in a row, I will offer up a flag I found");
  puts("Are you ready?");

  while (true) {
    puts("Type '1' to play a game");
    puts("Type '2' to exit the program");
    r = tgetinput(input, 3);
    // Timeout on user input
    if(r == -3)
    {
      printf("Goodbye!\n");
      exit(0);
    }

    if ((command = strtol(input, NULL, 10)) == 0) {
      puts("Please put in a valid number");

    } else if (command == 1) {
      printf("\n\n");
      if (play()) {
        wins++;
      } else {
        wins = 0;
      }

      if (wins &amp;gt;= 5) {
        puts("Congrats, here's the flag!");
        puts(flag);
      }
    } else if (command == 2) {
      return 0;
    } else {
      puts("Please type either 1 or 2");
    }
  }

  return 0;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The function of interest here is the &lt;code&gt;play()&lt;/code&gt; function. Let’s say int computer_turn = 0, if we look at hands[0], we see that the computer chose ‘rock.’ On &lt;a href="https://www.w3schools.com/c/ref_string_strstr.php" rel="noopener noreferrer"&gt;this page&lt;/a&gt;, I found the &lt;code&gt;strstr()&lt;/code&gt; function returns a pointer to the position of the first occurrence of a string in another string. Now, the computer will check if the user input player_turncontains the string that corresponds to loses[0] i.e. ‘paper’.&lt;/p&gt;

&lt;p&gt;I tried inputting the string &lt;code&gt;rockpaperscissors&lt;/code&gt; 5 times to beat the game and there I found my flag:&lt;/p&gt;

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

</description>
      <category>beginners</category>
      <category>education</category>
    </item>
    <item>
      <title>picoCTF classic crackme 0x100 writeup</title>
      <dc:creator>Hitanshu Gedam</dc:creator>
      <pubDate>Fri, 19 Sep 2025 18:27:29 +0000</pubDate>
      <link>https://zeroday.forem.com/hitanshugedam/picoctf-classic-crackme-0x100-writeup-1mbo</link>
      <guid>https://zeroday.forem.com/hitanshugedam/picoctf-classic-crackme-0x100-writeup-1mbo</guid>
      <description>&lt;p&gt;We are given a binary file in this challenge and are asked to reverse engineer it. I download it on my windows laptop and decompile it on &lt;a href="//www.dogbolt.org"&gt;DogBolt&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I scroll down till I find the main() function:&lt;/p&gt;

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

&lt;p&gt;I find that some variables and arrays are defined. It begins by copying a fixed 51-character string into a buffer called &lt;code&gt;output&lt;/code&gt;, which represents the correct "transformed" version of the secret password. Then, it prompts the user to input a password, which is read into the &lt;code&gt;input&lt;/code&gt; buffer. The core of the code lies in a nested loop that runs three times: for each character in the input, it performs a complex transformation based on the character's index using bitwise operations and modular arithmetic to shift the character within the lowercase alphabet (&lt;code&gt;'a'&lt;/code&gt; to &lt;code&gt;'z'&lt;/code&gt;). After applying this transformation three times, the code compares the resulting input with the predefined &lt;code&gt;output&lt;/code&gt; string using &lt;code&gt;memcmp&lt;/code&gt;. If the transformed input matches &lt;code&gt;output&lt;/code&gt;, it prints a success message and a placeholder flag; otherwise, it prints "FAILED!".&lt;/p&gt;

&lt;p&gt;I used wget to download the file on pico webshell and give it executable permissions via the &lt;code&gt;chmod&lt;/code&gt; command. &lt;/p&gt;

&lt;p&gt;I wrote a python script with the help of ChatGPT:&lt;br&gt;
&lt;/p&gt;

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

def transform_char(c, i_1):
    uVar1 = ((i_1 % 0xff) &amp;gt;&amp;gt; 1 &amp;amp; 0x55) + ((i_1 % 0xff) &amp;amp; 0x55)
    uVar1 = ((uVar1 &amp;gt;&amp;gt; 2) &amp;amp; 0x33) + (uVar1 &amp;amp; 0x33)
    iVar2 = (uVar1 &amp;gt;&amp;gt; 4) + ord(c) - 0x61 + (uVar1 &amp;amp; 0xf)
    result = iVar2 % 26 + ord('a')
    return chr(result)

def transform(s):
    return ''.join(transform_char(c, i) for i, c in enumerate(s))

# Reverse the transformation by brute-force
def reverse_transform(target):
    original = ['?'] * len(target)
    for i, target_c in enumerate(target):
        for c in range(ord('a'), ord('z') + 1):
            trial = chr(c)
            if transform_char(trial, i) == target_c:
                original[i] = trial
                break
    return ''.join(original)

# Apply reverse transformation 3 times
current = output
for _ in range(3):
    current = reverse_transform(current)

print("Recovered password:", current)

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

&lt;/div&gt;



&lt;p&gt;And I got the original string. I tried it as an input for the file on the webshell and it succeeded. Now that I was sure of the original string, I used the &lt;code&gt;nc&lt;/code&gt; command provided in the challenge to connect to the machine and gave it the string. &lt;/p&gt;

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

&lt;p&gt;This is how I received the flag!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>picoCTF bbbbloat writeup</title>
      <dc:creator>Hitanshu Gedam</dc:creator>
      <pubDate>Fri, 19 Sep 2025 18:07:29 +0000</pubDate>
      <link>https://zeroday.forem.com/hitanshugedam/picoctf-bbbbloat-writeup-322</link>
      <guid>https://zeroday.forem.com/hitanshugedam/picoctf-bbbbloat-writeup-322</guid>
      <description>&lt;p&gt;We are given a binary file here in this challenge. I used wget to download it in the pico webshell, and also downloaded it in my Windows laptop.&lt;br&gt;
I make the file executable using the &lt;code&gt;chmod +x bbbbloat&lt;/code&gt;. From the downloaded file on my Windows laptop, I head over to &lt;a href="//www.dogbolt.org"&gt;Dogbolt&lt;/a&gt; and upload the file there:&lt;/p&gt;

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

&lt;p&gt;I keep scrolling down the decompiled code in order to find something interesting. I found the above code of interest. &lt;br&gt;
This code checks if the variable &lt;code&gt;local_48&lt;/code&gt; equals &lt;code&gt;0x86187&lt;/code&gt;, and if so, it sets &lt;code&gt;local_44&lt;/code&gt; to &lt;code&gt;0xd2c49&lt;/code&gt;, then calls a function &lt;code&gt;FUN_00101249&lt;/code&gt; with arguments &lt;code&gt;0&lt;/code&gt; and the address of &lt;code&gt;local_38&lt;/code&gt;, expecting it to return a dynamically allocated string. It stores the result in &lt;code&gt;local_40&lt;/code&gt;, prints the string to standard output followed by a newline, and then frees the allocated memory to avoid a memory leak. The function likely generates or retrieves a string (e.g., a message or flag) when the specific condition is met.&lt;br&gt;
Next, I head over to &lt;a href="https://www.rapidtables.com/convert/number/hex-to-decimal.html?x=86187" rel="noopener noreferrer"&gt;RapidTables&lt;/a&gt;&lt;br&gt;
for converting Hex to Decimal (because when I tried to run the executable bbbbloat file on webshell, it asked me to guess its favourite number i.e. for an integer input)&lt;/p&gt;

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

&lt;p&gt;0x86187 = 549255 (in decimal)&lt;/p&gt;

&lt;p&gt;I input that number after executing the bbbbloat file:&lt;/p&gt;

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

&lt;p&gt;And there we have our flag!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>picoCTF Irish-name-repo 3 writeup</title>
      <dc:creator>Hitanshu Gedam</dc:creator>
      <pubDate>Fri, 19 Sep 2025 17:27:25 +0000</pubDate>
      <link>https://zeroday.forem.com/hitanshugedam/picoctf-irish-name-repo-3-writeup-462k</link>
      <guid>https://zeroday.forem.com/hitanshugedam/picoctf-irish-name-repo-3-writeup-462k</guid>
      <description>&lt;p&gt;In this challenge we are given a basic website and are asked to bypass the admin login:&lt;/p&gt;

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

&lt;p&gt;Let's go to the admin login page:&lt;/p&gt;

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

&lt;p&gt;We are greeted with a login page:&lt;/p&gt;

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

&lt;p&gt;I went to the Inspect element via right clicking the webpage. We can see the source code in the Elements tab. We see there is a debud hidden feature with value set to 0, I change it to 1 and enter 'admin' as the password:&lt;/p&gt;

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

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

&lt;p&gt;Here we can see that 'admin' changes to 'nqzva'. We find a shift value of&lt;br&gt;
13 between these two which suggests to me that it was a ROT13 cipher.&lt;/p&gt;

&lt;p&gt;I head over to &lt;a href="https://cryptii.com/" rel="noopener noreferrer"&gt;Cryptii&lt;/a&gt;, choose to encode a simple SQL injection payload that I intend to use &lt;code&gt;' or 1=1; --&lt;/code&gt;. We get the ciphertext as &lt;code&gt;' be 1=1; --&lt;/code&gt;&lt;/p&gt;

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

&lt;p&gt;I use that ciphertext to bypass the login and there we have our flag:&lt;/p&gt;

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

</description>
    </item>
    <item>
      <title>picoCTF tapping writeup</title>
      <dc:creator>Hitanshu Gedam</dc:creator>
      <pubDate>Fri, 19 Sep 2025 17:15:53 +0000</pubDate>
      <link>https://zeroday.forem.com/hitanshugedam/picoctf-tapping-writeup-4a80</link>
      <guid>https://zeroday.forem.com/hitanshugedam/picoctf-tapping-writeup-4a80</guid>
      <description>&lt;p&gt;As soon as we connect to the given link with nc we are presented with a sequence of dots and dashes. This is &lt;a href="https://en.wikipedia.org/wiki/Morse_code" rel="noopener noreferrer"&gt;Morse Code&lt;/a&gt; &lt;/p&gt;

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

&lt;p&gt;I copied it and pasted it into this &lt;a href="https://morsecode.world/international/translator.html" rel="noopener noreferrer"&gt;Morse Code Decoder&lt;/a&gt; (without the curly braces)&lt;/p&gt;

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

&lt;p&gt;... there's our flag.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>picoCTF flags writeup</title>
      <dc:creator>Hitanshu Gedam</dc:creator>
      <pubDate>Tue, 16 Sep 2025 11:07:55 +0000</pubDate>
      <link>https://zeroday.forem.com/hitanshugedam/picoctf-flags-writeup-4816</link>
      <guid>https://zeroday.forem.com/hitanshugedam/picoctf-flags-writeup-4816</guid>
      <description>&lt;p&gt;We are given this image&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F10jny168g6uj0df0xno6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F10jny168g6uj0df0xno6.png" alt="flags" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I used &lt;a href="https://www.google.com/imghp?hl=en" rel="noopener noreferrer"&gt;Google Image Search&lt;/a&gt; and found out they were International Maritime flags.&lt;/p&gt;

&lt;p&gt;Then I searched google for International Maritime Flags and went to this Wikipedia link&lt;/p&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/International_maritime_signal_flags" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/International_maritime_signal_flags&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;This was the flag: PICOCTF{F1AG5AND5TUFF}&lt;/p&gt;

</description>
      <category>cryptography</category>
    </item>
    <item>
      <title>picoCTF Some Assembly Required writeup</title>
      <dc:creator>Hitanshu Gedam</dc:creator>
      <pubDate>Tue, 16 Sep 2025 07:41:54 +0000</pubDate>
      <link>https://zeroday.forem.com/hitanshugedam/picoctf-some-assembly-required-writeup-544e</link>
      <guid>https://zeroday.forem.com/hitanshugedam/picoctf-some-assembly-required-writeup-544e</guid>
      <description>&lt;p&gt;This challenge asks us to work with WebAssembly. I'll be honest I have never worked with WebAssembly. I looked up for some material and got myself a little familiar with it.&lt;/p&gt;

&lt;p&gt;This is the code that build the website:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const _0x402c = ['value', '2wfTpTR', 'instantiate', '275341bEPcme', 'innerHTML', '1195047NznhZg', '1qfevql', 'input', '1699808QuoWhA', 'Correct!', 'check_flag', 'Incorrect!', './JIFxzHyW8W', '23SMpAuA', '802698XOMSrr', 'charCodeAt', '474547vVoGDO', 'getElementById', 'instance', 'copy_char', '43591XxcWUl', '504454llVtzW', 'arrayBuffer', '2NIQmVj', 'result'];
const _0x4e0e = function(_0x553839, _0x53c021) {
    _0x553839 = _0x553839 - 0x1d6;
    let _0x402c6f = _0x402c[_0x553839];
    return _0x402c6f;
};
(function(_0x76dd13, _0x3dfcae) {
    const _0x371ac6 = _0x4e0e;
    while (!![]) {
        try {
            const _0x478583 = -parseInt(_0x371ac6(0x1eb)) + parseInt(_0x371ac6(0x1ed)) + -parseInt(_0x371ac6(0x1db)) * -parseInt(_0x371ac6(0x1d9)) + -parseInt(_0x371ac6(0x1e2)) * -parseInt(_0x371ac6(0x1e3)) + -parseInt(_0x371ac6(0x1de)) * parseInt(_0x371ac6(0x1e0)) + parseInt(_0x371ac6(0x1d8)) * parseInt(_0x371ac6(0x1ea)) + -parseInt(_0x371ac6(0x1e5));
            if (_0x478583 === _0x3dfcae)
                break;
            else
                _0x76dd13['push'](_0x76dd13['shift']());
        } catch (_0x41d31a) {
            _0x76dd13['push'](_0x76dd13['shift']());
        }
    }
}(_0x402c, 0x994c3));
let exports;
(async () =&amp;gt; {
    const _0x48c3be = _0x4e0e;
    let _0x5f0229 = await fetch(_0x48c3be(0x1e9))
      , _0x1d99e9 = await WebAssembly[_0x48c3be(0x1df)](await _0x5f0229[_0x48c3be(0x1da)]())
      , _0x1f8628 = _0x1d99e9[_0x48c3be(0x1d6)];
    exports = _0x1f8628['exports'];
}
)();
function onButtonPress() {
    const _0xa80748 = _0x4e0e;
    let _0x3761f8 = document['getElementById'](_0xa80748(0x1e4))[_0xa80748(0x1dd)];
    for (let _0x16c626 = 0x0; _0x16c626 &amp;lt; _0x3761f8['length']; _0x16c626++) {
        exports[_0xa80748(0x1d7)](_0x3761f8[_0xa80748(0x1ec)](_0x16c626), _0x16c626);
    }
    exports['copy_char'](0x0, _0x3761f8['length']),
    exports[_0xa80748(0x1e7)]() == 0x1 ? document[_0xa80748(0x1ee)](_0xa80748(0x1dc))[_0xa80748(0x1e1)] = _0xa80748(0x1e6) : document[_0xa80748(0x1ee)](_0xa80748(0x1dc))[_0xa80748(0x1e1)] = _0xa80748(0x1e8);
}

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

&lt;/div&gt;



&lt;p&gt;I thought &lt;code&gt;./JIFxzHyW8W&lt;/code&gt; to be of interest because of the ./&lt;/p&gt;

&lt;p&gt;It means that is a file. &lt;/p&gt;

&lt;p&gt;I used wget to download the file on the pico webshell and tried to read it with the strings command and piped the output to grep searching for the word 'pico'. Fortunately, I found the flag there itself. &lt;/p&gt;

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

</description>
    </item>
    <item>
      <title>picoCTF Match The Regex writeup</title>
      <dc:creator>Hitanshu Gedam</dc:creator>
      <pubDate>Mon, 15 Sep 2025 17:13:03 +0000</pubDate>
      <link>https://zeroday.forem.com/hitanshugedam/picoctf-match-the-regex-writeup-5bjh</link>
      <guid>https://zeroday.forem.com/hitanshugedam/picoctf-match-the-regex-writeup-5bjh</guid>
      <description>&lt;p&gt;This is an easy web challenge.&lt;/p&gt;

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

&lt;p&gt;This websites asks for an input from the user&lt;/p&gt;

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

&lt;p&gt;I tried 'hello' and it alerted me with a 'wrong message' alert.&lt;/p&gt;

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

&lt;p&gt;Then I went to check the source code of the website by Right-click -&amp;gt; View Page Source, scrolled to the bottom and found the script that the website was running:&lt;/p&gt;

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

&lt;p&gt;We see the regex pattern &lt;code&gt;^p.....F!?&lt;/code&gt; in the comment.&lt;/p&gt;

&lt;p&gt;The regex pattern ^p.....F!? matches strings that start with a lowercase "p", followed by exactly five characters of any kind, then an uppercase "F", and optionally ending with an exclamation mark.&lt;/p&gt;

&lt;p&gt;The ^ asserts the start of the string, while the . wildcard matches any single character except newline.&lt;/p&gt;

&lt;p&gt;The !? means that the exclamation mark at the end is optional — the string may or may not include it.&lt;/p&gt;

&lt;p&gt;My immediate guess was trying to input &lt;code&gt;picoCTF&lt;/code&gt;:&lt;/p&gt;

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

&lt;p&gt;... and that's how I got the flag to solve this challenge.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>picoCTF Roboto Sans writeup</title>
      <dc:creator>Hitanshu Gedam</dc:creator>
      <pubDate>Mon, 15 Sep 2025 15:04:34 +0000</pubDate>
      <link>https://zeroday.forem.com/hitanshugedam/picoctf-roboto-sans-writeup-5e11</link>
      <guid>https://zeroday.forem.com/hitanshugedam/picoctf-roboto-sans-writeup-5e11</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8naf003g1y0mpre3z2b3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8naf003g1y0mpre3z2b3.png" alt="robots" width="800" height="259"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I found some random characters together and it struck me they might be base64 encoded strings&lt;/p&gt;

&lt;p&gt;I tried to deocde them:&lt;/p&gt;

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

&lt;p&gt;I got flag1.txt but it was of no use&lt;br&gt;
we can see that I get &lt;code&gt;js/myfile.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I decided to visit that file on the website&lt;/p&gt;

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

&lt;p&gt;... and there I get my flag!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>picoCTF SQLiLite writeup</title>
      <dc:creator>Hitanshu Gedam</dc:creator>
      <pubDate>Mon, 15 Sep 2025 14:49:51 +0000</pubDate>
      <link>https://zeroday.forem.com/hitanshugedam/picoctf-sqlilite-writeup-lm8</link>
      <guid>https://zeroday.forem.com/hitanshugedam/picoctf-sqlilite-writeup-lm8</guid>
      <description>&lt;p&gt;We are asked to bypass the login page in the website.&lt;/p&gt;

&lt;p&gt;I decide to try with the most basic SQLi attack &lt;code&gt;' OR 1=1 --&lt;/code&gt;&lt;/p&gt;

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

&lt;p&gt;I try to login with that payload.&lt;/p&gt;

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

&lt;p&gt;And we are in! Now we are challenged to find the flag which is hidden in 'plain sight'. So I right click on the webpage, and click on "View Page Source" &lt;/p&gt;

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

&lt;p&gt;..and there was the flag hidden in "plain sight".&lt;/p&gt;

</description>
    </item>
    <item>
      <title>picoCTF Forbidden Paths writeup</title>
      <dc:creator>Hitanshu Gedam</dc:creator>
      <pubDate>Mon, 15 Sep 2025 14:44:07 +0000</pubDate>
      <link>https://zeroday.forem.com/hitanshugedam/picoctf-forbidden-paths-writeup-3i25</link>
      <guid>https://zeroday.forem.com/hitanshugedam/picoctf-forbidden-paths-writeup-3i25</guid>
      <description>&lt;p&gt;Here is our challenge:&lt;/p&gt;

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

&lt;p&gt;We are told  that the website files live in &lt;code&gt;/usr/share/nginx/html/&lt;/code&gt; and the flag is at &lt;code&gt;/flag.txt&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;I decided to type &lt;code&gt;../../../flag.txt&lt;/code&gt; and read.&lt;/p&gt;

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

&lt;p&gt;Read.&lt;/p&gt;

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

&lt;p&gt;And there's the flag!&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
