测中日记 LitCTF 密码学 WP

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!!!}

 

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值