MTCTF 2021 Writeup(复现练习)

NSSCTF Crypto继续刷题中,本文章用来记录,有问题欢迎交流\(●´ϖ’●)/

Symbol

题目

分析

看格式像是flag,猜测前四个字母就是flag,仔细观察对比之后,发现希腊字母$\lambda ,\alpha ,\gamma$的latex语法标注分别为:

1
\lambda,\alpha,\gamma

发现首字母分别对应$l,a,g$,那么第一个应该是$f$,看起来像是音乐符号,搜索之后发现是降号(flat)$\flat$对应$f$,证明我们的思路是正确的,就是要找到对应符号的英文语法的首字母,那么接下来便挨个寻找即可
找到一个参考博客:Latex符号大全 - 高峰OUC - 博客园

1
\forall \uplus \nu _ \Lambda \alpha T \epsilon \Xi _ T \approx \triangleleft \hbar

即$\forall \uplus \nu _ \Lambda \alpha T \epsilon \Xi _ M \approx \triangleleft \hbar$
对应的字符为fun_LaTeX_Math,计算得到32为md5为e1b217dc3b5e90b237b45e0a636e5a86

Strange_rsa1

题目

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from Crypto.Util.number import *
from sage.all import RealField
from secret import flag1


Bits = 512
p = getPrime(Bits)
q = getPrime(Bits)
n = p * q

gift = RealField(prec=Bits*2)(p) / RealField(prec=Bits*2)(q)
e = 0x10001
m = bytes_to_long(flag1)
c = pow(m, e, n)

output = open('output.txt', 'w')
output.write('n = ' + str(n) + '\n')
output.write('c = ' + str(c) + '\n')
output.write('gift = ' + str(gift) + '\n')

分析

$gift = \frac{p}{q},n=p\cdot q$
即$p = \sqrt {gift\cdot n}=\sqrt{p^2}$
这里使用sagemath中的sqrt进行高精度开方,之后正常RSA解密即可

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#sage
import gmpy2
from Crypto.Util.number import *

n = 108525167048069618588175976867846563247592681279699764935868571805537995466244621039138584734968186962015154069834228913223982840558626369903697856981515674800664445719963249384904839446749699482532818680540192673814671582032905573381188420997231842144989027400106624744146739238687818312012920530048166672413
c = 23970397560482326418544500895982564794681055333385186829686707802322923345863102521635786012870368948010933275558746273559080917607938457905967618777124428711098087525967347923209347190956512520350806766416108324895660243364661936801627882577951784569589707943966009295758316967368650512558923594173887431924
gift = 0.9878713210057139023298389025767652308503013961919282440169053652488565206963320721234736480911437918373201299590078678742136736290349578719187645145615363088975706222696090029443619975380433122746296316430693294386663490221891787292112964989501856435389725149610724585156154688515007983846599924478524442938
e = 0x10001
p = int(sqrt(n*gift))
#print(p)
q = n // p
phi = (p-1)*(q-1)
d = inverse(e, phi)
m = pow(c, d, n)
ans = long_to_bytes(m)
print(ans)

MTCTF 2021 Writeup(复现练习)
http://ramoor.github.io/2025/08/14/MTCTF 2021 Writeup(复现练习)/
作者
Ramoor
发布于
2025年8月14日
许可协议