1. 소개

CryptoHack은 암호학을 배우기 위한  워게임사이트이다.

해당 사이트의 소개에 따르면

AES, RSA 및 Elliptic-Curve와 같은 '현대'암호화의 잘못된 구현을 중단하는 것에 중점을 둔다고 한다.

필자는 암호학에 대해 복습 및 공부를 할겸 이를 한번 도전해보려고한다. 

 

2. 가입

시작부터 가입을 하기 위해선

Solve this Roman Emperor`s cipher : RGJJKX KDVXKYY ZGM YAOZ

라고 나와 있다.

즉 시저암호 혹은 카이사르 암호를 통해 이를 해결해야한다.

위의 사진과 같이 

LADDER EXPRESS TAG SUIT

영단어로 추정되는 평문이기에 이를 대입하였다.

해당 창과 함께 가입이 되었다.

 

3. Introduction

1) Finding Flags

문제를 해결을 하려면 "flag"를 찾아야 한다.

이러한 "flag"는 crypto{...}형식으로 주어진다.

그리고 해당 "flag"를 제출하면 해당 문제는 풀린상태가 된고 배점을 받는 방식으로 되어있다고 설명하는 문제이다.

 

2) Great Snake

#!/usr/bin/env python3

import sys
# import this

if sys.version_info.major == 2:
    print("You are running Python 2, which is no longer supported. Please update to Python 3.")

ords = [81647566709373721921092841096675709029279#ords 리스트에 숫자를 대입

print("Here is your flag:")
print("".join(chr(o ^ 0x32for o in ords))#ords 리스트에 있는 숫자들을 0x32와 or연산을 하여 문자를 하나씩 출력을함

해당 문제의 경우 

ords리스트에 있는 수와 0x32를 or연산을 시켜 문자를 출력시켜주는 코드이다.

이를 출력하게 되면

플래그 값은 crypto{z3n_0f_pyth0n}이다.

 

3) Network Attacks

#!/usr/bin/env python3

import telnetlib
import json

HOST = "socket.cryptohack.org"
PORT = 11112

tn = telnetlib.Telnet(HOST, PORT)


def readline():
    return tn.read_until(b"\n")

def json_recv():
    line = readline()
    return json.loads(line.decode())

def json_send(hsh):
    request = json.dumps(hsh).encode()
    tn.write(request)


print(readline())
print(readline())
print(readline())
print(readline())


request = {
    "buy""clothes"
}
json_send(request)

response = json_recv()

print(response)

해당 코드를 실행을 하게 되면

플래그 값 대신 이러한 답이 나오게 된다.

출력 값을 대략 의역을 하게 되면

'넷캣의 플래그 샵에 온걸 환영합니다!'

'무엇을 너는 사고 싶고싶나요?'

'나는 JSON으로만 대화하고, 나는 그정도면 됬어'

'에러:죄송합니다! 저희는 플래그만 팝니다.'

그래서 JSON 부분을 보니 'clothes'로 되어있어 이부분을 'flag'로 바꾸니

플래그 값은 crypto{sh0pp1ng_f0r_fl4g5}로 나오게 된다.

 

3. 후기

일단 Introduction부분을 보게 되면

확실히 소개를 한다는 느낌으로 문제를 주기 때문에

어떠한 방식으로 기본적으로 복호화를 시키는 과정을 보여주었다.

General 섹션의 경우 인코딩, XOR, 수학적, 데이터 포맷 등

기본적인 암호관련 배경지식이 있고, 이에 대응 되는 문제들도 있다.

이외에도 실제 CTF문제들도 있다.

앞으로 배경지식, 코드, 문제풀이 형식으로 글을 연재 할 것이다.

복사했습니다!