Bugku:加密 rsa

94 篇文章 2 订阅
24 篇文章 0 订阅

​    因为工作原因,所以停滞了一个月没有更新,哇哈哈哈,我终于又回来啦!!现在就要开始认真学习了。最近不仅在学习网络安全知识,还在准备软考【虽然很多人说没有用的这个证】,还是得去考一下。

 

下面进入正题,继续加密部分的题目,还剩2道题。

这道题提供了一个txt文件,话不多说,直接打开。

 

N : 460657813884289609896372056585544172485318117026246263899744329237492701820627219556007788200590119136173895989001382151536006853823326382892363143604314518686388786002989248800814861248595075326277099645338694977097459168530898776007293695728101976069423971696524237755227187061418202849911479124793990722597e : 354611102441307572056572181827925899198345350228753730931089393275463916544456626894245415096107834465778409532373187125318554614722599301791528916212839368121066035541008808261534500586023652767712271625785204280964688004680328300124849680477105302519377370092578107827116821391826210972320377614967547827619enc : 38230991316229399651823567590692301060044620412191737764632384680546256228451518238842965221394711848337832459443844446889468362154188214840736744657885858943810177675871991111466653158257191139605699916347308294995664530280816850482740530602254559123759121106338359220242637775919026933563326069449424391192

一堆数字,不过已经标注出了e啊,n啊这种字眼,并且题目就是rsa,很明显的要用rsa算法了。

 

查询百度:

 

看似复杂,其实只是需要小小的编个程...小小的

这里已经给出了密文,只需要用最后一个公式即可解出明文,不过问题在于d的值,需要用n和e进行推算。

 

根据大神提示使用的工具:https://github.com/Ganapati/RsaCtfTool

按照Kali系统安装步骤进行了安装,

 

现在直接用工具测试出p、q的值,

首先生成公钥,也就是知道了n和e的值,需要知道fi(n)的值:

./RsaCtfTool.py --createpub -n 460657813884289609896372056585544172485318117026246263899744329237492701820627219556007788200590119136173895989001382151536006853823326382892363143604314518686388786002989248800814861248595075326277099645338694977097459168530898776007293695728101976069423971696524237755227187061418202849911479124793990722597 -e 354611102441307572056572181827925899198345350228753730931089393275463916544456626894245415096107834465778409532373187125318554614722599301791528916212839368121066035541008808261534500586023652767712271625785204280964688004680328300124849680477105302519377370092578107827116821391826210972320377614967547827619>test.pem

这个里面就是-n后面放入n的值,-e后面放入e的值,并放入了test.pem文件中。

 

生成公钥之后就需要推理出私钥d的值:

./RsaCtfTool.py --publickey test.pem --private > test.key

因为我这里出现了无法保存的现象,不知道其他小伙伴怎么样的,安装了几个加解密的库也没有用。

卡住之后就只能手动保存下来,进行读取展示了

 

./RsaCtfTool.py --key test.key --dumpkey

d,p,q全部都计算出来了。

 

n: 460657813884289609896372056585544172485318117026246263899744329237492701820627219556007788200590119136173895989001382151536006853823326382892363143604314518686388786002989248800814861248595075326277099645338694977097459168530898776007293695728101976069423971696524237755227187061418202849911479124793990722597e: 354611102441307572056572181827925899198345350228753730931089393275463916544456626894245415096107834465778409532373187125318554614722599301791528916212839368121066035541008808261534500586023652767712271625785204280964688004680328300124849680477105302519377370092578107827116821391826210972320377614967547827619d: 8264667972294275017293339772371783322168822149471976834221082393409363691895p: 15991846970993213322072626901560749932686325766403404864023341810735319249066370916090640926219079368845510444031400322229147771682961132420481897362843199q: 28805791771260259486856902729020438686670354441296247148207862836064657849735343618207098163901787287368569768472521344635567334299356760080507454640207003

按照大神的算法,直接按照RSA算法公式进行编程。

引用代码

 

import gmpy2from libnum import n2sn = '460657813884289609896372056585544172485318117026246263899744329237492701820627219556007788200590119136173895989001382151536006853823326382892363143604314518686388786002989248800814861248595075326277099645338694977097459168530898776007293695728101976069423971696524237755227187061418202849911479124793990722597'e = '354611102441307572056572181827925899198345350228753730931089393275463916544456626894245415096107834465778409532373187125318554614722599301791528916212839368121066035541008808261534500586023652767712271625785204280964688004680328300124849680477105302519377370092578107827116821391826210972320377614967547827619'enc = '38230991316229399651823567590692301060044620412191737764632384680546256228451518238842965221394711848337832459443844446889468362154188214840736744657885858943810177675871991111466653158257191139605699916347308294995664530280816850482740530602254559123759121106338359220242637775919026933563326069449424391192'p = '15991846970993213322072626901560749932686325766403404864023341810735319249066370916090640926219079368845510444031400322229147771682961132420481897362843199'q = '28805791771260259486856902729020438686670354441296247148207862836064657849735343618207098163901787287368569768472521344635567334299356760080507454640207003'd = '8264667972294275017293339772371783322168822149471976834221082393409363691895'n1 = gmpy2.mpz(n)enc1 = gmpy2.mpz(enc)d1 = gmpy2.mpz(d)r = gmpy2.powmod(enc1, d1, n1)s = n2s(r)print(s)

运算出结果,

 

 

主要是搭建环境花费了一些功夫,

flag{Wien3r_4tt@ck_1s_3AsY}

 

这道题就是加密的硬性题目了,要求平时对DES、RSA等主流加密算法的熟练以及加解密工具的应用,还需要多多积累。

【开始营销】

想要学习CTF而没有动力?

想要在CTF领域比别人牛?

想要在网络安全信息安全方向探索而无法坚持?

欢迎关注我的微信公众号!!~~

大家一起学习,用我的毅力给与你力量!!我相信:

我思故我在。

学无止境。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酥酥糖学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值