S.H.E.L.L CTF 2021: keygen

keygen

Category: Reverse Engineering

chal

80 points

Can you get the flag from the given file.

file: keygen.py

keygen.py

def checkends(password):
    end_status = 0
    if password[:6] == "SHELL{":
        end_status = 1
    if password[28] == "}":
        end_status = 1
    return end_status
def checkmiddle1(password):
    middle1_status = 0
    if password[27] == "1"  and password[17] == "4" and password[8] == "n" and password[23] == "y" and password[10] == "0":
        middle1_status = 1
    if password[11] == "n" and password[12] == "z" and password[13] == "a" and password[21] == "g" and password[15] == "u":
        middle1_status = 1
    if password[16] == "r"and password[7] == "3" :
        middle1_status = 1
    return middle1_status
def checkmiddle2(password):
    middle2_status = 0
    if password[18] == "_" and password[25] == "5" and password[20] == "4" and password[14] == "k" and password[22] == "3" and password[9] == "b"  and password[24] ==  "0":
        middle2_status = 1
    if  password[19] == "k" and password[26] == "h" and password[6] == "s" :
        middle2_status = 1
    return middle2_status
# driver code

a = input("enter your flag:")
if checkends(a) == 1 and checkmiddle1(a) == 1 and checkmiddle2(a) == 1:
    print("congrats thats the flag.")
else:
    print("Wrong flag.")

Solution

I’ve took the given code and changed it as below to get the flag.

password = [i for i in "SHELL{"] + ['' for i in range(23)]

password[28] = "}"
password[27] = "1"
password[17] = "4"
password[8] = "n"
password[23] = "y"
password[10] = "0"
password[11] = "n"
password[12] = "z"
password[13] = "a"
password[21] = "g"
password[15] = "u"
password[16] = "r"
password[7] = "3" 
password[18] = "_"
password[25] = "5"
password[20] = "4"
password[14] = "k"
password[22] = "3"
password[9] = "b"
password[24] =  "0"
password[19] = "k"
password[26] = "h"
password[6] = "s"

print(''.join(password))

Output:

SHELL{s3nb0nzakur4_k4g3y05h1}

Flag

SHELL{s3nb0nzakur4_k4g3y05h1}

Privacy Policy
luc © 2021