Story of CowHacker

PicoCTF 10번 문제 ( Mind your Ps and Qs ) 본문

공부/PicoCTF

PicoCTF 10번 문제 ( Mind your Ps and Qs )

Cow_Hacker 2022. 2. 8. 19:28
728x90

안녕하세요 Cowhacker입니다.

 

 

 

 

 

 

 

https://play.picoctf.org/practice/challenge/162

 

picoCTF

 

play.picoctf.org

PicoCTF 10번 문제 풀어 보겠다.

 

 

 

 

 

Ps와 Qs를 염두하라?

의역으로는

의 제목인 10번 문제다.

 

 

 

 

 

 

 

 

 

RSA에서 소문자 e 값은 문제가 있다, 하지만 N은 어떨까? 너는 해독할 수 있는가?

라고 하는 거 같다.

 

 

 

 

 

 

 

values를 설치했다.

 

 

 

 

 

 

 

 

 

 

 

확장자를 txt로 바꾸고

 

 

 

 

 

 

 

 

열어봤다.

 

 

RSA암호다.

 

 

 

 

 

 

 

 

 

 

https://ko.wikipedia.org/wiki/RSA_%EC%95%94%ED%98%B8

 

RSA 암호 - 위키백과, 우리 모두의 백과사전

RSA 암호는 공개키 암호시스템의 하나로, 암호화뿐만 아니라 전자서명이 가능한 최초의 알고리즘으로 알려져 있다. RSA가 갖는 전자서명 기능은 인증을 요구하는 전자 상거래 등에 RSA의 광범위한

ko.wikipedia.org

위에 표시해둔 대로

Python코드로 머리를 싸매 싸매 싸매....

었다.

 

 

후..

 

 

 

 

 

 

 

 

 

 

 

 

 


from factordb.factordb import FactorDB # 인수 분해 라이브러리다.
import gmpy2 #  부동 소수점 및 복합 소수점 게산을 하는 라이브러리에 대한 지원을 추가합니다.

c = 843044897663847841476319711639772861390329326681532977209935413827620909782846667
n = 1422450808944701344261903748621562998784243662042303391362692043823716783771691667
e = 65537

test = FactorDB(n) # n에 대해 인수 분해를 하는 구간이다.
test.connect() # 인수 분해 값을 unpack하는 구간이다.
p, q = test.get_factor_list() # p 와 q한테 인수 분해 한 값을 주는 구간이다. 즉, p와 q를 구하는 구간이다.

n2 = (p-1)*(q-1) # n2 즉 n값을 구하는 구간이다. ( 한번더 n을 구하는 이유는 공개된 e의 값이 한없이 적은 수기 때문에 한번더 e의 값을 구하기 위함이다. )

d = gmpy2.invert(e, n2) # ( gmpy2 = 큰 수를 계산 할수 있게 하는 녀석이다. ) e와 n2로 역원을 통해 d를 구한느 구간이다.
m = pow(c, d, n) # c의 d제곱한 값에 n으로 나누어 m을 구하는 구간이다.
print("bytevalue:",m) # m의 값을 출력하는 구간이다.
print(bytearray.fromhex(format(m,'x'))) # 바이트 값을 문자로 변환해 출력하는 구간이다.

 

 

 

 

 

 

 

 

저기서 n2!

n을 한번더 구한 이유는 e의 값이 적다는 이유도 있지만

문제의 핵심 내용이기에 한 번 더 구해본 거다.!!!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

flag를 구했다.

 

 

 

 

 

 

 

 

 

 

 

 

 

10번 문제 풀었다.

 

 

R eal !!

S tres 받는 문제..

A ... 다신 이런 문제는..ㅠㅜ

 

728x90
Comments