XCTF攻防世界 Normal_RSA

实验环境: windows 10

实验所需工具:
python工具:
yafu (可以在https://github.com/DarkenCode/yafu上下载)

gmpy2 (直接pip install gmpy2即可)

rsa加密的相关知识可以看这两篇文章
http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html
http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html

看题

题目给了这两个文件
flag.enc 是经过rsa加密后的密文, pubkey.pem 是rsa的公钥文件
可以用记事本打开pubkey.pem文件,把文件内容放到rsa解密网站上分析
由此可知

n = 87924348264132406875276140514499937145050893665602592992418171647042491658461
e = 65537

使用yafu对n进行质因数分解,到yafu安装的文件目录输入yafu-x64使用
输入factor(87924348264132406875276140514499937145050893665602592992418171647042491658461)
即可分解出质因数
其中的两个p39为分解出来的两个质因数

p1 = 319576316814478949870590164193048041239
p2 = 275127860351348928173285174381581152299

然后在计算n的欧拉函数φ(n) = (p1-1)*(p2-1)
φ(n) = 87924348264132406875276140514499937144456189488436765114374296308467862464924

再利用 gmpy2 计算出 e 模 φ(n) 的逆元 d
gmpy2.invert()方法中第一个参数为 e ,第二个参数为 φ(n),通过此方法计算可以得到 d
得到d = 10866948760844599168252082612378495977388271279679231539839049698621994994673

到这里,我们已经知道了

n = 87924348264132406875276140514499937145050893665602592992418171647042491658461
e = 65537
d = 10866948760844599168252082612378495977388271279679231539839049698621994994673

看到好多文章中都用了 rsatool 这个工具 ,但是我安装总是会报错,也不知道是什么原因,现在都没安装好。。。

但是看了一下rsatool的作用是已知 n,e,d密文文件可以进行解密得到从而得到明文

既然用不了rsatool,那就根据RSA加解密的原理来计算
设m为明文,c为密文,则RSA的加解密算法为c=memodnc = m^{e}\mod\ n c=memod n
m=cdmodnm = c^{d}\mod\ n m=cdmod n

密文c在flag.enc文件中,打开文件看到是这样的

但根据公式, c 需要为数字,那么就用16进制编码重新打开文件,得到了密文的16进制形式

c = 0x6d3eb7df23eee1d38710beba78a0878e0e9c65bd3d08496dda64924199110c79

根据m=cdmodnm = c^{d}\mod\ n m=cdmod n
进行计算得到明文m
不知道pow函数作用的看这里

现在已经得到了明文 m16进制形式
那么就可以把16进制转换为字符串,即可得到明文
但是又出现了一个问题,我放到在线网站上转换为字符串的时候,转换不出字符串
后来发现这串16进制的字符个数为奇数个,正常的话16进制的字符应该是由两个 0~f 的数组成,也就是这串16进制的字符数的个数一定是偶数

可以看到这一串字符串的长度为 64-2-1=61 是奇数(减2是因为最前面的0x,减1是因为最后面的L(表示长整型))
于是就把第一个字符删去,再转换为字符串
其中可见字符串即为flag

XCTF攻防世界 Normal_RSA相关推荐

  1. XCTF攻防世界Web新手入门题大全

    XCTF攻防世界Web之WriteUp无图版 (Tips:有图版本,请移步我的资源,自行下载doc文档) 0x00 准备 [内容] 在xctf官网注册账号,即可食用. [目录] 目录 0x01 vie ...

  2. XCTF攻防世界Web之WriteUp

    XCTF攻防世界Web之WriteUp 0x00 准备 [内容] 在xctf官网注册账号,即可食用. [目录] 目录 0x01 view-source2 0x02 get post3 0x03 rob ...

  3. XCTF攻防世界练习区-web题(新手)

    XCTF攻防世界练习区-web题(新手) https://adworld.xctf.org.cn/task?now_checked_num=3&name=web 001 view_source ...

  4. XCTF攻防世界BABYRE逆向

    攻防世界BABYRE逆向 拿到题目,查壳如下: 拖拽IDA Pro7.5打开,查看main函数,代码如下: 可以看到: (*(unsigned int (__fastcall **)(char *)) ...

  5. xctf攻防世界 crypto 新手练习区--write up(持续更新中)

    文章目录 base64 Caesar Morse Railfence 不仅仅是Morse easy RSA RSA算法 简介 RSA计算公钥和私钥 混合编码 转轮机加密 回转轮加密 base64 题目 ...

  6. XCTF 攻防世界 web 高手进阶区

    文章目录 ics-07 shrine( flask + jinja2 的 SSTI) easytornado(模板注入) upload(文件名注入) supersqli(堆叠注入) php_rce(T ...

  7. XCTF(攻防世界)—进阶web题Write Up(二)

    前言:继续总结学到的新知识 mfw 在about页面发现,搭建网站时用了git,尝试一下是否为git源码泄露 输入: http://111.198.29.45:36544/.git/ 果然是源码泄露, ...

  8. XCTF(攻防世界)—进阶web题Write Up(一)

    前言:这段时间做了一些XCTF的web进阶题,真的是学习到了很多知识,就来总结一下. Cat 一开始以为是命令注入,恰好最近学习了命令注入,就先来测试一下: 输入127.0.0.1,发现是可以ping ...

  9. xctf攻防世界 Web高手进阶区 wtf.sh-150

    1.进入环境,查看内容 一串奇奇怪怪的留言板内容,记着我们Login Register,搞个账户注册玩玩,登录进去后发现就是只能发个帖子.也没有什么可以利用的内容,于是使用dirsearch扫一扫,一 ...

最新文章

  1. 《iPhone开发秘籍》带你深入iPhone开发秘境
  2. 服务器跑python程序_远程编写+调试服务器上的Python程序
  3. 验证哥德巴赫猜想c语言算法,验证哥德巴赫猜想的简单优化
  4. 积木赛尔号机器人_赛尔号:谱尼三次败北,经历过被吊打、封印,一次比一次惨...
  5. 一个设置ip的vbs脚本
  6. C中的运算符优先级和结合性 *p++
  7. 超过10%的 Firebase 数据库易受攻击并暴露数据
  8. Java EE开发四大常用框架(1)
  9. Hector代码笔记
  10. 云服务下的安全特点及基础防护
  11. Win32程序和控制台应用程序的项目互转设置
  12. 性能优化之电量和网络
  13. python判断是否为素数_python判断一个数是否为素数
  14. vue分享至qq空间,新浪微博,微信朋友圈及微信好友
  15. 解决刷了Gargoyle固件后某些LED灯不亮的问题
  16. 算法学习【1】三个空汽水瓶可以换一瓶汽水
  17. 【Shell 脚本速成】01、编程语言与 Shell 脚本介绍
  18. Jasper问题总结与解决方法~
  19. 什么软件可以测试音乐速度,测算歌曲速度有什么好用的编曲软件
  20. vue 多页面应用搭建

热门文章

  1. java中包中建包怎么创建,Java集成开发环境 – IDEA中建包时如何把包分开
  2. Java去除字符串中空格、制表符、回车换行的方法
  3. Ubuntu18.04安装libsdl1.2-dev(亲测可行)
  4. iphone播放视频
  5. Java -- 用文本文档写代码
  6. 抓包工具:教你搞懂websocket如何来分析
  7. web前端高级JavaScript - 前端web高级开发知识体系课程大纲
  8. 将整个网站(包括子页)变为黑白色
  9. 苹果试玩换个新id行不_【图】- 日照市苹果app换个id重复刷试玩能不能 - 昆山玉山其他服务 - 昆山百姓网...
  10. 线性表的顺序表示和实现 (创建,插入,删除,查找)数据结构 严蔚敏(C语言版)代码实现