Skip to main content

codefest-ctf-18 writeup

Codefest is online CTF challenge conducted by Hackerrank on August 31 2018 6:00 PM IST to September 1 2018 12:00 PM IST. They have given dozens of challenges. 

link: https://www.hackerrank.com/contests/codefest-ctf-18/challenges

I manage to complete two challenges in this article i will explain how i solved the two 

Typing Master

Question

If you think you have it in you, connect now to 34.216.132.109 9093 and prove your mettle.
You will be presented with a simple typing task which is meant to check your typing speed.

For example, Can you type 'Z' 10 times followed by 'u' 6 times, followed by the sum of their ASCII values?

ZZZZZZZZZZuuuuuu207

Input Format

Regarding input to the server - The question was designed keeping netcat in mind. Some users who are using other tools/language (eg, Python, PuTTY, TELNET) to connect to the server please note that they do not terminate the strings like netcat does. If you choose not to use netcat, the message you send to our server should terminate with a trailing newline ('\n') and nothing else.

Output Format
CodefestCTF{~flag~}

How i solved? 

I created a python script type the above character and time it create the final string and send to the clipboard

typing.py

import sys

first = sys.argv[1]
no1 = int(sys.argv[2])
second = sys.argv[3]
no2 = int(sys.argv[4])
addition = str(ord(first[0]) + ord(second[0]))
print(first * no1 + second * no2 + addition)

usage: python typing.py z 10 u 6 | pbcopy

pbcopy ( if you are using mac ) will send the output to clipboard so you simply paste it with ctrl+v

For linux you can use xclip.

Ghost Protocol

Question

Alice locked a flag behind a server which follows an authentication protocol given below


##########################################################
##########################################################
                ####### ######   # #####
                #       #        # #   #
                #       ###      # #####
                #       #        # #   #
                #####   #        # #####
##########################################################
##########################################################

from hidemsg import hidemsg
# [DELETED]

# [DELETED]
# [DELETED]
# [DELETED]

def generateRand(mLength):
    rand = ''.join([random.choice(string.ascii_letters
            + string.digits) for n in range(mLength)])
    return rand

def send_(client_s, msg):
    # [DELETED] # send "msg" to client

def receive_(client_s):
    # [DELETED] # wait for message from client and return the message once receicved.

def handle_client_connection(client_socket):
    global enc
    send_(client_socket, "Tell me your name and secret\n")
    received = receive_(client_socket)
    try:
        name, nounce = received.split(" ")
        if name == None or nounce == None:
            raise ValueError('Not allowed!')
    except:
        send_(client_socket, "Wrong format!")
        client_socket.close()
        return; 

    val = generateRand(random.randint(5,10))
    send_(client_socket, val +" " +str(enc.encrypt(nounce.rstrip())) + "\n")
    received = receive_(client_socket)

    msg = "You aint't authorized!"
    if received == str(enc.encrypt(val)):
        msg  = "The flag is [DELETED]" #:P 
    send_(client_socket,msg)

    client_socket.close()


enc = hidemsg()
while True:
    # [DELETED]
    # [DELETED]
    # [DELETED]
    # Somewhere here "handle_client_connection()" is called each time new client makes a connection.
    # [DELETED]

nc 34.216.132.109 9092

Output Format
CodefestCTF{flag}

How i solved ?

This challenge takes me lot time but the  it is piece of cake

program i/p -> name secret

The program will encrypt the secret with enc.encrpt() function.It will generate a random string val and print val & enc.encrypt(secret)

we need to find the enc.encrypt(val) and send to get the flag

hint :
Somewhere here "handle_client_connection()" is called each time new client makes a connection.

Whenever we connect to it we get new connection

so create a another connection and type the name and for secret,type the val generated from previous instance you got the enc.encrypt(secret) paste it in previous connection instance you will get the key

Solution 

When we connect to the server we get the following

connection 1

Tell me your name and secret
gold aaaa
fofSGLDWx rGervB7oK124QBODO3wowoj3026e3MMQe39Uo21VSE=
rGervB7oK124080003wo27NDqK+31oc8ovPGetun1c=
The flag is #muetuAl%authentiKati0n@

connection 2

Tell me your name and secret
gold fofSGLDWx
HeOXoP rGervB7oK124080003wo27NDqK+31oc8ovPGetun1c=

Note:
  • fofSGLDWx is passed as secret in connection 2
  • we paste "rGervB7oK124080003wo27NDqK+31oc8ovPGetun1c=" from connection 2 to connection 1

voila we go the flag

Comments

Post a Comment

Popular posts from this blog

C program jackpot

/*Program to show sum of 10 elements of array & show the average.*/ #include<stdio.h> int main () { int a[ 10 ],i,sum = 0 ; float av; printf( "enter elements of an aaray: " ); for (i = 0 ;i < 10 ;i ++ ) scanf( "%d" , & a[i]); for (i = 0 ;i < 10 ;i ++ ) sum = sum + a[i]; printf( "sum=%d" ,sum); av = sum / 10 ; printf( "average=%.2f" ,av); return 0 ; } Output: enter elements of an array : 4 4 4 4 4 4 4 4 4 4 sum = 40 average = 4.00 /*Program to find the maximum no. in an array.*/ #include<stdio.h> void main () { int a[ 5 ],max,i; printf( "enter element for the array: " ); for (i = 0 ;i < 5 ;i ++ ) scanf( "%d" , & a[i]); max = a[ 0 ]; for (i = 1 ;i < 5 ;i ++ ) { if (max < a[i]) max = a[i]; } printf( "maximum no= %d" ,max); } Output: enter elements for array : 5 4 7 1 2 maximum no = 7 /*Swapp

Newsboat RSS Reader

Let me tell what is rss reader then i will explain about newsboat,. RSS stands for Rich Site Summary. Simply it is way to subscribe to webpages and when new article is published you can see through the feeds. you get the idea Newsboat is a terminal rss reader which is simple, easy to use and highly customizable how to find rss feed link ?                                   simple trick that i used to find rss feeds in a website check for rss image like above [OR] Right click the website -> view page souce and search for rss copy the link and paste it in urls file in the .config/newsboat/urls (for linux and mac) RSS feeds from twitter: https://twitrss.me/twitter_user_to_rss/?user=<USERNAME> https://www.twitrss.me/twitter_search_to_rss/?term=<SEARCH TERM> example: https://twitrss.me/twitter_user_to_rss/?user=Hytale https://www.twitrss.me/twitter_search_to_rss/?term=Hytale RSS feeds from youtube: https://www.youtube.com/feeds/videos.xml?channel_id

Ecosia

ECOSIA - A Green search engine “ Ecosia donates 80% profits to planting trees” Site: www.ecosia.org Lauched on 7 th December 2009 and created by Christian Kroll available in more than 26 language. It is located in Berlin, Germany.It is also called as CO2-neutral company.Ecosia has donated to different tree-planting programs. Until December 2010 Ecosia’s donations went to a program by WWF Germany that protected the Juruena-National park in the Amazonas. In order to make sure the protection was kept up, the program also drew up and financed plans with timber companies and the  local communities. According to B-labs, as of January 2015, "In donating 80 percent of its ad revenue, the search engine has raised over $1.5 million for rainforest protection since its founding in December 2009." According to Ecosia, by 2015, the search engine had almost 2.5 million active users, and searches through it had resulted in more than 2 million trees being planted.Since October 201