1、原来你也玩原神
题目描述:旅行者收到了一封奇怪的来信,是提瓦特大陆的语言!
Flag格式 NSSCTF{全部大写}
这时我们下载附件就会看到这样一张图
观察这张图片,我们很容易就能看出下面这串字符很像flag的格式。
那么现在就需要翻译这串提瓦特文字,翻译这串文字只需要在浏览器里面搜索“提瓦特语言翻译”,我们就能够找到这样一张图
再看上面的那串提瓦特文字,第一个字符在图表中对应为L,第二个字符对应为I
以此类推,根据这张图就能把上面那串文字翻LITCTF{YUANLAINIYEWANYUANSHENWWW}
然后就只需要把LIT改为NSS便得到本题的flag:NSSCTF{YUANLAINIYEWANYUANSHENWWW}
2、Hex?Hex!
题目描述: 如果你也和我一样知道hex的话,那我觉得,这件事,太酷啦!
Flag格式 NSSCTF{}
下载附件得到一串字符:4c69744354467b746169313131636f6f6c6c616161217d
根据题目和题目描述我们大致确认编码方式为Hex
这时我们就可以尝试把这串字符放在Hex的在线解码工具里进行解码
我们得到LitCTF{tai111coollaaa!}
同上,我们将Lit改为NSS便得到本题flag:NSSCTF{tai111coollaaa!}
3、家人们!谁懂啊,RSA签到都不会
题目描述:最最最最最基础的RSA!
Flag格式 NSSCTF{}
题目附件:
from Crypto.Util.number import *
from secret import flag
m = bytes_to_long(flag)
p = getPrime(512)
q = getPrime(512)
e = 65537
n = p*q
c = pow(m,e,n)
print(f'p = {p}')
print(f'q = {q}')
print(f'c = {c}')
'''
p = 12567387145159119014524309071236701639759988903138784984758783651292440613056150667165602473478042486784826835732833001151645545259394365039352263846276073
q = 12716692565364681652614824033831497167911028027478195947187437474380470205859949692107216740030921664273595734808349540612759651241456765149114895216695451
c = 108691165922055382844520116328228845767222921196922506468663428855093343772017986225285637996980678749662049989519029385165514816621011058462841314243727826941569954125384522233795629521155389745713798246071907492365062512521474965012924607857440577856404307124237116387085337087671914959900909379028727767057
'''
根据题目描述我们可以确认这是RSA编码
抱歉,刚才去测中了
回归正题,关于RSA我并没有系统的学习过,所以我上网上搜索借鉴了其他师傅写的脚本修改了一下捏!
from Crypto.Util.number import *
c=108691165922055382844520116328228845767222921196922506468663428855093343772017986225285637996980678749662049989519029385165514816621011058462841314243727826941569954125384522233795629521155389745713798246071907492365062512521474965012924607857440577856404307124237116387085337087671914959900909379028727767057
p=12567387145159119014524309071236701639759988903138784984758783651292440613056150667165602473478042486784826835732833001151645545259394365039352263846276073
q=12716692565364681652614824033831497167911028027478195947187437474380470205859949692107216740030921664273595734808349540612759651241456765149114895216695451
n=p*q
pq=p*(q-1)
qp=q*(p-1)
e=65537
phi=pq*qp//n
print(phi)
d=inverse(e,phi)
m=pow(c,d,n)
print(long_to_bytes(m))
然后捏,我把我修改后的脚本放到python环境里跑了一下得到
这样我们就得到了明文m :LitCTF{it_is_easy_to_solve_question_when_you_know_p_and_q}
同上,我们得到本题flag:NSSCTF{it_is_easy_to_solve_question_when_you_know_p_and_q}
4、factordb
题目描述:能分解n不仅仅只有yafu哦,还有factordb!!!!
Flag格式 NSSCTF{}
题目附件
e = 65537
n = 87924348264132406875276140514499937145050893665602592992418171647042491658461
c = 87677652386897749300638591365341016390128692783949277305987828177045932576708
这题还是RSA,我去搜索了一下这种类型的RSA怎么解码,然后得知这题需要把n进行因式分解为p和q
从上面的图能看到 n分解后得到p=275127860351348928173285174381581152299 q=319576316814478949870590164193048041239
然后根据已知信息e、c、n、p、q编写脚本如下
from Crypto.Util.number import *
c=87677652386897749300638591365341016390128692783949277305987828177045932576708
n=87924348264132406875276140514499937145050893665602592992418171647042491658461
p=275127860351348928173285174381581152299
q=319576316814478949870590164193048041239
pq=p*(q-1)
qp=q*(p-1)
e=65537
phi=pq*qp//n
print(phi)
d=inverse(e,phi)
m=pow(c,d,n)
print(long_to_bytes(m))
经python环境跑后得
明文m为LitCTF{factordb!!!}
同上,的flag为NSSCTF{factordb!!!}