首页 > 其他分享 >2024年VCTF纳新赛 crypto 狂飙

2024年VCTF纳新赛 crypto 狂飙

时间:2024-03-16 17:29:56浏览次数:15  
标签:AES 纳新 crypto Crypto 2024 flag key print import

题目:

import os
from flag import flag
from Crypto.Util.number import *
from Crypto.Cipher import AES
m = 88007513702424243702066490849596817304827839547007641526433597788800212065249
key = os.urandom(24)
key = bytes_to_long(key)
n=m % key
flag += (16 - len(flag) % 16) * b'\x00'
iv = os.urandom(16)
aes = AES.new(key,AES.MODE_CBC,iv)
enc_flag = aes.encrypt(flag)

print(n)
print(enc_flag)
print(iv)


#103560843006078708944833658339172896192389513625588
#b'\xfc\x87\xcb\x8e\x9d\x1a\x17\x86\xd9~\x16)\xbfU\x98D\xfe\x8f\xde\x9c\xb0\xd1\x9e\xe7\xa7\xefiY\x95C\x14\x13C@j1\x9d\x08\xd9\xe7W>F2\x96cm\xeb'
#b'UN\x1d\xe2r<\x1db\x00\xdb\x9a\x84\x1e\x82\xf0\x86'

思路:

        这个就是rsa的CBC模式加密,其中偏移量iv和密文enc_flag已知,同时key的产生途径已知,就是利用爆破把key爆破出来,然后再解密即可

key的加密途径:

n=m % key//相当于key就是(m-n)的一个因子
就把(m-n)进行质因数分解  http://factordb.com/  在线分解的网站rsa常用
然后得出7个因子,key就是任一因子的相乘
然后还要满足n=m % key的条件,就可以筛选掉一部分的key
同时key还是os.urandom(24)产生的
就还可以滤掉不是24字节的key

exp

from Crypto.Cipher import AES
from Crypto.Util.number import long_to_bytes
from Crypto.Util.number import *
from Crypto.Cipher import AES
enc_flag = b'\xfc\x87\xcb\x8e\x9d\x1a\x17\x86\xd9~\x16)\xbfU\x98D\xfe\x8f\xde\x9c\xb0\xd1\x9e\xe7\xa7\xefiY\x95C\x14\x13C@j1\x9d\x08\xd9\xe7W>F2\x96cm\xeb'  
iv = b'UN\x1d\xe2r<\x1db\x00\xdb\x9a\x84\x1e\x82\xf0\x86' 


m=88007513702424243702066490849596817304827839547007641526433597788800212065249
n=103560843006078708944833658339172896192389513625588
a=[3,37,439,3939851,265898280367,5036645362649,342291058100503482469327892079792475478873]
i=0
j=0
k=0
l=0
s=0
o=0
num=0
for i in range(7):
    for j in range(i,7): #这里从i开始就是防止重复的出现,减少之后的工作量,之后的同理
        if(a[i]*a[j]>n):
            if(n==m%(a[i]*a[j])):
                key=a[i]*a[j]
                print(key)
        for k in range(j,7):
            if(a[i]*a[j]*a[k]>n):
                if(n==m%(a[i]*a[j]*a[k])):
                    key=a[i]*a[j]*a[k]
                    print(key)
            for l in range(k,7):
                if(a[i]*a[j]*a[k]*a[l]>n):
                    if(n==m%(a[i]*a[j]*a[k]*a[l])):
                        key=a[i]*a[j]*a[k]*a[l]
                        print(key)
                for s in range(l,7):
                    if(a[i]*a[j]*a[k]*a[l]*a[s]>n):
                        if(n==m%(a[i]*a[j]*a[k]*a[l]*a[s])):
                            key=a[i]*a[j]*a[k]*a[l]*a[s]
                            print(key)
                    for o in range(s,7):
                        if(a[i]*a[j]*a[k]*a[l]*a[s]*a[o]>n):
                            if(n==m%(a[i]*a[j]*a[k]*a[l]*a[s]*a[o])):
                                key=a[i]*a[j]*a[k]*a[l]*a[s]*a[o]
                                print(key)
print(1)

输出的就是所有的key的可能性,这里不多,就是心情好把输出新建一个txt一个个试也不是不行的(我就是试出来的)

解密脚本:

key_bytes = long_to_bytes(key)
aes = AES.new(key_bytes, AES.MODE_CBC, iv)
decrypted_flag = aes.decrypt(enc_flag)
print(decrypted_flag.rstrip(b"\x00")) #解密就是一个常规的解密,就是需要去除一下空字符

这个比赛其实挺劝退的,主要题少,水平还不行,除了这个简单一点,其它一窍不通

标签:AES,纳新,crypto,Crypto,2024,flag,key,print,import
From: https://blog.csdn.net/dreamwang12/article/details/136763581

相关文章

  • Java基础面试题整理2024/3/13
    1、可以使用switch的数据类型Java5以前,switch(arg)表达式中,arg只能是byte、short、char、int。Java5之后引入了枚举类型,也可以是枚举类型。Java7开始引入了字符串类型。2、Java中的goto有什么作用goto是Java中的保留字,在目前版本的Java中没有使用。3、this与super的区......
  • 【2024年5月备考新增】《软考真题分章练习 - 5 项目进度管理(高项)》
    1、()isatechniqueforestimatingthedurationorcostofanactivityoraprojectusinghistoricaldatafromasimilaractivityorproject.A.AnalogousestimatingB.parametricestimatingC.Three-PointestimatingD.Bottomestimating2、下图中(单位:......
  • NOIP 2024游记,我附中
    前言作者真的去了NOIP2024,但本文纯属虚构。赛前Day-1下午已是NOIP2024前的最后一天,可当我上台讲题时,脑袋里满是眩晕的感觉,大概嘴唇发白,已经站在死亡的边缘了。子洢[Note1],子洢,我好像再也见不到我的姐姐了。多希望她能陪在我身边啊。这时子洢好像真的出现在我的眼前了......
  • Best AI Lead Generation Software Tools 2024
    Fromhttps://www.mapleadscraper.com/blog/best-ai-lead-generation-toolsExtractEmailsFromGoogleMapsWhyAILeadGenerationSoftwareisEssentialforYourBusinessMapLeadScraperhigh-qualityleadsiscrucialforbusinessestoclosedeals,increasereve......
  • 2024-03-16:用go语言,给你一个正整数数组 nums, 每一次操作中,你可以从 nums 中选择 任意
    2024-03-16:用go语言,给你一个正整数数组nums,每一次操作中,你可以从nums中选择任意一个数并将它减小到恰好一半。(注意,在后续操作中你可以对减半过的数继续执行操作)请你返回将nums数组和至少减少一半的最少操作数。输入:nums=[5,19,8,1]。输出:3。答案2024-03-16:......
  • #16 2024.3.11
    糖丸了。638.The2ndUniversalCup.Stage17:JinanD?L没想到吧我先写了这个题。I?A我觉得很神秘的题啊,猜了个结论不知道为什么过了/yun。G?K简单slopetrick。M弱智几何题。E有点意思的flow,但是也挺好想的。B省选2023D1T2的弱化版(?我不太记得那个题了。......
  • 各大主流数据库的介绍、分类、作用和特点【2024】
    在2024年,各大主流数据库持续发展和演进,为各种应用场景提供了强大的数据处理和分析能力。以下是对这些数据库的介绍、分类、作用、特点:一、介绍与分类主流数据库主要分为关系型数据库和非关系型数据库两大类。关系型数据库以表格形式组织数据,支持SQL语言进行数据操作和查询......
  • 2024年江西教师招聘报名流程(建议电脑)
    2024年江西教师招聘报名流程(建议电脑)......
  • Windows Server 2022 OVF, updated Feb 2024 (sysin) - VMware 虚拟机模板
    WindowsServer2022OVF,updatedFeb2024(sysin)-VMware虚拟机模板2024年2月版本更新,现在自动运行sysprep,支持ESXiHostClient部署请访问原文链接:https://sysin.org/blog/windows-server-2022-ovf/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org......
  • LibreOJ 4114 「联合省选 2024」迷宫守卫
    因为最后的比较方式是字典序,可以明确肯定是贪心的先让第一个数尽量大,然后是第二个数尽量大,以此类推。考虑到如果选出了第一个数,那么按照其\(\text{dfs}\)的方式,相当于是把根到这个树的链删掉了,变成了许多颗子树,然后在按照\(\text{dfs}\)遍历这几个子树的顺序依次在子树中类似......