首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

2023愚人杯-Comedy

  • 23-10-06 09:02
  • 2946
  • 7088
blog.csdn.net

0x00 前言

CTF 加解密合集:CTF 加解密合集

0x01 题目

import gmpy2, libnum
from secret import flag1, flag2

m = libnum.s2n(flag1)
assert m.bit_length() < 200
B = gmpy2.next_prime(libnum.s2n(flag2))
A = (2022 - 2023 * m) % B
leak = pow(2, 2023, B)
print(A)
print(leak)
# 493275281479560936332761096886786925792234184811353209227551802099268192839677496844153534128991899414803550843408607188612593757622064753867565869035222715177143938385039508273050267347710495512806264863554858016145161165422812554800693811328453743229819656381224407015421235005940088439590887928051969351426291843586132741521121351667152673680122929827805479163871436776753859965413192837591532468372
# 23882919612712826315619489814174828013019092034326522825739880286720384600470387795299052447332912523308309627527606407193041656161613591019067409934526702703938632820365348915276930949819955640157402163307102287468908158567757801027652950710230482845168100068220808916294052905228376350724459317369078695781654574654043626188839873217296594576256941670240185925372569647159302388594426256115998232795

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

0x02 Write Up

这里已知一个前提,m是远小于b的

已知 leak = pow(2, 2023, B)可以得到kB+leak=2**2023也就是kB=2**2023-leak

已知A = (2022 - 2023 * m) % B因为(2022 - 2023 * m)远小于B,并且是负数所以,A-B=(2022 - 2023 * m),此时的A和B是非常相近的。

求 k=2**2023-leak//B,此时因为B和A非常相近,整除的时候会忽略差异,所以就有 k=2**2023-leak//A

那么就求出来k,已知k则能算出B,算出B,则得m,最终得到结果:

from Crypto.Util.number import *

A = 493275281479560936332761096886786925792234184811353209227551802099268192839677496844153534128991899414803550843408607188612593757622064753867565869035222715177143938385039508273050267347710495512806264863554858016145161165422812554800693811328453743229819656381224407015421235005940088439590887928051969351426291843586132741521121351667152673680122929827805479163871436776753859965413192837591532468372
leak = 238829196127128263156194898141748280130190920343265228257398802867203846004703877952990524473329125233083096275276064071930416561616135910190674099345267027039386328203653489152769309498199556401574021633071022874689081585677578010276529507102304828451681000682208089162940529052283763507244593173690786957816545746540436261888398732172965945762569416702401859253725696471593023885944262561159982327952


kb = 2 ** 2023 - leak
k=kb // A
B = kb//k
m = (B - A + 2022) // 2023
print(m)
print(long_to_bytes(m) + long_to_bytes(B))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

以上

注:本文转载自blog.csdn.net的Wcbddd的文章"https://blog.csdn.net/HAI_WD/article/details/131693036"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top