BUUCTF crypto做题记录(7)新手向

文章讲述了在几个网络安全竞赛中的RSA加密问题,包括低加密指数攻击、给出公钥直接解密、以及少见的Playfair密码和位移编码解密方法。作者展示了如何利用Python库和技巧来解决这些加密挑战。
摘要由CSDN通过智能技术生成

一、Dangerous RSA

得到的密文如下

首先,我们对n进行大数分解看行不行。

其次,我们可看一下数的特征(除了一些基础题,一般情况下n都是分解不了的,应该首先观察一下数据特征,我很久没做RSA了,有点生疏),可以看到e特别小,所以我们可以对e展开一下低加密指数爆破攻击。

n=0x52d483c27cd806550fbe0e37a61af2e7cf5e0efb723dfc81174c918a27627779b21fa3c851e9e94188eaee3d5cd6f752406a43fbecb53e80836ff1e185d3ccd7782ea846c2e91a7b0808986666e0bdadbfb7bdd65670a589a4d2478e9adcafe97c6ee23614bcb2ecc23580f4d2e3cc1ecfec25c50da4bc754dde6c8bfd8d1fc16956c74d8e9196046a01dc9f3024e11461c294f29d7421140732fedacac97b8fe50999117d27943c953f18c4ff4f8c258d839764078d4b6ef6e8591e0ff5563b31a39e6374d0d41c8c46921c25e5904a817ef8e39e5c9b71225a83269693e0b7e3218fc5e5a1e8412ba16e588b3d6ac536dce39fcdfce81eec79979ea6872793
e=0x3
c=0x10652cdfaa6b63f6d7bd1109da08181e500e5643f5b240a9024bfa84d5f2cac9310562978347bb232d63e7289283871efab83d84ff5a7b64a94a79d34cfbd4ef121723ba1f663e514f83f6f01492b4e13e1bb4296d96ea5a353d3bf2edd2f449c03c4a3e995237985a596908adc741f32365
import gmpy2
from Crypto.Util.number import *

for i in range(0,10):
    x=c+i*n
    m=gmpy2.iroot(x, 3)
    m=long_to_bytes(m[0])
    if b'flag' in m:
        print(m)
        print(i)
        break

得到的答案为 flag{25df8caf006ee5db94d48144c33b2c3b}

二、[HDCTF2019]basic rsa

得到如下代码:

import gmpy2
from Crypto.Util.number import *
from binascii import a2b_hex,b2a_hex

flag = "*****************"

p = 262248800182277040650192055439906580479
q = 262854994239322828547925595487519915551

e = 65533
n = p*q


c = pow(int(b2a_hex(flag),16),e,n)

print c

# 27565231154623519221597938803435789010285480123476977081867877272451638645710

p和q都给出来了,就是一个直接的解密了

import gmpy2
from Crypto.Util.number import *
from binascii import a2b_hex,b2a_hex

flag = "*****************"

p = 262248800182277040650192055439906580479
q = 262854994239322828547925595487519915551

e = 65533
n = p*q


# c = pow(int(b2a_hex(flag),16),e,n)

c=27565231154623519221597938803435789010285480123476977081867877272451638645710
d=inverse(e,(p-1)*(q-1))
m=gmpy2.powmod(c, d, n)

print(long2str(m))
# 27565231154623519221597938803435789010285480123476977081867877272451638645710
        

得到答案:flag{B4by_Rs4}

三、[GXYCTF2019]CheckIn

得到base64编码(后面有两个==)

直接解码得到

然后这种编码没有见过,不会做。网上教的方法是

 v对应G(GXY)或f(flag)
v到G位移47用ROT47解密

v到f位移16没找到对应的在线解密,ROT5、ROT13、ROT18、ROT47位移编码 (qqxiuzi.cn)

 

四、 Cipher

这个题目很奇怪,我先是用不规则编码网站解密没有得到很好的结果,于是在网上看了一下WP

“公平的玩吧”翻译成英文为 playfair

这是Playfair密码(哈哈哈哈哈) 普莱费尔密码百度百科

Playfair Cipher解密工具

从来没有见过的加解密Playfair加密解密_普莱费尔加密解密-ME2在线工具 (metools.info)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值