题目

from sage.all import *
from Crypto.Util.number import *
from os import urandom
from secret import flagn = 16
bound = 2^15A = [ZZ.random_element(-bound, bound) for _ in range(n*n)]
A = Matrix(ZZ, n, n, A)B = [ZZ.random_element(-bound, bound) for _ in range(n*n)]
B = Matrix(ZZ, n, n, B)res = []
for i in range(5):bound = 2^15S = [ZZ.random_element(-bound, bound) for _ in range(n*n)]S = Matrix(ZZ, n, n, S)tmp = []for i in range(0, 60):S = S*A+Bbound = 2^(int(S[0, 0]).bit_length())if i % 3 == 2:tmp.append(Matrix(ZZ,n,n,[ZZ.random_element(-bound, bound) for _ in range(n*n)]))continuetmp.append(S)res.append(tmp)e = A.LLL().determinant()p = getPrime(512)
q = getPrime(512)
n = p * q
m = bytes_to_long(urandom(int(n).bit_length() // 8 - len(flag) - 1) + flag)
c = pow(m, e, n)
h1 = pow(p+q, e, n)
h2 = pow(p-q, e, n)f = open('双人成行.txt', 'w')
f.writelines(str(res)+'\n')
f.writelines(str(n)+'\n')
f.writelines(str(c)+'\n')
f.writelines(str(h1)+'\n')
f.writelines(str(h2)+'\n')
f.close()

过程分析

A和B是固定的,五轮大循环,每一轮循环会生成随机矩阵S,然后进行60次循环 S = S ∗ A + B S = S*A+B S=S∗A+B,每三次循环中,第2次会生成一个新的n*n随机矩阵,否则使用更新后的S矩阵。这部分和LCG类似,我们可以通过两组LCG数据来计算出A,模3为2的矩阵不能取,所以我们取 S 0 , S 1 , S 3 , S 4 S_0,S_1,S_3,S_4 S0​,S1​,S3​,S4​,计算A,进而获得e。
S 1 = S 0 ∗ A + B S_1 = S_0*A+B S1​=S0​∗A+B
S 4 = S 3 ∗ A + B S_4 = S_3*A+B S4​=S3​∗A+B
两式相减
S 4 − S 1 = ( S 3 − S 0 ) ∗ A S_4-S_1 = (S_3-S_0)*A S4​−S1​=(S3​−S0​)∗A
⇒ A = ( S 4 − S 1 ) ∗ ( S 3 − S 0 ) − 1 \Rightarrow A = (S_4-S_1)*(S_3-S_0)^{-1} ⇒A=(S4​−S1​)∗(S3​−S0​)−1
此时得到e是奇数
另外一部分是二项式展开
h 1 ≡ ( p + q ) e m o d n ≡ p e + q e m o d n h_1 \equiv (p+q)^e \space mod \space n \equiv p^e+q^e \space mod \space n h1​≡(p+q)e mod n≡pe+qe mod n
h 2 ≡ ( p − q ) e m o d n ≡ p e − q e m o d n h_2 \equiv (p-q)^e \space mod \space n \equiv p^e -q^e \space mod \space n h2​≡(p−q)e mod n≡pe−qe mod n
两式相加
h 1 + h 2 ≡ 2 ∗ p e m o d n h_1+h_2 \equiv 2*p^e \space mod \space n h1​+h2​≡2∗pe mod n
发现h1+h2与n存在最大公约数p,进而求得
p = g c d ( h 1 + h 2 , n ) p = gcd(h_1+h_2,n) p=gcd(h1​+h2​,n)
经过计算e和phi不互素,且gcd(e,phi)=21,直接对解出的m开21次方未得到flag,显然经过padding后的m,其 m 21 = c m^{21}=c m21=c大于n,于是我们转换到有限域下对c开方,然后CRT组合一下得到flag.

PS:出题人我真是谢谢你嗷,所有矩阵append到一个列表里面,找矩阵还得小半天!!!

解题代码

from Crypto.Util.number import *
import gmpy2s0 =
s1 =
s3 =
s4 = s0=matrix(s0)
s1=matrix(s1)
s3=matrix(s3)
s4=matrix(s4)
A=((s3-s0)^-1)*(s4-s1)
e = A.LLL().determinant()
n = 126930298936285661712486297662920895162569606037310367763354747221281175771655642407136326621695910623038808779778530112406355314071209370688157872928010633181351390724545013677593062556323119308457918805555312069055604237211117650220178416298165021603211366843640334616217695418858036626587483782452105122653
c = 113627841667808982839757084973426219545127121566516056267404541633803040730885409234473068650543791446730694746311695177758797711077000091232969424826171863685060090359260225102836081852105845748467870581394884564134418376982186965340367386781824886506478939204791426457255483148486730526127180397268053506840
h1 = 87021607670080656750728189202811647321664825322085967432146885995538140004901574830625347954724344331514731852873721100175299656618161173874818773415684739773055620673258848991693719847569489515642296650035465632567910004553054397894647697286044465567405142149926303968235362573821060105908856127568162452912
h2 = 70528801000055618659638315463133504198238507722722570127215098017082205934290867816695737682738831717228470799826957490782948760796844881508632060312080331264474968266753069687287034453036854258618280625776346633340081217397502423530180647548747144401922660710323623212890923488339464759360304751017490144695
p = gmpy2.gcd(h1+h2,n)
q = n//p
phi = (p-1)*(q-1)
t = gmpy2.gcd(gmpy2.mpz(e),int(phi))
d = gmpy2.invert(e//t,int(phi))
m = pow(c,d,n)R.<x> = Zmod(p)[]
f = x^t-m
f = f.monic()
results1 = f.roots()R.<x> = Zmod(q)[]
f = x^t-m
f = f.monic()
results2 = f.roots()for i in results1:for j in results2:param1 = [int(i[0]),int(j[0])]param2 = [p,q]M = CRT_list(param1,param2)flag = long_to_bytes(int(M))if b'flag' in flag:print(flag)break

flag:

flag{5a6814eb-8848-11ed-aee3-d812656dd8d8}

【我认为真正的爱情应该是一种小型共产主义,我是奉献但不是付出,能够不把奉献看成付出,不计较得失,便不会总是处于一种患得患失的心态,你我之间的爱情应当如此。】

2023 红明谷杯 --- Crypto It Takes Two! wp相关推荐

  1. 2023红明谷杯misc方向wp

    文章目录 hacker 阿尼亚 X光的秘密 Q:2282679004 流量包其实完全非预期了后面 要是有师傅会的话求求教我一下 hacker 导出http对象 发现有shell.php,分析后大概了解 ...

  2. 2022红明谷-部分Crypto

    2022红明谷-部分Crypto easy_ya 题目 from Crypto.Util.number import * import os from flag import flag def gen ...

  3. 第二届“红明谷”杯数据安全大赛-安全意识赛

    本次考试共设置60道考题,单选题10分/道,多选题10分/道,满分600分.请在考试规定时间内进行答题,如未作答将自动提交且不会记录分数. 一.单项选择题 1.人为的安全威胁包括主动攻击和被动攻击.主 ...

  4. 2021红明谷杯数据安全大赛技能场景赛 Input Monitor

    突然想起这个题- 先用autopsy挂载给的文件 桌面有压缩包和hint 没事,我都删掉了,之前的聊天记录都被我清干净了.除非他们在监控我输入 提示要得到输入记录 用到输入法取证https://mp. ...

  5. 第二届“红明谷”杯数据安全大赛Misc之一

    Misc MissingFile 好像被攻击者入侵了,但是赶到现场的时候,已经只剩下一个空的文件夹了,快照能找到攻击者留下的秘密吗? 附件中给了一个很大的文件,不确定格式,在Linux下用string ...

  6. 虎符+红明谷+ctfshow渔人杯赛后复现

    目录标题 虎符CTF Web-签到 MISC-你会日志分析吗 红明谷CTF Web-write_shell MISC-我的心是冰冰的 ctfshow渔人杯 签到抽奖 感受下气氛 神仙姐姐 阿拉丁 迷 ...

  7. 2023年度“楚怡杯”湖南省职业院校技能竞赛隆回县职业中等专业学校赛点工作方案赛项:中职组信息技术类网络安全赛项

    2023年度"楚怡杯"湖南省职业院校技能竞赛 隆回县职业中等专业学校赛点工作方案 赛项:中职组信息技术类网络安全赛项 一.组织机构及其职责 (一)领导小组 主 任:马小乐(1378 ...

  8. BUCTOJ - 2023上半年ACM蓝桥杯每周训练题-1-A~K题C++Python双语版

    文章目录 BUCTOJ - 2023上半年ACM&蓝桥杯每周训练题-1-A~K题C++Python双语版 前言 问题 A: 1.2 神奇兔子数列 题目描述 输入 输出 解题思路 AC代码 C+ ...

  9. 2023 年“和鲸杯”辽宁省普通高等学校本科大学生计算机设计竞赛启动会顺利召开

    3月25日,2023 年"和鲸杯"辽宁省普通高等学校本科大学生计算机设计竞赛启动会于沈阳国际皇冠假日酒店顺利举办,沈阳师范大学教务处副处长于锡金,沈阳师范大学计算机与数学基础教学部 ...

最新文章

  1. Ajax Toolkit 控件学习系列(13) ——FilteredTextBoxExtender 控制输入
  2. 初中教师资格证计算机试讲教案模板,初中数学教师资格证面试教案模板: 《投影》...
  3. 利用gulp,当引入文件改动时,版本号自动更新~
  4. is属性用法 vue_Vue中is属性的用法 可以动态切换组件
  5. python中创建对象的七种方式
  6. python os 文件操作 chdir(path)方法
  7. traceview使用总结
  8. python能做什么工作知乎-python能做什么知乎
  9. 代码解析 | '树'的数据结构转化
  10. 2019xman-shellmaster wp
  11. 计算机中级改进的具体措施,改进职高计算机教学的几点措施
  12. 苹果无线耳机使用方法_苹果手机11新手使用方法
  13. arctanx麦克劳林公式推导过程_三角函数的求导过程
  14. 苹果id被锁定恢复方法(appleid被锁定怎么解除)
  15. 2021年茶艺师(中级)考试报名及茶艺师(中级)考试试卷
  16. 国内外差价悬殊,催火“代购一族”
  17. Jason高度计-波形重跟踪tips
  18. Unity3D游戏开发中的人工智能AI 简单实例
  19. 基于Java Web的幼儿园管理系统
  20. 推荐系统系列一:推荐系统介绍

热门文章

  1. 怎么做才能给直播软件开发出“守护功能”的代码教程
  2. 【WPS JSAPI加载项】 书签替换功能的实现
  3. Oracle查询数据,其中指定字段重复的只取其中一条
  4. 傅立叶分析和小波分析之间的关系(通俗解释)
  5. ASP.NET获取.aspx.cs的类名获取当前url的domain
  6. 大数据与Python
  7. hn版是什么版本的教材_初中教材都有什么版本?
  8. IIC16bit数据读
  9. 超级马里奥项目设计(二)
  10. C语言:已知三角形三边长,计算面积 —— 海伦公式