GreyCTF 2025 Qualifiers

유원상·2025년 6월 1일

메인 페이지이다.

Sanity Check

평범한 튜토리얼이다.

Tung Tung Tung Sahur

brainrot(브레인로트) 세계에 처음 오셨나요? 어떤 이름을 골라야 할지 고민되시나요? 저희가 엄선한 추천 목록을 준비했습니다.

트랄랄레로 트랄랄라

셰프 크라브라카다브라

보네카 암발라부

퉁 퉁 퉁 퉁 퉁 퉁 퉁 퉁 사후르

이런 파일을 준다.

output.txt 파일에는 이런 내용이 있다.

파이썬 파일이다.

이 코드는 RSA 암호화의 변형된 형태를 구현하였다.

from Crypto.Util.number import getPrime, bytes_to_long

flag = "grey{flag_here}"
e = 3
p, q = getPrime(512), getPrime(512)
N = p * q

512비트 크기의 두 소수 p, q를 생성하고
RSA 모듈러스 N = p × q 계산,
공개 지수 e = 3 으로 설정한다.

m = bytes_to_long(flag.encode())
C = pow(m,e)

플래그를 바이트로 인코딩한 후 정수로 변환
RSA 암호화: C = m³ (mod 없이)

assert C < N 
while (C < N):
    C *= 2
    print("Tung!")

# now C >= N

while (C >= N):
    C -= N 
    print("Sahur!")

첫 번째 while문: C가 N보다 작은 동안 C를 2배씩 증가

C가 N 이상이 될 때까지 반복
"Tung!" 출력

두 번째 while문: C가 N 이상인 동안 C에서 N을 빼기

결국 C = C mod N 연산과 동일
"Sahur!" 출력

output.txt 파일을 보니 "Tung!"이 144번 출력, "Sahur!"이 1번 출력되었으므로

최종 C = (2^144 × m^3 - N) mod N

profile
이것저것 적는 블로그입니다.

0개의 댓글