2024年第四届“网鼎杯”网络安全比赛---朱雀组Crypto- WriteUp

news2024/11/14 10:59:58

2024年第四届“网鼎杯”网络安全比赛---朱雀组Crypto-WriteUp

    • Crypto:
        • Crypto-2:
        • Crypto-3:

前言:本次比赛已经结束,用于赛后复现,欢迎大家交流学习!

Crypto:

Crypto-2:

给出了p的高256位,爆破8位即可用copersmith

from Crypto.Util.number import *

from tqdm import trange

import gmpy2



n = 0x00b8cb1cca99b6ac41876c18845732a5cbfc875df346ee9002ce608508b5fcf6b60a5ac7722a2d64ef74e1443a338e70a73e63a303f3ac9adf198595699f6e9f30c009d219c7d98c4ec84203610834029c79567efc08f66b4bc3f564bfb571546a06b7e48fb35bb9ccea9a2cd44349f829242078dfa64d525927bfd55d099c024f

p_high = 0xe700568ff506bd5892af92592125e06cbe9bd45dfeafe931a333c13463023d4f

pbits = 512

e = 0x10001

c = bytes_to_long(open('flag.enc','rb').read())





for i in trange(2**8):

     p4 = p_high<<8			#这里需要先爆破8位,使得知道264位以后再恢复p

     p4 = p4 + i

     kbits = pbits - p4.nbits()

     p4 = p4 << kbits

     R.<x> = PolynomialRing(Zmod(n))

     f = x + p4

     x = f.small_roots(X=2^kbits, beta=0.4, epsilon=0.01)

     if x:

         p = p4 + int(x[0])

         q = n // p

         d = gmpy2.invert(e,(p-1)*(q-1))

         m = pow(c,d,n)

         print(long_to_bytes(int(m)))

         break

在这里插入图片描述

Crypto-3:

在这里插入图片描述

from Crypto.Util.number import *

import gmpy2

import sys



def HGCD(a, b):

    if 2 * b.degree() <= a.degree() or a.degree() == 1:

        return 1, 0, 0, 1

    m = a.degree() // 2

    a_top, a_bot = a.quo_rem(x^m)

    b_top, b_bot = b.quo_rem(x^m)

    R00, R01, R10, R11 = HGCD(a_top, b_top)

    c = R00 * a + R01 * b

    d = R10 * a + R11 * b

    q, e = c.quo_rem(d)

    d_top, d_bot = d.quo_rem(x^(m // 2))

    e_top, e_bot = e.quo_rem(x^(m // 2))

    S00, S01, S10, S11 = HGCD(d_top, e_top)

    RET00 = S01 * R00 + (S00 - q * S01) * R10

    RET01 = S01 * R01 + (S00 - q * S01) * R11

    RET10 = S11 * R00 + (S10 - q * S11) * R10

    RET11 = S11 * R01 + (S10 - q * S11) * R11

    return RET00, RET01, RET10, RET11

    

def GCD(a, b):

    print(a.degree(), b.degree())

    q, r = a.quo_rem(b)

    if r == 0:

        return b

    R00, R01, R10, R11 = HGCD(a, b)

    c = R00 * a + R01 * b

    d = R10 * a + R11 * b

    if d == 0:

        return c.monic()

    q, r = c.quo_rem(d)

    if r == 0:

        return d

    return GCD(d, r)



sys.setrecursionlimit(500000)



n1 = 46994335119752756509295563273644018207372437765472265663641969615870434649870172687711336119178476731707184071004952832066023502817858922050333696147278803794579361275375126259907918549399847213059844795524428354261714653121692582331027749211493858306453667935016549085360033613631067207061043880115121598962110616155562901846204247465460970460199073739292905462216078043392395114502994197819280075092818942982603177739751892161678322940701448492756420067768637842557026865307595566180909536549522253144031734977212534244571704403691638817139603787139183257554425149405808562098424603264387155486261738291201472340352391

n2 = 16976940907141191524915804499951951599097024510818489668879976514721679457799770728089555354636545350649925890442528319161801605921579588526654791259724057279137519961488033020252287291656224996559845743701416369311612554321667335443418374008955791237572115480942740883337659354946753897515362968288787775973679663087549902052834470568223797434895230309683907862913802778136943295386037545850573702404179634561691835378455616724949344536695840131493043451083253876120316451193093943057146831832699116608334542232364997054535258690377988973313999659509515527448391939826560776605356310573531843676266398565276101510029

n22 = 36411530853306134650264922004243230789578567724848633072235567209396268937793967740840652891507150988934473209257678404824253786278354088188390849648230052408289839466487412221995353670688546953660918964880243399052047334774328642066482644759267410757068380646549682108897462561270352289713894825761682839541110704279580406677692145731871923819604104525631319112589270885702852325198972148331330622015745319864858600319231335192994724027402115404237271512429501511126745777802735039211692592419147477615289600437180622597687832926895508311856277663498164572827860273972198929500903338268219335130382722268336214976042

n3 = 21226342903519534285704039882517125493795254854398682031383220268196433752075453643793049930458409496501461364842263780716599044573472994756306842377996628221505793163345085310959982378400333469066510661862233433012101801971093682929377066833668523917150410559059871941217104903416187874137499834716703973567800989192226779852732764629767211879833127201510149229683409885749849769992849238187983773625783302822977444881786880085459631032114161881530793073480211272526557216580382426240205299262699361842634152273785508127206291906598310431383694685205902446688152373743788426712423020706959735024415865092732865293579

n = 19200751218807086109753585680575754542082218941447307423137776192000278638223531900870979886440646382572944765791998502777800968087411516141316151136038574929174075944033279652394413631362165307728020601616420974300745352308691582297884104984804426129732048593928551212972068865439525515893127416831193018078920195294960658070386235303119382941397098688638535311813138494565312063872100234086554220918850216072480857287537545501163451784114917247368012496289240698205942331461841811192853876743048133216069555958862196216052716205918188818909294300568480346854813619378406414745549741993309728072933212639965842420209

c1 = 12141687753092765754669783940675830448713581449163645536701718573773069294641533345315774400524395912993282498354768039945837224261487080475299072168517385713156203158247568336654731834308671872786353160933613619005116377874975161570966140277643874697751373054295698713456796119408728017676683503913534440646385085389636575390015489314292617682540872972440031779129422252433290117697330366830572038270337066299696360385868714809628744897197112890179467453713145233723691881680439517219988389546696789593902726903494192576858861380642835270848700081419409960522215088312481748912596701475019010221975400877543191195027

c2 = 18671344975076988512476107719711622987157049217462407071825706570480527181436147001821738820485566989301383448587621862627034353591129052899016475842991199430712285197912470481262314752372552644754537903335502976906151622416039395240789105429194458158873730659899128044024578932624430327308839049226169398974549593196858893169326628555925601866140682257990896398722170890530721702632112280595631922141382527353635243846673957989765181865712175794172200610424145223744315723737355016529480510122584370575790398823526020995975020616450936696444211881773753140054718402336533120422812171276792369946574521223325184154908

e = 2999



# factor n1

t1 = gmpy2.iroot(n1 // 2024,2)[0]

for i in range(-100000,100000):

    p1 = t1 + i

    if n1 % p1 == 0:

        q1 = n1 // p1

        break

if p1 > q1:

    p1,q1 = q1,p1



# factor n2

p_add_q = gmpy2.iroot(n22 + 2*n2,2)[0]

p_sub_q = gmpy2.iroot(n22 - 2*n2,2)[0]

p2 = (p_add_q + p_sub_q) // 2

q2 = n2 // p2



if p2 > q2:

    p2,q2 = q2,p2

    

# factor n3

t3 = 2*gmpy2.iroot(n3,2)[0] + 2

p_add_q = t3

p_sub_q = gmpy2.iroot((p_add_q)**2 - 4*n3,2)[0]

p3 = (p_add_q + p_sub_q) // 2

q3 = (p_add_q - p_sub_q) // 2



if p3 > q3:

    p3,q3 = q3,p3



p1,q1 = int(p1),int(q1)

p2,q2 = int(p2),int(q2)

p3,q3 = int(p3),int(q3)



###### Franklin-Reiter

R.<x> = PolynomialRing(Zmod(n))

f = (p1 * x * x + p2 * x + p3)^e - c1

g = (q1 * x * x + q2 * x + q3)^e - c2



res = GCD(f,g)



m = -res.monic().coefficients()[0]

print(m)

flag = long_to_bytes(int(m))

print(flag)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2240133.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PostgreSQL数据库笔记

PostgreSQL 是什么 PostgreSQL&#xff08;简称Postgres或PG&#xff09;是一个功能强大、可靠性高、可扩展性好的开源对象-关系数据库服务器&#xff08;ORDBMS&#xff09;&#xff0c;它以加州大学伯克利分校计算机系开发的POSTGRES版本4.2为基础。 发展历程 起源与发展&a…

el-table合并单元格之后,再进行隔行换色的且覆盖表格行鼠标移入的背景色的实现

el-table 中有现成的隔行换色功能&#xff0c;只要增加 stripe 属性即可。但是如果有单元格合并的话&#xff0c;这个属性就不可用了。这时候我们就需要动点小心思了。 基于相同字段进行合并 单元格合并&#xff1a;基于表头中的某一列&#xff0c;具有相同值的个数相加进行合…

光伏电站容量计算方法科普

光伏电站的容量计算是设计和评估光伏系统性能的关键步骤。通过了解光伏电站的容量&#xff0c;我们可以预估其发电量&#xff0c;优化系统设计&#xff0c;并确保系统能满足电力需求。本文将详细介绍几种常见的光伏电站容量计算方法&#xff0c;并特别介绍小程序“光伏一点通”…

mysql数据库(五)多表查询

多表查询 文章目录 多表查询一、链表查询1.1交叉连接1.2 内连接1.3 左连接1.4 右连接1.5 全连接1.6 例子 二、子查询2.1 in与not in2.2 any/some2.3 all2.4 比较运算符2.5 exists 三、例子 查询中使用的表如下所示 ------------ | id | name | ------------ | 1 | IT | …

06.VSCODE:备战大项目,CMake专项配置

娇小灵活的简捷配置不过是年轻人谈情说爱的玩具&#xff0c;帝国大厦的构建&#xff0c;终归要交给CMake去母仪天下。一个没有使用 CMake 的 C 项目&#xff0c;就像未来世界里的一台相声表演&#xff0c;有了德纲却无谦&#xff0c;观众笑着遗憾。—— 语出《双城记》作者&…

jmeter常用配置元件介绍总结之后置处理器

系列文章目录 安装jmeter jmeter常用配置元件介绍总结之后置处理器 8.后置处理器8.1.CSS/JQuery提取器8.2.JSON JMESPath Extractor8.3.JSON提取器8.4.正则表达式提取器8.5.边界提取器8.5.Debug PostProcessor8.6.XPath2 Extractor8.7.XPath提取器8.8.结果状态处理器 8.后置处理…

淘宝/天猫按图搜索商品:taobao.item_search_img API的奇幻之旅

在这个看脸的时代&#xff0c;我们不仅对人要看颜值&#xff0c;连买东西都要“看脸”了。没错&#xff0c;我说的就是淘宝/天猫的按图搜索商品功能——taobao.item_search_img API。这个功能就像是电商平台的“人脸识别”&#xff0c;只不过它认的是商品的颜值。下面&#xff…

豆包MarsCode算法题:数组元素之和最小化

数组元素之和最小化 问题描述思路分析分析思路解决方案 参考代码&#xff08;Python&#xff09;代码分析1. solution 函数2. 计算 1 2 3 ... n 的和3. 乘以 k 得到最终的数组元素之和4. 主程序&#xff08;if __name__ __main__:&#xff09;代码的时间复杂度分析&#x…

已有账号,重装系统激活office后发现没有ppt,word,excel等

有时候重装系统后&#xff0c;登录windows结果右键没有word,excel等 点击进入office 进入右边的账户 找到设备和订阅 直接下载office 安装后就会出现了

【数据结构与算法】第12课—数据结构之归并排序

文章目录 1. 归并排序2. 计数排序3. 排序算法复杂度及稳定性分析在这里插入图片描述 1. 归并排序 分治法&#xff08;Divide and Conquer&#xff09;是一种重要的算法设计策略&#xff0c;其核心思想是将一个复杂的大问题分解为若干个小规模的子问题&#xff0c;递归地解决这些…

shell 100例

1、每天写一个文件 (题目要求&#xff09; 请按照这样的日期格式(xxxx-xx-xx每日生成一个文件 例如生成的文件为2017-12-20.log&#xff0c;并且把磁盘的使用情况写到到这个文件中不用考虑cron&#xff0c;仅仅写脚本即可 [核心要点] date命令用法 df命令 知识补充&#xff1…

微信公众平台申请(测试平台)

登录平台 微信公众平台 注册信息 回调路径不知道怎么填可以先不填&#xff0c;等写完项目就知道调用那个路径了 这样就注册好了

云原生-docker安装与基础操作

一、云原生 Docker 介绍 Docker 在云原生中的优势 二、docker的安装 三、docker的基础命令 1. docker pull&#xff08;拉取镜像&#xff09; 2. docker images&#xff08;查看本地镜像&#xff09; 3. docker run&#xff08;创建并启动容器&#xff09; 4. docker ps…

Qt 编写插件plugin,支持接口定义信号

https://blog.csdn.net/u014213012/article/details/122434193?spm1001.2014.3001.5506 本教程基于该链接的内容进行升级&#xff0c;在编写插件的基础上&#xff0c;支持接口类定义信号。 环境&#xff1a;Qt5.12.12 MSVC2017 一、创建项目 新建一个子项目便于程序管理【…

社会信任数据 NGO、CGSS、献血量(2000-2021)

非政府组织&#xff08;NGO&#xff09;是指在地方、国家或国际级别上组织起来的非营利性的、志愿性的公民组织。在中国&#xff0c;NGO通常被称为民间组织&#xff0c;包括社会团体、民办非企业单位和基金会。 2000年-2021年社会信任数据&#xff08;NGO、CGSS、献血量&#…

Odoo:免费开源的流程制造行业ERP管理系统

概述 聚焦流程制造连续性生产的特性&#xff0c;提供集成PLMERPMESBI的一体化解决方案&#xff0c;涵盖计划、生产、质量、配方、供销、库存、成本、设备、资金管理等业务领域的整体性解决方案 行业的最新洞察&行业典型痛点 一、生产过程需要精细化控制 需要在各种制约…

D3的竞品有哪些,D3的优势,D3和echarts的对比

D3 的竞品 ECharts: 简介: ECharts 是由百度公司开发的一款开源的 JavaScript 图表库&#xff0c;提供了丰富的图表类型和高度定制化的配置选项。特点: 易于使用&#xff0c;文档详尽&#xff0c;社区活跃&#xff0c;支持多种图表类型&#xff08;如折线图、柱状图、饼图、散点…

使用nossl模式连接MySQL数据库详解

使用nossl模式连接MySQL数据库详解 摘要一、引言二、nossl模式概述2.1 SSL与nossl模式的区别2.2 选择nossl模式的场景三、在nossl模式下连接MySQL数据库3.1 准备工作3.2 C++代码示例3.3 代码详解3.3.1 初始化MySQL连接对象3.3.2 连接到MySQL数据库3.3.3 执行查询操作3.3.4 处理…

C/C++内存管理 | new的机制 | 重载自己的operator new

一、C/C内存分布 1. 内存分区 栈又叫堆栈–非静态局部变量/函数参数/返回值等等&#xff0c;栈是向下增长的。内存映射段是高效的I/O映射方式&#xff0c;用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存&#xff0c;做进程间通信 .堆用于程序运行时动态内…

小面馆叫号取餐流程 佳易王面馆米线店点餐叫号管理系统操作教程

一、概述 【软件资源文件下载在文章最后】 小面馆叫号取餐流程 佳易王面馆米线店点餐叫号管理系统操作教程 点餐软件以其实用的功能和简便的操作&#xff0c;为小型餐饮店提供了高效的点餐管理解决方案&#xff0c;提高了工作效率和服务质量 ‌点餐管理‌&#xff1a;支持电…