728x90
1.문제 분석
- pem파일을 분석하는 문제
- RSA 암호를 계산하는 문제
2. 기본 아이디어
- pub.pem 파일을 열어 n과 e를 구한다.
- 구한 n을 factordb를 이용해 소인수분해해서 p와 q를 구한다.
- 구한 p와 q를 통해 phi값을 구하고 d값을 구한다.
- ciphertext를 d와 n값을 통해 복호화한다.
3.문제 풀이
이 문제는 암호화된 txt파일과 pem형식의 파일이 주어진다.
pem파일이란 보안 인증서 파일이고 다음과 같은 구조로 적혀있다.
base64기반으로 보이는 값이 적혀있는데
pem파일의 경우는 openssl을 이용해서 열 수 있다.
openssl rsa -pubin -inform PEM -text -noout < pub.pem
옵션의 설명은 다음과 같다.
- pubin: 공개 키를 입력으로 지정
- inform PEM: 입력 형식을 PEM으로 지정
-text: key의 텍스트 표현을 출력
-noout: 개인키 출력 X 공개 키만 출력
그러면 이런 결과가 나온다.
modulus가 n, exponent가 e다.
이제 저 숫자를 10진수로 바꿔보자.
우선 파이썬을 이용해서 바꿔줬다.
그럼 매우 큰 수의 n이 나올 것이고, 이를 factordb를 통해 소인수분해 해보자.
그럼 29로 시작하는 p값과 10으로 시작하는 q값이 나온다.
우선 (e * d) mod phi = 1 임을 이용해서 d값을 구해주고
ct^d mod N = M 임을 통해서 M을 구해준다.
그리고 나서 익스플로잇을 진행해보면?
결과가 나오고 이때 뒤에 있는 base64를 디코딩해보면?
정답은 DH{decodeText} 였으므로
DH{CLOSIING THE DISTANCE.} 가 정답이다.
728x90
'Dreamhack > CryptoPS' 카테고리의 다른 글
[Dreamhack][CryptoPS] [KCTF] RSA-wiener (0) | 2023.11.23 |
---|---|
[Dreamhack][CryptoPS] Textbook-RSA (2) | 2023.11.23 |
[Dreamhack][CryptoPS] [LINE CTF 2021] babycrypto1 (0) | 2023.11.21 |
[Dreamhack][CryptoPS] Chinese what? (0) | 2023.11.11 |
[Dreamhack][CryptoPS] Basic_Crypto (0) | 2023.11.09 |