博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
201701月赛-rsa
阅读量:6343 次
发布时间:2019-06-22

本文共 1588 字,大约阅读时间需要 5 分钟。

:

(转)题解链接:

(转)payload:
(学习中。。。)

:给定公钥文件、一个由公钥加密后的包含压缩包密码的文本、加密后的压缩包,需要找到私钥解密文本,用其中的密码打开压缩包。

openssl rsa -in public.key -pubin -text -modulus

看到N并没有什么特殊之处(比如很多零之类),N的bit位还特别多(就是Modulus,都2048位了,直接暴力分解不可能)。

python -c "print long(0x94A03E6E0EDCF···A5FD5CAB066881))“

把10进制的N扔到 上看看能不能分解,挺幸运的,恰好能分解。

而且我还注意到分解后的p和q相差很大。当p和q之差特别大或者p和q大小差不多时,还可以用软件yafu直接分解。

得到p和q以后,就可以用生成私钥文件。

python ./rsatool.py -p 250527704258269 -q 74891071972884336452 ··· 78063375349 -o private.pem

另外看到加密的文本里末尾有着熟悉的“==”,猜测这个文本还被base64编码了。脚本如下:

#base64解码 rsa解密def decrypt_RSA(private_key_loc, package):    from Crypto.PublicKey import RSA     from Crypto.Cipher import PKCS1_OAEP     from base64 import b64decode     key = open(private_key_loc, "r").read()     rsakey = RSA.importKey(key)     rsakey = PKCS1_OAEP.new(rsakey)     decrypted = rsakey.decrypt(b64decode(package))     return decrypted    key = "Zc2LYzlDHW6fEwMqqey8d6uCYWXEcUWt0LMvx3fMA/YMezn7jkXoUOkZD8pQyH5DBhJFCzSIoIUMaV+rJzyUooAIfxCG87Ej9CDDOb1CB+bxY2fH4Xr0D2iJMyKCgN9WwLggfJheJEcLsjhNx32lhJ81WGX/yQpk9HEDAaIBu1ds5BP0Cfy+aUOp9JDH9+b+9jjTgJpccBfh4uCG2XusQ7SDVMbejBIH/rGKNVlg8aSasOjDQ0PErHwzMVp4ewEk0va4NBJYhilxeTZyO+m2f/tw63LmTHmVxFzmzcCvAYv5M9wsACqi8BkCaSqwRHKXmN96eeLJE0qyEUvgSM+i9w=="print decrypt_RSA('private.pem', key)

levle1.zip压缩包密码是FaC5ori1ati0n_aTTA3k_p_tOO_sma11

解压之后又蹦出三个文件,其中一个还是压缩包。

既然之前考的是p、q过相差大时的解决方案,那么这一次应该是p、q差不多的时候如何对N进行分解,这一次我直接用yafu分解了N得到p、q,生成私钥文件。openssl rsautl -decrypt -in level2.passwd.enc -inkey private.pem -out key.out解密文本。

level2.zip密码fA35ORI11TLoN_Att1Ck_cL0sE_PrI8e_4acTorS,可得FLAG{500_sI,pLE_tRE1S7Re_iN_rSa_AtTa3K_2_24CASF}。

转载地址:http://riula.baihongyu.com/

你可能感兴趣的文章
hdu1384Intervals(差分约束)
查看>>
python 字符编码
查看>>
269D Maximum Waterfall
查看>>
C++11 多线程
查看>>
sed-加速你在Linux的文件编辑
查看>>
HttpServer发送数据到kafka
查看>>
phpcms站---去除域名绑定目录中的HTML
查看>>
2017-5-3 打印控件、MDI 窗体容器
查看>>
20155303 2016-2017-2 《Java程序设计》第九周学习总结
查看>>
一次很失败的抄底
查看>>
数据结构C++(10)二叉树——链表实现(linkBinaryTree)
查看>>
利用Condition实现多线程交替执行
查看>>
里氏替换原则(设计模式原则2)
查看>>
lamp一键安装
查看>>
解决“iOS 7 app自动更新,无法在app中向用户展示更新内容”问题
查看>>
OpenCV——Haar-like特征
查看>>
HttpWebResponse发送post请求并接收
查看>>
python 相对路径和绝对路径的区别
查看>>
Day36 python基础--并发编程基础5
查看>>
《Python从小白到大牛》第6章 数据类型
查看>>