首页 > 其他分享 >黄河流域安全赛crypto

黄河流域安全赛crypto

时间:2023-03-23 19:45:35浏览次数:40  
标签:crypto 黄河流域 安全 flag n1 print import n2 cs

黄河流域安全赛crypto

EasyLock

已知5条同余方程,可以知道cs[0]*cs[1] - cs[4]和cs[0]^2-cs[2]的公因数为n

# from secret import flag
# from Crypto.Util.number import *

# m = bytes_to_long(flag)
# assert m.bit_length() == 47
# data = [2, 3, 4, 5, 6]
# cs = []
# p = getPrime(512)
# q = getPrime(512)
# n = p*q
# for i in data:
#     cs.append(pow(i, m, n))
# print(cs)
"""
[183098212086317720236828757315510192339273033804875740822801041376722387458993552796227899411901966324318366514880536763913315608412750265815750386810801443666072579873995967676472994916617708760086271155827496223499121301339946900578686321571238854410077055150282805741312173826325669295346629270100887114, 57033027040944100515577298747833062983449034346155581535109171399667991971614122726451624246276583123688811765412755210627513537740891720491136798691017567675611749056264437247135506921747135448387155606513983563110678466501221603978172670533058510913876368172674768929417846635764813733749021238273031358064, 44177513422937659688192503808032734159830361147993789424022745838993946766432456884886189398779755202878679629523667923807343226973440318127947558457476925179848208108399587026072741947465486816791306581859876197942191253278120326733144030253277598039138046967591357892542649422324554104602547660747339872074, 12631302718057472129138289484187738038805661685759196779990368768599115569927115234126312113575785471158626604808250556471019475882601443785660157133230999298014824293609691681149195181799904358979944719852988436666306120350671288382565369084160416022015445829639878167524217607450918100132212115997395372780, 42899381454706854217031716361682990989382003331688973566655317536112884234898037025883907894505663567670829738793956574655657437562098921910867502135260835097785409348930680677890714703165271668372795217905436049326872168290466249129739381681341323649536725632009485619857375114283009023943744880775769510652]
"""

from Crypto.Util.number import *
from gmpy2 import gcd
out = [183098212086317720236828757315510192339273033804875740822801041376722387458993552796227899411901966324318366514880536763913315608412750265815750386810801443666072579873995967676472994916617708760086271155827496223499121301339946900578686321571238854410077055150282805741312173826325669295346629270100887114, 57033027040944100515577298747833062983449034346155581535109171399667991971614122726451624246276583123688811765412755210627513537740891720491136798691017567675611749056264437247135506921747135448387155606513983563110678466501221603978172670533058510913876368172674768929417846635764813733749021238273031358064, 44177513422937659688192503808032734159830361147993789424022745838993946766432456884886189398779755202878679629523667923807343226973440318127947558457476925179848208108399587026072741947465486816791306581859876197942191253278120326733144030253277598039138046967591357892542649422324554104602547660747339872074, 12631302718057472129138289484187738038805661685759196779990368768599115569927115234126312113575785471158626604808250556471019475882601443785660157133230999298014824293609691681149195181799904358979944719852988436666306120350671288382565369084160416022015445829639878167524217607450918100132212115997395372780, 42899381454706854217031716361682990989382003331688973566655317536112884234898037025883907894505663567670829738793956574655657437562098921910867502135260835097785409348930680677890714703165271668372795217905436049326872168290466249129739381681341323649536725632009485619857375114283009023943744880775769510652]
n = gcd(out[0]*out[1]-out[4],out[0]**2-out[2])//2
x = discrete_log_lambda(mod(out[3],n),mod(5,n),(ZZ(10**14),ZZ(10**15)))
m = 128030494236961
print(long_to_bytes(x))

#flag{tql!!!}

Euler

已知e,d,n,求解p,已知n2是由若干个20位素数的乘积。sagemath直接求phi。

# import gmpy2
# from secret import flag
# from Crypto.Util.number import *
# import random
#
#
# p = getPrime(1024)
# q = getPrime(1024)
# e = 65537
# d = inverse(e, (p-1)*(q-1))
# n1 = p*q
# print('d =', d)
# print('n1 =', n1)
#
#
# n2 = 1
# while True:
#     tmp = getPrime(20)
#     for i in range(random.randint(1, 10)):
#         n2 *= tmp
#     if int(n2).bit_length() > 4096:
#         break
# m = bytes_to_long(flag)
# e = p
# c = pow(m,p,n2)
# print(f"n2 = {n2}")
# print(f"c = {c}")

'''
d = 1191103734504058491421349604548564929848616842152689496895544381837156883533438743584190765148552934760581271144506002162145850044043706855922892271482076871873995241085136144968243140990856473896170280564822732549232192446031619309897442553542363254504471740017966570662964696395047018142115398837264339359703632345253800336497946214283448557066829445107164480953216959246058743836325220516737638124436265379246043689904351250933647836622874758885644860021461954464385862680106712884194095768373281466098064819110033091294767089010003022970009602841916377292236136049332199074587736162893766795170383769105855396481
n1 = 13580613334758608446812976519363134969987613428002924766535019511562587104406919787452524386837284913953412450765046949147625708826808005604839699164252065405707381022094044455947068672776228380259796742758661695038105462132145830673755861626914728707456430832560451486001864528121467715375751025330165798298234749333641286199156268444951660172758198564829589895780644285230824166251980165312273600373379395893191960302458674257328572576250700441136204817923980559222287090491322038600230306017349810608247758292597409739448697047571469597942133677889648017239246044193456551115423543297398389835141582226233401091651
n2 = 1214806402018035399640161601350276689119300500885922730338627878893519991129980125476434307328318616551645952775278810103829168554249376991124646974529506458637833256309925386195767085673143119319959502919427611337245914269082657148902705137556296048781578971739222821624583120801659535369927877985173236243714461317935517361255270715241189816284530991305321818355420570545833978683123138276923580243415962479127687019106264574314649544746346086459905012212977958967691480715239783822121874583716717022133331534258680100103894980839994381411182849477289831563331555051111524494710894174250831042393260657010039224282544484051247017811298503920278914985702602401902771910416165113998593372720867385848641975504106450347785422029536444684536992419844582901814455572310411304170053743720539065216022165732393062765647406642461667856590659949987014165020908912248704605394194332522772838334355686250772722614893659631917281850223784937395431499960460631775969046704990152101465734651932493302101064276553602695086721483441047849063689763309160624353722539937307711289340553305706186969043326282042780389837191270199164643251358171042535614702470861637110776902483824241373428279843481575953477705679020507998934443944753893015492521729164439
c = 829714996515560908603942343505920996556339059436557287421074174277687809974667533248085244071086827486112801279665776466949992570288124598686592774771062800764512333540404127622921352174419248968970404794754685847236748961563984628001223295272803310968932487079932521884266677193760840062257399310444131681778575116034804962240312440452076927109544707668525304555494031530153484385014733733295665648179563341929829366393842180933029552234342383165468329118358481709562138556464490952636983157762226775051069620144327191146321078089031134997806488306619954921967209307290224398561337468466377749200533482249418692505335754212596152956893594720809675348504752525191974229476876972508737538861376367290460994163758533707257433535992369795872961693633915923559165304176024241693969803856234404053572424185908635089962296448104233424369921110004610276316317120909034370571217382030431552784144041430129071509829206755292634358474170376986660230213480604735611696589811824530116203051420922042313844629631979060959674508082246111229472102010511440894011705450255517464228219748967389876595425302704439665665510611452129328353818804395006155136491014104673084625985358676817967767734690717397046423097222254342558118886724303282396865112622135
'''

from Crypto.Util.number import *
import gmpy2
import random
e = 65537
d = 1191103734504058491421349604548564929848616842152689496895544381837156883533438743584190765148552934760581271144506002162145850044043706855922892271482076871873995241085136144968243140990856473896170280564822732549232192446031619309897442553542363254504471740017966570662964696395047018142115398837264339359703632345253800336497946214283448557066829445107164480953216959246058743836325220516737638124436265379246043689904351250933647836622874758885644860021461954464385862680106712884194095768373281466098064819110033091294767089010003022970009602841916377292236136049332199074587736162893766795170383769105855396481
n1 = 13580613334758608446812976519363134969987613428002924766535019511562587104406919787452524386837284913953412450765046949147625708826808005604839699164252065405707381022094044455947068672776228380259796742758661695038105462132145830673755861626914728707456430832560451486001864528121467715375751025330165798298234749333641286199156268444951660172758198564829589895780644285230824166251980165312273600373379395893191960302458674257328572576250700441136204817923980559222287090491322038600230306017349810608247758292597409739448697047571469597942133677889648017239246044193456551115423543297398389835141582226233401091651
n2 = 1214806402018035399640161601350276689119300500885922730338627878893519991129980125476434307328318616551645952775278810103829168554249376991124646974529506458637833256309925386195767085673143119319959502919427611337245914269082657148902705137556296048781578971739222821624583120801659535369927877985173236243714461317935517361255270715241189816284530991305321818355420570545833978683123138276923580243415962479127687019106264574314649544746346086459905012212977958967691480715239783822121874583716717022133331534258680100103894980839994381411182849477289831563331555051111524494710894174250831042393260657010039224282544484051247017811298503920278914985702602401902771910416165113998593372720867385848641975504106450347785422029536444684536992419844582901814455572310411304170053743720539065216022165732393062765647406642461667856590659949987014165020908912248704605394194332522772838334355686250772722614893659631917281850223784937395431499960460631775969046704990152101465734651932493302101064276553602695086721483441047849063689763309160624353722539937307711289340553305706186969043326282042780389837191270199164643251358171042535614702470861637110776902483824241373428279843481575953477705679020507998934443944753893015492521729164439
c = 829714996515560908603942343505920996556339059436557287421074174277687809974667533248085244071086827486112801279665776466949992570288124598686592774771062800764512333540404127622921352174419248968970404794754685847236748961563984628001223295272803310968932487079932521884266677193760840062257399310444131681778575116034804962240312440452076927109544707668525304555494031530153484385014733733295665648179563341929829366393842180933029552234342383165468329118358481709562138556464490952636983157762226775051069620144327191146321078089031134997806488306619954921967209307290224398561337468466377749200533482249418692505335754212596152956893594720809675348504752525191974229476876972508737538861376367290460994163758533707257433535992369795872961693633915923559165304176024241693969803856234404053572424185908635089962296448104233424369921110004610276316317120909034370571217382030431552784144041430129071509829206755292634358474170376986660230213480604735611696589811824530116203051420922042313844629631979060959674508082246111229472102010511440894011705450255517464228219748967389876595425302704439665665510611452129328353818804395006155136491014104673084625985358676817967767734690717397046423097222254342558118886724303282396865112622135

def divide_pq(e, d, n):
    k = e*d - 1
    while True:
        g = random.randint(2, n-1)
        t = k
        while True:
            if t % 2 != 0:
                break
            t //= 2
            x = pow(g, t, n)
            if x > 1 and gmpy2.gcd(x-1, n) > 1:
                p = gmpy2.gcd(x-1, n)
                return (p, n//p)

print(divide_pq(e,d,n1))

p = 99535697627541341494991404525180225068908389009029184307762183080720509676180574747934699539744131740583328547717197725197244553215416318028060890705319720045333080998666666221215218686863117303855204744956995545323160724989858236294798184029665332667306731766805975383738940541903481796682297902022496857107
q = n1//p
assert p*q==n1
#sagemath
# print(euler_phi(n2))
phi = 1214743481055418306674923200796837849615523895805543401563759441369343246118986522204311782627678716735076110083488503580291663049622957099674758845000715801331942570563583897748699601876002641512060842959555705944501143148910130554162959388048040519212869978015378597751985356834049556209550624803841207570298137642737395857984101829899978082337057857851112051968930682389636757671781188465691613675153087916911702205401423785475317890541124122086193454983600707787721998113793577979620577534898476900366607144472687183559977045417785928777071198074532579953848782837625343089157820802397678629539368017420537358474076916977809019956158233109058088152632979224345823012868649626822767425736075848093432971228559978734407656071616529172930332880242355377055280321843657698442962249947931867596413331377345743610843716049422485692344992871672279724286939871715214951256915775082201853930411386879306158014821927205845422929099823080947813039889976335554214197065783103831846853692180491580588714471379369769063217267315939921831182591988952743008462760971079264723125493011347321949473298447302260784186208600655746138322458842852759438621930457567141570663852697055384547104514666694053628267784608047228186045453362925876019200000000000
d = inverse(q,phi)
print(gmpy2.gcd(e,phi))
print(long_to_bytes(pow(c,d,n2)))
#flag{09d9cf63-4ccc-4615-8a40-577e1152d2b3}

EasyNumber

已知两条同余方程

再在式1 两边模上kB,得到新的同余方程,coppersmith求解。

Sage
from Crypto.Util.number import *

A = 170552035590584371794277768762390230763544207477112166060533204313753004629936685595405184205281232276007015670211368033442806936779308867580378436822021847321737051586882192693878924902157737728943995367527577690099125847661701232120507334675776645787433344767625337798357285176902699598449086385213291366162
leak = 66573767005779268080495621179078972426265588843146030764009851250207246081886465887129685885427908408673076322868864723505267053962926489662364269721110570269848306490343161117767892544708463436083630857549295570803296389232068947551581525974801496469745646172924950992026908012083467414933570463776905332979

# A+2023*m-2022 = 0 % B
KB = pow(2,2023)-leak
PR.<m> = PolynomialRing(Zmod(KB))
f = A+2023*m-2022
f = f.monic()
x = f.small_roots(X=2^200, beta=0.4)
print(long_to_bytes(int(x[0])))
# flag{unknown_modulus}

标签:crypto,黄河流域,安全,flag,n1,print,import,n2,cs
From: https://www.cnblogs.com/hwb020614/p/17248639.html

相关文章

  • scanf不安全原因及解决方法
    不安全原因:scanf函数并不会检查是否会越界访问。可能会导致数组溢出或缓冲区溢出,让黑客有可乘之机,从而发出“缓冲区溢出”攻击,如下程序:a最多只能存储四个字符(末尾存储“\0......
  • css属性——env()和constant()设置安全区域,解决移动端小程序和H5底部栏 iPhoneX安全
    转载:https://www.cnblogs.com/jiaoshou/p/16647577.html使用苹果官方推出适配方案css函数env()、constant()来适配苹果官方推荐使用env(),constant()来适配,建议使用该方......
  • sbom +dependencytrack 进行软件组件安全性分析
    随着安全越来越重要,日常中我们对于自己开发的软件进行安全扫描同时作为一个常规化的任务是比较重要的,对于依赖组件基于sbom+dependencytrack是一个很不错的选择,而且成本比......
  • CodeIgniter 的数据安全过滤全解析
    由于对CI的SQL安全这些不放心,今天寡人啃了一下午的代码,算是对其机制比较了解了,为了让各位兄弟姐妹少走弯路,特将战果公布,希望大家喜欢。1.无论如何在获取参数之时都建设将x......
  • 《渗透测试》WEB攻防-ASP安全&MDB下载植入&IIS短文件名&写权限&解析 2022 Day18
    1  ➢ ASP-数据库-MDB默认下载➢ ASP-数据库-ASP后门植入连接➢ ASP-中间件-IIS短文件名探针-安全漏洞➢ ASP-中间件-IIS文件上传解析-安全漏洞➢ ASP-中......
  • 安全管理要坚持的五项原则
    安全管理是企业管理的重要组成部分,是对生产过程中一切人、物、环境状态的动态管理与控制,是企业发展的生命线。安全管理主要包括企业对安全生产的规划、实施、指导和检查,是保......
  • 一文读懂ISO27001信息安全管理体系
    ISO信息安全管理体系1、ISO信息安全管理体系是组织在整体或特定范围内建立信息安全方针和目标,以及完成这些目标所用方法的体系。2、信息安全管理体系认证ISO信息安全管理体......
  • 4G区块链共享租赁,享受更加安全、舒适的居住体验
    在现代社会,随着科技的不断进步和生活水平的提高,租房已经成为许多人生活的一部分。然而,许多租客在租房过程中面临着很多问题,比如租金过高、合同不公、房屋质量不佳等等。为了......
  • 一统天下 flutter - UI: 安全区域
    一统天下flutterhttps://github.com/webabcd/flutter_demo作者webabcd一统天下flutter-UI:安全区域示例如下:lib\ui\safe_area.dart/**SafeArea-安全区......
  • 不存在百分百的安全,该给你的系统上个保险了
    故障,是每个技术人都不愿遇到,但却总会遇到的事件。程序Bug、安全漏洞、黑客攻击、服务器宕机、网络中断等诸多因素都有可能引发系统故障,使我们的业务面临瘫痪的窘境。这样的......