반응형
HackHiJack
HHJ
HackHiJack
전체 방문자
오늘
어제
  • 분류 전체보기 (99)
    • chatGPT (2)
    • pwn (2)
    • 워게임 (32)
    • Reversing (0)
    • Cryptography (12)
    • Web (6)
    • CTFs (16)
    • TryHackMe (6)
    • Go (5)
    • Forensics (18)

블로그 메뉴

  • 홈

공지사항

  • Welcome To HHJ's Blog

인기 글

태그

  • shellctf
  • forensic
  • webhacking.kr
  • hacking
  • 암호 #AES #드림핵
  • func
  • rootme
  • Import
  • startup
  • function
  • pwnable.kr
  • analyis
  • 해킹 #TryHackMe #WriteUp #ignite
  • main
  • package
  • linkfile
  • 포렌식
  • ㅣ
  • main.go
  • go

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
HackHiJack

HHJ

Dreamhack - ICM2022(writeup)
Cryptography

Dreamhack - ICM2022(writeup)

2023. 2. 22. 12:18
728x90
반응형
반응형

이번에는 드림핵의 암호 문제인 ICM2022를 풀어볼 것이다.

 

문제코드는 아래와 같다.

import random
from fractions import Fraction


def enc(p, n, key1, key2):
    q = (Fraction(p, n+1)*key1**(n+1)) - (Fraction(p, n+1)*key2**(n+1)) 
    print("[OK] plain is encrypted : ", q)
    return q


def dec(q):
    # cencored


def key_make():
    n, key1, key2 = 0, 1, 0
    while key2 < key1:
        n = random.randrange(1, 10) #3 
        key1 = random.randrange(1, 100) #
        key2 = random.randrange(1, 100) #95
    return n, key1, key2


p = ""
emp = input("plain text: ")
for character in emp:
    p += str(ord(character))
n, key1, key2 = key_make()

print(f"[WAR]p = {p} n = {n} key1 = {key1} key2 = {key2}")

q = enc(int(p), n, key1, key2)
dec(q)

 

일단 코드를 해석을 잠시 하자면 p라는 문자열을 받아서 아스키코드로 바꾸고 이 값을 가지고 enc() 함수에서 아래와 같이 연산한다.

여기서 q, n, key2가 주어져서 알기 때문에 아래와 같이 나타낼 수 있다.

그럼 이를 p에 관해서 정리해주면 아래와 같다.

여기서 k1은 k2보다 작고, 1에서 100 중 난수가 나오니깐, k1의 4제곱 - 95의 4제곱이 q * 4에 나누어  떨어질 때까지 k1의 값을 brute forcing 하면 된다.

 

이를 파이썬으로 구현하면 아래와 같다.

from fractions import Fraction

re = list()
for i in range(1,95):
	k2 = 95 ** 4
	k1 = i ** 4
	result = k1 - k2
	re.append(result)

for i in re:
    q = -200640142664324295933714 * 4
    p = Fraction(q/i)
    if q % i == 0 :
	    print(p)

이를 실행하면 아래와 같이 p(flag)값이 나오는 걸 확인할 수 있다.

728x90
반응형

'Cryptography' 카테고리의 다른 글

Dreamhack - d (writeup)  (0) 2023.02.22
Dreamhack - Robot Only(writeup)  (0) 2023.02.22
Dreamhack - darimchal_001(writeup)  (0) 2023.02.22
Cryptography(암호학) - Hash(해시)  (0) 2021.12.26
Cryptography(암호학) - RSA(공개키 암호)  (0) 2021.12.23
    'Cryptography' 카테고리의 다른 글
    • Dreamhack - d (writeup)
    • Dreamhack - Robot Only(writeup)
    • Dreamhack - darimchal_001(writeup)
    • Cryptography(암호학) - Hash(해시)
    HackHiJack
    HackHiJack
    $ whoami HHJ

    티스토리툴바