2024 数信杯

admin 2024年4月18日07:42:42评论17 views字数 7822阅读26分4秒阅读模式

2024 数信杯

  • Homooo0

  • AESsystem

  • Sepack

  • KeyRecever*

  • sm3ext

Homooo0

from secret import flag1, flag2
from gmpy2 import *
from Crypto.Util.number import *

m1 = bytes_to_long(flag1)
m2 = bytes_to_long(flag2)

def crypto1():
    length = m1.bit_length()
    a = getPrime(length)
    b = getPrime(length)
    m = getPrime(length)
    seed = m1
    output = []
    for i in range(10):
        seed = (a * seed + b) % m
        output.append(seed)
    print('output =', output)

def crypto2():
    m2_list = [xxxx]
    p = getPrime(1024)
    q = getPrime(1024)
    n = p * q
    e = 65537
    hint = powmod(2024 * q + 114514, p, n)
    c = []
    for i in range(len(m2_list)):
        c.append(int(powmod(m2_list[i], e, n)))
    print('c =', c)
    print('hint =', hint)
    print('nn =', n)


if __name__ == "__main__":
    crypto1()
    crypto2()


# output = [379940911379953190738065211329880704968887929, 1872252095018294289102935465830666339134562151, 2218420719930619226319067546293478252242226458, 1579245444542904364875305481053943269743008549, 425392941117051285074706333070389609337530919, 657262378722139347423806179198617363063641535, 1461082838700350967433433211657342782936632658, 963751022151998652319872980044981590997051383, 1468468649834237142138916241795639564731929858, 894951290310162231498227170019052662901900106]
# c = [5594765398895254497475390005515035165284947269482621212797364461116118828373030713653343829517676098247766810734167082486320857300603497577126713934378631060263065549510925849452528953404897544331443373022878004161177239661074098696364576450610303462705901680927031776827241380806829975994477307763410387909849663818842612816513488815063929788914749765715654361270374094951946698052421257227130710582004663667946833787782867142583952786583258460025201945224218183297310523389883123924792764297581896221795545651600004193837672786769087836697122181260018470054181076950975180483722573191259610507703805083959748628702, 18354543892431468698051144351651509749609506353214260811499577221908719283970286249536025926103536722940677113931335836508600695671820419801339342934435824515029299213790359041072360311512713705204002804129104738605964805164147722668894577827936326360814641394531203766344090798761628574626073504837365777460022073776704625251119419114486020315822475782336836237181108506820141633065828442597864716912066844670995455789274666742612665339577335803474044601225393448472601258235054542532455930028493965300794639477366773043061387713356068617705172707244145519119460068276515218619768447370748404523475940126401735202713, 13067613292114365350832630357309256892205092736734498409599614557765145853213115110662215358087327035294859139102830299174883445763972793544660067341892396813727940202103078616429693114912767222364824981525469897822258269033546395674755328159714895802743220805620518021794872638495366176488936655825440565962246474060922000652065256442083838487804427651100248697232018323068320537887588811670359374924969088709306632891312225283192959820408780025359635753658073155641892772680155573265995988033807925485674328357800451476663801518626815179947020769967024502712000390664616369855288447076430583396317901868635670903116, 1970246464981582185079840308342735335756570281528051357081434733605120075805108626175190939428222607679594440560718696113780016317501300998689452986221340709539874390866027325399105690522914912573749101268828961339899528345351602783733709690435381749900678529472260068811603241699935312502099438047447306331357922551536595737577778748471614413662779347020098023845496542068130118804519461892845097834511960310899125700074564461627049111870520851339107312207939096802549130703012532791227081366939019573591861482505143545888091035625734830537575454122259156021272985568985231430666257475902788787851476741010590326796, 4790816369832644851013897396728451410603728845552047537461048213879599460860175754611778658469205466634464899690642512890640661282818232275974631154994300419771468298485497765937356667986209597926878867976087643208326859946748594585252359978987853991823440517117397399904923756242431741811540597482789716480873515811069162424083734824293917807033645119197175733111304137346440353394724292956442109722691111714269187897648996544169031722249416188817927438327053576322823860564997328322821310219755433667926629085898372372888612204240167051221066348207037067965641711907104335671740191330077770626646796483577466922248, 10814650073087646346270245700026520419052331614597670711170052995832396418767254831061783825732111951302617190609152386041063604227098960001222048116476448947363754273135043354765054048027259775479829994840608711993723541933400421406020697924870102262125774838260456598741580451631667066129474067717793740121714362269552616426983298596223194062472856768981086359085984098225437548540851003103040245764298690834662920035848986451312155517111160676356001420773607652602890064569225611459892163774585206246082361752026359493618236053535568190870389696937273946530288300181042259976780219925540591411434092069627883521589, 17402258954583488899599077875782027692814099559940479055525715762308830292235828750274185447227093065906070741087056217439270030178529425666725470935320279585193413061911905402574473777027930507657670738102107008346656342925219094002445305706707695127526264448650657730801617264050097681327920107643154875069903297863683695217043121156225988854486200063498737759655924544668396741940750710151762056520992169228339196998725270006421679000430454557238994456964289263448493696220664760793673504610614794211760802780170221872766315614543591333048919946041272764838123984938843359468141442427857124108190855973548328439926]
# hint = 16536285698408033188775970487002941871169646202054607075951261488252097050309959670888933647846979074234584091138294883295283655541922856105993430306089873050060823509469357653401611918358566181439207815795998432610088842959371420010593544007396878166928172572144613158071036940284924703911208736953641513236511987794121581605651025684223709898943350403042639624699485398601383308932061389249410713498575347849561123663911884193305584505859244156315903617357265674661399461569230410041997758445531606306507143956677733117597303102381050916764758656179521304902624285341437654760783955965761612971416984285177511972228
# nn = 19146983551664702060097078821426397203936212633777978682169745838218120832974862357336060768023474701750459368454997765226576109516138124664705940970181884796090592025651687775377728753164334513191345754283706072450646288900663093945490502996638972998794132230852304097134994455627812996399122597839583024961826405525483276237662432278877829029168335844813894826246108076898652707988498096786814212257013685653982180235692189470315387649986765521900124337240432936201152716716736430994451736935879749385513107827824716135665305803700117296657477498198789850697139445575999541700057404516418222716008859942060344247147

前面的 crypto1 就是一个 LCG ,具体就不说了,随便网上找个板子梭一下,恢复 seed 就能得到前一半 flag 了。

crypto2 给出了一个 hint:

于是有

又因为 (费马小定理)

所以直接计算一个 就能分解n了,然后解一下 rsa 会得到一个 m_list,经过测试发现全都是素数(或者就是素数的幂次),猜测应该是对 m 的因式分解,所以全部乘起来就能得到后一半的flag了。

from Crypto.Util.number import *
from gmpy2 import *
from math import *
output = []
#全部未知,直接求a,b,m
t=[]
for i in range(9):
 t.append(output[i+1]-output[i])
n=[]
for i in range(7):
 n.append(gcd ( ( t[i+1]*t[i-1] - t[i]*t[i] ) , ( t[i]*t[i+2] - t[i+1]*t[i+1] ) ))
MMI = lambda A, n,s=1,t=0,N=0: (n < 2 and t%N or MMI(n, A%n, t, s-A//n*t, N or n),-1)[n<1#逆元计算
#print(m)
for m in n:
 m=abs(m)
 if m==1:
  continue
 a = (t[3] * MMI(t[2],m)) % m
 b = (output[2] - a * output[1]) % m
 plaintext=(MMI(a,m) * (output[0] - b)) % m
 print(long_to_bytes(plaintext))


cc = 
hint =
nn =

pp = gcd(powmod(114514,nn,nn)-hint,nn)
m=1
for each in cc:
    m*=(powmod(each,inverse(65537,pp-1),pp))
    print((powmod(each,inverse(65537,pp-1),pp)))
print(long_to_bytes(m))
# flag{ad24537876ed7f4fccbc7d9f7ca7c473}

原文始发于微信公众号(Van1sh):2024 数信杯

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月18日07:42:42
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   2024 数信杯https://cn-sec.com/archives/2663000.html

发表评论

匿名网友 填写信息