攻防世界-baigeiRSA

这篇具有很好参考价值的文章主要介绍了攻防世界-baigeiRSA。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.下载附件,得到压缩包,解压得到两个文件。

import libnum
from Crypto.Util import number
from secret import flag

size = 128
e = 65537
p = number.getPrime(size)
q = number.getPrime(size)
n = p*q

m = libnum.s2n(flag)
c = pow(m, e, n)

print('n = %d' % n)
print('c = %d' % c)

 

n = 88503001447845031603457048661635807319447136634748350130947825183012205093541
c = 40876621398366534035989065383910105526025410999058860023908252093679681817257

 2.分析过程。

根据题目得到是RSA算法。

RSA是一种常用的非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出。它的安全性建立在大质数分解的困难性上,可以用来实现数据的加密和数字签名。RSA算法的基本原理是将明文分成若干整数,然后用一个大质数的模来加密这些整数。具体来说,假设要加密的明文为M,那么RSA算法会用两个大质数p和q来计算出n=pq,并计算出φ(n)=(p-1)(q-1),然后选择一个大于1小于φ(n)的整数e来作为公钥,并计算出一个整数d,使得ed=1 mod φ(n),即d为e的模φ(n)的逆元,最后用公钥(n, e)来加密M。要解密,则需要用私钥(n, d)来对加密后的结果进行解密。

具体来说,加密过程如下所示:

  1. 选择两个大质数p和q,计算出n=pq,并计算出φ(n)=(p-1)(q-1)。

  2. 选择一个大于1小于φ(n)的整数e,计算出d,使得ed=1 mod φ(n)。

  3. 根据明文M,计算出密文C=Me mod n。
  4. 解密过程则可以使用私钥(n, d)来计算出原文M,具体来说:

  5. 输入密文C,以及私钥(n, d)。

  6. 计算出原文M=Cd mod n。

  7. 请注意,由于RSA算法依赖于大质数的分解难度,所以它的安全性并不是十分稳定。目前,对于小规模的RSA密钥,已经有多种针对性的分解方法可以破解RSA密钥,但是对于大规模的RSA密钥,还没有有效的分解方法。所以,如果要使用RSA算法,需要选择更大的密钥来保证安全性。另外,由于RSA算法的计算复杂度较高,它不太适合用于加密大量数据。通常情况下,RSA算法更多的用于数字签名的场景。

通过白给的文件中的出,以知的为n,c,e。

n=p*q,使用yafu工具。

yafu用于自动整数因式分解,在RSA中,当p、q的取值差异过大或过于相近的时候,使用yafu可以快速的把n值分解出p、q值,原理是使用Fermat方法与Pollard rho方法等。

 攻防世界-baigeiRSA,CTF,安全

得出p和q是分别是其中的一个:

P39 = 274539690398523616505159415195049044439
P39 = 322368694010594584041053487661458382819

 3.代码介绍

libnum库 是一个关于各种数学运算的函数库。

libnum.s2n:数字转化为字符串。

number.getPrime:产生二进制数。

pow() :pow(x, y[, z])函数是计算 x 的 y 次方,如果 z 在存在,则再对结果进行取模,其结果等效于 pow(x,y) %z。

 4.解题

p=274539690398523616505159415195049044439
q=322368694010594584041053487661458382819

oula=(p-1)*(q-1)
print(oula)

 得出结果为:

 欧拉fein=88503001447845031603457048661635807318850228250339231930401612280155697666284

然后,计算d的值:

from Crypto.Util.number import *
print(inverse(65537,88503001447845031603457048661635807318850228250339231930401612280155697666284))

 逆元结果:

7662328611548784798175310040223409230315031128864989272824492242208270573241

 验证是否为逆元,结果为1,则是,否则反之:

攻防世界-baigeiRSA,CTF,安全

 所以最终为:攻防世界-baigeiRSA,CTF,安全

 最终的flag值是:文章来源地址https://www.toymoban.com/news/detail-543808.html

HSCTF{@Zh3n_Ba1_G3i!@}

到了这里,关于攻防世界-baigeiRSA的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [CTF/网络安全] 攻防世界 PHP2 解题详析

    翻译: 你能给这个网站进行身份验证吗? index.php是一个常见的文件名,通常用于Web服务器中的网站根目录下。它是默认的主页文件名,在访问一个网站时,如果没有特别指定页面文件名,则服务器会自动加载index.php文件。 在Web应用程序中,index.php文件通常是网站的入口文件

    2024年02月13日
    浏览(38)
  • [CTF/网络安全] 攻防世界 simple_php 解题详析

    题目描述:小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。 $a=@$_GET[\\\'a\\\']; 从HTTP GET请求参数中获取一个名为a的变量,并将其赋值给变量a。@符号用于禁止错误输出,如果不存在参数a则会将变量a设置为NULL。 $b=@$_GET[\\\'b\\\']; 从HTTP GET请求参数中获取一个名为b的变量,

    2024年02月13日
    浏览(37)
  • [CTF/网络安全] 攻防世界 disabled_button 解题详析

    题目描述:X老师今天上课讲了前端知识,然后给了大家一个不能按的按钮,小宁惊奇地发现这个按钮按不下去,到底怎么才能按下去呢? 题目提示 前端知识 ,由HTML相关知识可知,该按钮 即input标签 不能提交的原因有以下六种: 没有包含在表单中: input 标签必须包含在表

    2024年02月07日
    浏览(42)
  • [CTF/网络安全] 攻防世界 view_source 解题详析

    题目描述:X老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了。 单击鼠标右键,点击查看页面源代码: 使用浏览器菜单:不同的浏览器可能会在不同的位置提供查看页面源代码的选项。 以Firefox为例,打开应用程序菜单即可: 使用快捷键:几乎

    2024年02月13日
    浏览(43)
  • [CTF/网络安全] 攻防世界 weak_auth 解题详析

    题目描述:小宁写了一个登陆验证页面,随手就设了一个密码。 weak_auth翻译: 弱认证 这个术语通常用来描述一种较弱的安全认证方法或机制,它可能存在安全漏洞,易受到攻击或者被绕过。 在信息安全领域中,弱认证是一种常见的安全威胁。例如,使用简单的密码或者未加

    2024年02月13日
    浏览(34)
  • [CTF/网络安全] 攻防世界 command_execution 解题详析

    题目描述:小宁写了个ping功能,但没有写waf,X老师告诉她这是非常危险的,你知道为什么吗。 ping 命令是一个常用的网络命令,用于测试两台计算机之间网络连接的连通性。通过向目标计算机发送 ICMP 协议的数据包,并等待目标计算机返回响应数据包来测试网络的可达性,同时

    2024年02月06日
    浏览(39)
  • [CTF/网络安全] 攻防世界 wife_wife 解题详析

    该题涉及Java Script原型链污染:JavaScript 原型链污染讲解 可以看到,后端编程语言为Node.js, 简单来讲,通过 newUser.__proto__ 可以访问到新对象的原型 未污染时: 污染时: 我们以知识点的利用为主,查看源代码: 若isAdmin的属性是true,则它为管理员,否则为普通用户;于是我

    2024年02月06日
    浏览(38)
  • [CTF/网络安全] 攻防世界 fileinclude 解题详析(php伪协议)

    由于index.php在/var/www/html目录下,而flag.php与index.php同为php文件,故猜想flag.php也在该目录下。 查看页面源代码获取更多信息: 源代码中看到 @include($lan.\\\".php\\\"); ,即此处存在文件包含。 又因为 $lan = $_COOKIE[\\\'language\\\']; 因此解题思路为:利用php伪协议,构造language参数,来读取该目

    2024年02月07日
    浏览(35)
  • [CTF/网络安全] 攻防世界 php_rce 解题详析

    PHP RCE 指的是通过远程代码执行漏洞(Remote Code Execution)来攻击 PHP 程序的一种方式。简单来说,由于PHP应用程序没有正确处理外部输入数据(如用户提交的表单、请求参数等),攻击者通过某些手段向 PHP 应用程序中注入恶意代码,然后通过这些恶意代码实现对受攻击服务器

    2024年02月06日
    浏览(42)
  • [CTF/网络安全] 攻防世界 file_include 解题详析(php伪协议+convert转换过滤器)

    题目描述:怎么读取文件呢? 思路: 由代码审计可知,可通过filename参数构造POC,来读取check.php POC的构造涉及PHP伪协议,参考链接: 文件包含 | PHP伪协议实战 POC: 回显如下: 猜测被过滤,怎么办呢? 该题涉及到 convert转换过滤器 常见的convert转换过滤器有这两种:

    2024年02月07日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包