攻防世界_Crypto_进阶区

本文介绍了在攻防世界平台上,通过RSA算法和古典密码解决了一系列加密挑战。涉及RSA的公钥私钥计算、共模攻击、GCD应用以及 Vigener 密码的破解。通过分解大素数、使用在线工具和专门的CTF工具,成功解密并获取了flag。


虽然攻防世界大多数的题已经过时了,但还是从基础开始吧!
不定期更新

1.flag_in_your_hand

下载得到一个html文件和一个js文件,进入html,尝试输入后失败,于是看页面源码,也没有什么重要的信息,那一定在js里。
在这里插入图片描述

ck()函数决定了输出内容,所以按照要求,输入的每一个字符的ASCII码要比a小3,于是得到要输入的内容为:security-xbu
然后得到flag:RenIbyd8Fgg5hawvQm7TDQ

13.wtc_rsa_bbq

下载得到一个叫“cry200”的文件,没有后缀名,用记事本打开有.pem后缀
在这里插入图片描述
一开始没想到是压缩文件,但是丢到kali里面自动变成了压缩文件,解压一下得到了key.pem和cipher.bin两个文件*(这里也可以用HxD打开,观察到文件头是504B0304,则可以确定是.zip压缩文件,应该是标准的做法)*
于是放在RsaCtfTool的路径下,执行命令“python3 RsaCtfTool.py --publickey key.pem --uncipherfile cipher.bin ”就得到了flag:flag{how_d0_you_7urn_this_0n?}在这里插入图片描述

看到WP区有个哥们设s=(n+1)**0.5,p=s+1,q=s-1,assert一下发现是对的,那么就可以按照标准的RSA来解了。

19.cr4-poor-rsa

下载得到两个文件,一个公钥文件,用在线网站解析得到n、e,再分解n得到p、q;flag.b64是一个用base64加密的文件,因此用b64decode读取文件内容,脚本如下:

import base64
import gmpy2
from Crypto.Util.number import *
n=833810193564967701912362955539789451139872863794534923259743419423089229206473091408403560311191545764221310666338878019
e=65537
p=863653476616376575308866344984576466644942572246900013156919
q=965445304326998194798282228842484732438457170595999523426901
phi=(p-1)*(q-1)
d=gmpy2.invert(e,phi)

f=open("./flag.b64","r").read()
c=base64.b64decode(f)
c=bytes_to_long(c)
m=gmpy2.powmod(c,d,n)

print(long_to_bytes(m))

20.best_RSA

两个公钥文件,用在线网站解析,发现n相同,e互质,为共模攻击;两个十六进制文件,注意读取的时候要转换成数字。脚本如下:

import gmpy2
from Crypto.Util.number import *
import libnum
n1=13060424286033164731705267935214411273739909173486948413518022752305313862238166593214772698793487761875251030423516993519714215306808677724104692474199215119387725741906071553437840256786220484582884693286140537492541093086953005486704542435188521724013251087887351409946184501295224744819621937322469140771245380081663560150133162692174498642474588168444167533621259824640599530052827878558481036155222733986179487577693360697390152370901746112653758338456083440878726007229307830037808681050302990411238666727608253452573696904083133866093791985565118032742893247076947480766837941319251901579605233916076425572961
e1=117
n2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值