首页 > 其他分享 >babyRSA GWCTF 2019

babyRSA GWCTF 2019

时间:2022-08-30 01:55:07浏览次数:40  
标签:F2 babyRSA m1 pow flag GWCTF 2019 m2 c2

Involved Knowledge

  • RSA
  • Adjacent Element

Description

encrypt.py

import hashlib
import sympy
from Crypto.Util.number import *

flag = 'GWHT{******}'
secret = '******'

assert(len(flag) == 38)

half = len(flag) / 2

flag1 = flag[:half]
flag2 = flag[half:]

secret_num = getPrime(1024) * bytes_to_long(secret)

p = sympy.nextprime(secret_num)
q = sympy.nextprime(p)

N = p * q

e = 0x10001

F1 = bytes_to_long(flag1)
F2 = bytes_to_long(flag2)

c1 = F1 + F2
c2 = pow(F1, 3) + pow(F2, 3)
assert(c2 < N)

m1 = pow(c1, e, N)
m2 = pow(c2, e, N)

output = open('secret', 'w')
output.write('N=' + str(N) + '\n')
output.write('m1=' + str(m1) + '\n')
output.write('m2=' + str(m2) + '\n')
output.close()

secret

N = 6365851495945747469090301601826908662229092...

m1 = 900099743414522432169869380283712...

m2 = 487443985757405173426628188375657117604235507...

Analyze

half = len(flag) / 2

flag1 = flag[:half]
flag2 = flag[half:]

这里将flag分为了长度相等的两半,每段长度为19

secret_num = getPrime(1024) * bytes_to_long(secret)

p = sympy.nextprime(secret_num)
q = sympy.nextprime(p)

通过这部分我们可以得到p和q相邻,因为q是p的下一个质数

F1 = bytes_to_long(flag1)
F2 = bytes_to_long(flag2)

将两部分flag转成数值

c1 = F1 + F2
c2 = pow(F1, 3) + pow(F2, 3)
assert(c2 < N)

c1为F1与F2的和

c2为F1与F2的立方和

并且保证c2<N

m1 = pow(c1, e, N)
m2 = pow(c2, e, N)

\(c1^e ≡ m1 (mod N)\)

\(c2^e ≡ m2 (mod N)\)

也就是我们得到的m1与m2

以上就是题目加密的一个思路,涵盖的知识点是RSA,且p与q相邻

我们逆着题目加密的过程进行解密

  • 首先通过m1 , m2得到c1 , c2

\(m1^d ≡ c1 (mod N)\)

\(m2^d ≡ c2(mod N)\)

pow(m1 , d , N) pow(m2 , d , N)

接着我们可以通过z3来对F1F2进行求解

\(F1 + F2 = c1\)

\(F_1^3 + F_2^3 = c2\)

得到F1F2后,就相当于得到flag的两部分了

GWHT{f709e0e2cfe7e530ca8972959a1033b2}

标签:F2,babyRSA,m1,pow,flag,GWCTF,2019,m2,c2
From: https://www.cnblogs.com/m1nus/p/16637957.html

相关文章

  • Discuz!X3.2/3.3/3.4程序搬家/数据库修改教程 (2019-06-11 17:07:29)
    路径:/wwwroot/config/config_global.php这个根据你网站安装的路径而定。 打开config_global.php文件修改:$_config['db']['1']['dbpw']='原来密码'; 原来密码......
  • Windows RDP的RCE漏洞分析和复现(CVE-2019-0708)
    0x00漏洞描述Windows系列服务器于2019年5月15号,被爆出高危漏洞,该漏洞影响范围较广如:windows2003、windows2008、windows2008R2、windowsxp系统都会遭到攻击,该服务器漏......
  • 数据库学习笔记 (本数据库学习笔记以SQL sever 2019 为例进行学习) 20220824 第二节课
    什么是数据模型?数据模型:是对现实世界数据特征的抽象,他是用来描述数据、组织数据和对数据进行操作的。在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数据......
  • re | [GXYCTF2019]minecraft
    [GXYCTF2019]minecraft闲得无聊,找个题练练手。提示是使用了boost库的hash,给了exe和dll,都是64位的,dll导出了一个函数,就是加密和对比用的。基本格局如下:主函数:dll:d......
  • 8.27训练赛(2018-2019, ICPC, Asia Yokohama Regional Contest 2018,gym102082)
    B一开始开题的时候想假了,以为用map存差的结果贪心就行了,实际上是一个比较妙的dp,用到了一个结论:两项就唯一确定一个等差数列。设\(f[i,j]\)表示最后两个数选了\(a_i\),\(a......
  • 数据库学习笔记 (本数据库学习笔记以SQL sever 2019 为例进行学习) 20220823 第一节课
    教材及参考数据库课程讲什么?内容安排第一部分数据库原理部分第一章数据库系统概述为什么要学习数据库?数据库的发展改变了人们的工作和生活模式信息积累与运用......
  • VS2019修改文件编码
    1.查看文件编码安装扩展,FileEncoding,就可以在文件窗口右下角查看到该文件的编码方式,同时也可以直接在此处修改。2.修改项目的文件编码使用editorconfig文件。在工具......
  • 2019ICPC南京[补题]
    1.0C1.1题目大意:  给我们一张网格图,我们求出所有的路径使得这个路径至少包括四个点,且这四个点是严格递增且相邻两个点的差值为\(1\),......
  • VS2019使用dbml数据文件
    1.场景:以前的项目数据库对象用的是dbml,但是因为VS使用的是2019,打开就没有图像了(只能手动写映射类对象属性)2.处理方式;安装【LINQtoSQL工具】和【EntityFramework6......
  • [RootersCTF2019]I_<3_Flask-1|SSTI注入
    1、打开之后很明显的提示flask框架,但是未提供参数,在源代码中发现了一个git地址,打开之后也是没有啥用,结果如下:2、这里我们首先需要爆破出来参数进行信息的传递,就需要使用A......