2023年SWPU NSS 秋季招新赛 (校外赛道)WP—Crypto

这篇具有很好参考价值的文章主要介绍了2023年SWPU NSS 秋季招新赛 (校外赛道)WP—Crypto。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Caesar_base

题目信息

s = "HIJKLMNOPQRSTUVWXYZABCDEFGhijklmnopqrstuvwxyzabcdefg0123456789+/"    #码表

def My_base64_encode(inputs):
	bin_str = []
	for i in inputs:
		x = str(bin(ord(i))).replace('0b', '')
		bin_str.append('{:0>8}'.format(x))
	#print(bin_str)
	outputs = ""
	nums = 0
	while bin_str:
		temp_list = bin_str[:3]
		if(len(temp_list) != 3):
			nums = 3 - len(temp_list)
			while len(temp_list) < 3:
				temp_list += ['0' * 8]
		temp_str = "".join(temp_list)
		#print(temp_str)
		temp_str_list = []
		for i in range(0,4):
			temp_str_list.append(int(temp_str[i*6:(i+1)*6],2))
		#print(temp_str_list)
		if nums:
			temp_str_list = temp_str_list[0:4 - nums]
			
		for i in temp_str_list:
			outputs += s[i]
		bin_str = bin_str[3:]
	outputs += nums * '='
	print("Encrypted String:\n%s "%outputs)

print("-------input 'ys' to encode-------")	

sr = input("Please input!\n")
if(sr == "ys"):
	input_str = input("Please enter a string that needs to be encrypted: \n") 
	My_base64_encode(input_str)            
  

根据第一行新表base64解码即可

2023年SWPU NSS 秋季招新赛 (校外赛道)WP—Crypto

二、EasyRSA

题目附件

import libnum  
  
p=libnum.generate_prime(1024)  
q=libnum.generate_prime(1024)  
e=65537  
m="NSSCTF{*******************}"  
m=libnum.s2n(m)  
n=p*q  
phi_n=(p-1)*(q-1)  
d=libnum.invmod(e,phi_n)  
c=pow(m,e,n)  
  
print("p=",p)  
print("q=",q)    
print ("e=",e)  
print ("c=",c)

#p= 122912801126049869009003839542545176400185213365268209105714006257803073428638629824801261702125287814910668428403367391355051987389837804474055637991864563803834741161217607848968821280710324766558457056004037592628178078680121173634128054936108782807954132605887275556228703383455969903056759874047110115433
#q= 120790113700754477830062212762518406876786376726996249661848284428829412089402183812692045970711341815805796005449714738748110749559462448861357011272792817313060401380148108517705435100103533857957024851181447994572972501120774586405811257420853542417275740953525627232008812587423053626515513859653865873671
#e= 65537
#c= 7094224488947659163318199615533819770556597977720767621640224798887506152292861133457571683713587909779712343346370719403811813233693263526316785431883833118583425528830238629831001255198236686372518770451273159769779374149881346761523688131115323441973953523582174059584087249568245044443295176738493785560215046375056269378223045128094953923926250055718405799885041115025529297362914403732661935017257507786348635366480744933193471899621592092711962814949533564454932121056035003021428158830645604347966849572981124877683317022116903132719663958775850982016292384237647664448371811915879714093710876989697939277005

基础RSA

exp:

import gmpy2
from Crypto.Util.number import long_to_bytes
p = 122912801126049869009003839542545176400185213365268209105714006257803073428638629824801261702125287814910668428403367391355051987389837804474055637991864563803834741161217607848968821280710324766558457056004037592628178078680121173634128054936108782807954132605887275556228703383455969903056759874047110115433
q = 120790113700754477830062212762518406876786376726996249661848284428829412089402183812692045970711341815805796005449714738748110749559462448861357011272792817313060401380148108517705435100103533857957024851181447994572972501120774586405811257420853542417275740953525627232008812587423053626515513859653865873671
c = 7094224488947659163318199615533819770556597977720767621640224798887506152292861133457571683713587909779712343346370719403811813233693263526316785431883833118583425528830238629831001255198236686372518770451273159769779374149881346761523688131115323441973953523582174059584087249568245044443295176738493785560215046375056269378223045128094953923926250055718405799885041115025529297362914403732661935017257507786348635366480744933193471899621592092711962814949533564454932121056035003021428158830645604347966849572981124877683317022116903132719663958775850982016292384237647664448371811915879714093710876989697939277005

phi = (p-1) * (q-1)
e = 65537
n = p * q
d = gmpy2.invert(e, phi)
m = pow(c, d, n)
print('💌:',long_to_bytes(m))
#💌: b'NSSCTF{RSA_1s_so_ea3y_and_interest1ng!}'

三、dpdp

题目附件

from Crypto.Util.number import *
from libnum import *

flag = b'NSSCTF{******}' + b'1010101010101010101010101010101010101010100010101010101010101010101101'
p = getPrime(512)
q = getPrime(512)
n = p*q
e = 65537
d = inverse(e, (p-1)*(q-1))
dp = d % (p-1)
m = s2n(flag)
c = pow(m, e, n)
print(f'n = {n}')
print(f'c = {c}')
print(f'dp = {dp}')

'''
n = 62950660589752377241535942010457460675378335694404721223426371627802159493655570041534480026979837056215567303530448462076388942749116962945931432723672826148999814815864738069663127706046027850586024555861960247057288826014343547293035737544457656904257388300461848219257240252715837662741274235378360898441
c = 26392919777656338278184497106215581599692023606797351841011065350738534402079717897589592521000832026751736045905247050532819571969784687491977953157313304550096179520376626220816081159472339787295872214912587497324709488986746768994907107727184468228540635002062232484115731701648311946527233449512543132274
dp = 7088497034630351463006975624795947102639056977565074157092915907376477955247769847204254053775159112398217033648894620506901638351932922911273150932128973
'''

典型的dp泄露

exp:

import gmpy2 as gp
e = 65537
n = gp.mpz(62950660589752377241535942010457460675378335694404721223426371627802159493655570041534480026979837056215567303530448462076388942749116962945931432723672826148999814815864738069663127706046027850586024555861960247057288826014343547293035737544457656904257388300461848219257240252715837662741274235378360898441)
dp = gp.mpz(7088497034630351463006975624795947102639056977565074157092915907376477955247769847204254053775159112398217033648894620506901638351932922911273150932128973)
c = gp.mpz(26392919777656338278184497106215581599692023606797351841011065350738534402079717897589592521000832026751736045905247050532819571969784687491977953157313304550096179520376626220816081159472339787295872214912587497324709488986746768994907107727184468228540635002062232484115731701648311946527233449512543132274)
for x in range(1, e):
    if(e*dp%x==1):
        p=(e*dp-1)//x+1
        if(n%p!=0):
            continue
        q=n//p
        phin=(p-1)*(q-1)
        d=gp.invert(e, phin)
        m=gp.powmod(c, d, n)
        if(len(hex(m)[2:])%2==1):
            continue
        print('--------------')
        print(m)
        print(hex(m)[2:])
        print(bytes.fromhex(hex(m)[2:]))
#b'NSSCTF{CTFCTFNSSNSS}1010101010101010101010101010101010101010100010101010101010101010101101'

四、close

提示

很接近
hint1:p、q那么接近吗

p/q接近类型

附件信息

from libnum import *
from gmpy2 import *

p=generate_prime(1024)
q=next_prime(p)
e=65537
m='NSSCTF{*******}'
m=s2n(m)
n=p*q
phi=(p-1)*(q-1)
d=invmod(e,phi)
c=pow(m,e,n)

print("n=",n)
print("e=",e)
print("c=",c)

# n= 24981376790941538042242194741227892897407513396986731688877133454927442860995432316502739082570143505514748189761926835267759902439088795405888334103808204493954060044146586606969762154041793765844462081845490598211667272961234605967919438875499785814549051002289336390400088945736443426364361032870741024016549739096474413537901098157940458928277363388694717514323106251487767419607466664175936942972759711506228656400164583540573319572125036265662330306877811831045019686459493451558882811173136631573392182233161484350878695026357462290962322316959710815852914274474767115283825849610223430527125542218326259388501
# e= 65537
# c= 20159395346151098135636315342962498279920000537186367678734614295342297238729946157173169398141183795295342421626812913110784320710149318393656661582157610182569479131625808166266400522513050071081253869746865806961410702124426021839786686971490883603141916263075756918270160269956469968815381434371042453456185750940323619568741956243054983302281739844073931738335165924679149156513059772597287311150001080524533236565521881558592378167621577532597521749930820990533120461791013359786254216859344006298715497621642857727174896969485816794718062289736382736417151820935214824518306312811267158057425922650562544599188

exp:

#p与q相近,可以费马分解。也可以直接开方求根附近的素数,即为p, q。
from Crypto.Util.number import *
from gmpy2 import next_prime,iroot
e = 0x10001
n = 24981376790941538042242194741227892897407513396986731688877133454927442860995432316502739082570143505514748189761926835267759902439088795405888334103808204493954060044146586606969762154041793765844462081845490598211667272961234605967919438875499785814549051002289336390400088945736443426364361032870741024016549739096474413537901098157940458928277363388694717514323106251487767419607466664175936942972759711506228656400164583540573319572125036265662330306877811831045019686459493451558882811173136631573392182233161484350878695026357462290962322316959710815852914274474767115283825849610223430527125542218326259388501
c = 20159395346151098135636315342962498279920000537186367678734614295342297238729946157173169398141183795295342421626812913110784320710149318393656661582157610182569479131625808166266400522513050071081253869746865806961410702124426021839786686971490883603141916263075756918270160269956469968815381434371042453456185750940323619568741956243054983302281739844073931738335165924679149156513059772597287311150001080524533236565521881558592378167621577532597521749930820990533120461791013359786254216859344006298715497621642857727174896969485816794718062289736382736417151820935214824518306312811267158057425922650562544599188
t = iroot(n,2)[0]
q = next_prime(t)
p = n//q
assert(n==p*q)
d = inverse(e,(p-1)*(q-1))
print(long_to_bytes(pow(c,d,n)).decode())
# NSSCTF{1d518f8b-5878-11ee-acac-c03c59457d4d}

五、polynomial

附件信息

from Crypto.Util.number import *
flag = b'NSSCTF{******}'

m = bytes_to_long(flag)

a = getPrime(512)
b = getPrime(512)
c = getPrime(512)
d = getPrime(512)
e = getPrime(512)
x = getPrime(64)

p = getPrime(1024)

y = a*x**4 + b*x**3 + c*x**2 + d*x + e
y = y%p

print(f'p = {p}')
print(f'a = {a}')
print(f'b = {b}')
print(f'c = {c}')
print(f'd = {d}')
print(f'e = {e}')
print(f'y = {y}')
print(f'h = {x*m}')

'''
p = 158805288384650271811274620112885426807134870587281058486409657841571541118874370262125616758392586636436387032461169543181918821693975663497124408432536495676514953509756505781488235396628730376794651046582155886825258656047349260441547239700695773934518441411466809921946609164932234396841476405798428700843
a = 6782997653971692606019358747667066963688636909392719204001155907616272998599567932030340899158310591583056298423803386927289244122405887173827359025095219
b = 7373784501270128110088353737302182289453185058537147667058852830178883492374394182313086562761123093282613985656842374554466162992585768060168515936322837
c = 12604317328077074383094898759023155531982085126299017370476099122695860476733267706510100804874716354025394150676456477445303955715981977583036765619931291
d = 8651550199315105291497863570314512750737000678752642987669418859342691686702373116147125246177399639155277789016646392989483699799276013474039473014389069
e = 6819653219987864110332165353640553980353581969662542365282269257622467162685937603557862048653003559950780009596692439320585574228684924030626160305559221
y = 187626421635118933741196210961559541641107643327742932086152135660947241144749750951157691964883138108211067837818748515766812840026814947057023367814232867155997328882540000727585104081833734697954005690818776434169815240704563337
h = 36198427687223295973782557044383345640934859884880641150183916728479006412929786917944908958646498915497129126843345300628359
'''

题目提示

你会math吗
hint1:只是解个多项式;

RSA多项式问题,构造多项式环,sage解

p = 158805288384650271811274620112885426807134870587281058486409657841571541118874370262125616758392586636436387032461169543181918821693975663497124408432536495676514953509756505781488235396628730376794651046582155886825258656047349260441547239700695773934518441411466809921946609164932234396841476405798428700843
a = 6782997653971692606019358747667066963688636909392719204001155907616272998599567932030340899158310591583056298423803386927289244122405887173827359025095219
b = 7373784501270128110088353737302182289453185058537147667058852830178883492374394182313086562761123093282613985656842374554466162992585768060168515936322837
c = 12604317328077074383094898759023155531982085126299017370476099122695860476733267706510100804874716354025394150676456477445303955715981977583036765619931291
d = 8651550199315105291497863570314512750737000678752642987669418859342691686702373116147125246177399639155277789016646392989483699799276013474039473014389069
e = 6819653219987864110332165353640553980353581969662542365282269257622467162685937603557862048653003559950780009596692439320585574228684924030626160305559221
y = 187626421635118933741196210961559541641107643327742932086152135660947241144749750951157691964883138108211067837818748515766812840026814947057023367814232867155997328882540000727585104081833734697954005690818776434169815240704563337
h = 36198427687223295973782557044383345640934859884880641150183916728479006412929786917944908958646498915497129126843345300628359
R.<x> = Zmod(p)[]
f = a*x**4 + b*x**3 + c*x**2 + d*x + e - y
print(f.roots())
#12896387745855437651

得到x后,直接解

from Crypto.Util.number import long_to_bytes
x = 12896387745855437651
h = 36198427687223295973782557044383345640934859884880641150183916728479006412929786917944908958646498915497129126843345300628359
m = h//x
print(long_to_bytes(m))
#NSSCTF{05223898-4a23-11ee-ae75-c03c59457d4d}

六、Classical Cipher

附件信息

一只兔子翻过5层栅栏去找base玩

U2FsdGVkX19aQNEomnRqmmLlI9qJkzr0pFMeMBF99ZDKTF3CojpkTzHxLcu/ZNCYeeAV3/NEoHhpP5QUCK5Ac+HJlZBMGdKDYwko5+sAATQ=

兔子流密码(无key型)+栅栏+base,好好好

2023年SWPU NSS 秋季招新赛 (校外赛道)WP—Crypto

2023年SWPU NSS 秋季招新赛 (校外赛道)WP—Crypto

2023年SWPU NSS 秋季招新赛 (校外赛道)WP—Crypto

七、肮脏的base64

题目提示

oi!被加密了

附件信息

2023年SWPU NSS 秋季招新赛 (校外赛道)WP—Crypto

有密码,没有提示,因此需要破解

有经验的师傅会试试ctf(大小写试一试),发现密码是CTF

没经验我们就爆破,选择暴力破解,先设置长度为4

2023年SWPU NSS 秋季招新赛 (校外赛道)WP—Crypto

选择所有大小写和数字

2023年SWPU NSS 秋季招新赛 (校外赛道)WP—Crypto

 2023年SWPU NSS 秋季招新赛 (校外赛道)WP—Crypto

解压打开文件

今天组织拦截到的密文是HsVHOpJ0lpW9yK4akKWDWe4UW4ZKI0sMkwN3N2WZ,但是组织发现这个似乎并不是传统是base,经情报人员分析得到了原始加密的码表
o57gjn0Sb9ETqVLYOJyHX42kNaIhrWlU****eszCfD+dtPm1u3AMKpwRGvcxQZ8B
但码表在传递过程中被人为污染了一块,聪明的你能为组织解出今天的密文吗?

典型的base64换表(新表缺少部分字符)

exp:

#密文:HsVHOpJ0lpW9yK4akKWDWe4UW4ZKI0sMkwN3N2WZ  (原本base64密文)
#o57gjn0Sb9ETqVLYOJyHX42kNaIhrWlU****eszCfD+dtPm1u3AMKpwRGvcxQZ8B(变换了编码表后的base64,*号为缺少的字符)

#查看变化后的base64缺少了什么字符
import string
s = "o57gjn0Sb9ETqVLYOJyHX42kNaIhrWlU****eszCfD+dtPm1u3AMKpwRGvcxQZ8B"
for i in string.ascii_letters + string.digits:
    if(i not in s):
        print(i)
#iF6/,这个“/”使自己找出来的,本身代码范围不包含/的ASCII,需要自己找,很好找因为正常表就两个一个+一个/打眼一看就缺少/

#知道缺少了什么后暴力破解
from Crypto.Util.number import *
from gmpy2 import *
from functools import reduce
import sympy
import itertools

# coding:utf-8
def My_base64_encode(inputs, s):
    bin_str = []
    for i in inputs:
        x = str(bin(ord(i))).replace('0b', '')
        bin_str.append('{:0>8}'.format(x))
    # print(bin_str)
    outputs = ""
    nums = 0
    while bin_str:
        temp_list = bin_str[:3]
        if (len(temp_list) != 3):
            nums = 3 - len(temp_list)
            while len(temp_list) < 3:
                temp_list += ['0' * 8]
        temp_str = "".join(temp_list)
        # print(temp_str)
        temp_str_list = []
        for i in range(0, 4):
            temp_str_list.append(int(temp_str[i * 6:(i + 1) * 6], 2))
        # print(temp_str_list)
        if nums:
            temp_str_list = temp_str_list[0:4 - nums]

        for i in temp_str_list:
            outputs += s[i]
        bin_str = bin_str[3:]
    outputs += nums * '='
    print("Encrypted String:\n%s " % outputs)

def My_base64_decode(inputs, s):
    bin_str = []
    for i in inputs:
        if i != '=':
            x = str(bin(s.index(i))).replace('0b', '')
            bin_str.append('{:0>6}'.format(x))
    # print(bin_str)
    outputs = ""
    nums = inputs.count('=')
    while bin_str:
        temp_list = bin_str[:4]
        temp_str = "".join(temp_list)
        # print(temp_str)
        if (len(temp_str) % 8 != 0):
            temp_str = temp_str[0:-1 * nums * 2]
        for i in range(0, int(len(temp_str) / 8)):
            outputs += chr(int(temp_str[i * 8:(i + 1) * 8], 2))
        bin_str = bin_str[4:]
    print("Decrypted String:\n%s " % outputs)

# s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
h = ['i', 'F', '6','/']
h1 = list(itertools.permutations(h,4))
#注意这个4是缺少的字符数
for i in h1:
    m = "".join(i)
    s = "o57gjn0Sb9ETqVLYOJyHX42kNaIhrWlU" + m + "eszCfD+dtPm1u3AMKpwRGvcxQZ8B"
    input_str = "HsVHOpJ0lpW9yK4akKWDWe4UW4ZKI0sMkwN3N2WZ"
    My_base64_decode(input_str, s)
#NSSCTF{WIKEY_GivE_u_this_f1ag}

八、dpdpdpdp

题目信息

from Crypto.Util.number import *
flag = b'NSSCTF{******}'
p = getPrime(512)
q = getPrime(512)
n = p*q
e = getPrime(128)
d = inverse(e, (p-1)*(q-1))
dp = d % (p-1)
m = bytes_to_long(flag)
c = pow(m, e, n)

print(f'n = {n}')
print(f'e = {e}')
print(f'c = {c}')
print(f'dp = {dp}')

'''
n = 92288362151232755164303382554034496430634785857894506752180261103500715219090974532177552845107426542175470207920267802066773828210866572070045093611090322738109527534622730588618668861998969946471756352024368486322527057077613762697792913167023012077178671066981439295386486943067698150993422039585259179729
e = 229991316986730339421575788374847647237
c = 66178170892880340054212366602556925884485962775832591797127163461420023986798822926684824340567060840259672460835004142425374706821346941926520921852009455818529825976414766339170445233789109526300838535719649346266975388774091834431039678689254534566870194580604694419819400454951059125553501095973278807456
dp = 8987556601717285362487353965045062789633142861774364363374961991445049127918653163458814169532860957264061203394944931114888144611267605606197232438332289
'''

大指数dp泄露,exp:

from sage import *
from Crypto.Util.number import long_to_bytes
from xenny.ctf.crypto.modern.asymmetric.rsa import dpleak
# 大指数dp泄露
n = 92288362151232755164303382554034496430634785857894506752180261103500715219090974532177552845107426542175470207920267802066773828210866572070045093611090322738109527534622730588618668861998969946471756352024368486322527057077613762697792913167023012077178671066981439295386486943067698150993422039585259179729
e = 229991316986730339421575788374847647237
c = 66178170892880340054212366602556925884485962775832591797127163461420023986798822926684824340567060840259672460835004142425374706821346941926520921852009455818529825976414766339170445233789109526300838535719649346266975388774091834431039678689254534566870194580604694419819400454951059125553501095973278807456
dp = 8987556601717285362487353965045062789633142861774364363374961991445049127918653163458814169532860957264061203394944931114888144611267605606197232438332289

m = dpleak.attack(dp,c,e=e,n=n)
flag = long_to_bytes( m )
print(flag)
#b'NSSCTF{D0_YoU_WAN1_TO_J0In_NsSCTf}111111111111111111111111111111111111111111111111111111111111111111111111111'

九、小明文?

题目信息

from Crypto.Util.number import *
import random
m1=flag = b'NSSCTF{*******}'

def encrypt1(m1):
    p = getPrime(700)
    q = getPrime(700)
    n = p * q
    e = 5

    a = getPrime(128)
    b = getPrime(128)
    m1 = bytes_to_long(m1)
    mm1 = a * m1 + b

    c1 = pow(m1, e, n)
    c2 = pow(mm1, e, n)

    print(f'n = {n}')
    print(f'a = {a}')
    print(f'b = {b}')
    print(f'c1 = {c1}')
    print(f'c2 = {c2}')

# n = 13026126941826887019162872735099540876106694302074884925200107036130428843197729140372377590706535217469477301361486550282890330093772372813532795303163348233096919179478061917423707929667355386062657434467799360617526194768968700908096844475960205671302377364202483195391706116078632202015938962280529309403244885363904094804118278167720593581764017089021116316636464533785051436622916960956665030100255641288863474938703
# a = 280807370135687531454416708417179457159
# b = 210598260561987226227971066630761929397
# c1 = 5484670538103757119990644460454986219076673914082966464351809153114702100411054106785392646801736865489738145857425179185164710603704198643749378051371008266521829572436350080663825339915763509501690398283916091505443322384568973565599179112299853287766734493187659418383619877040013434926843623979979122417950089001830664273269598688130410251828579862218274297572192961909808728768317567218412746711665911495028223620671
# c2 = 249587944874112168607313602465869274336587750392364868939732783502223999305089384749508572630699199927194600499968110646290832205640569694933539973256281796631433129626712361622584048439446364992886884217198680921278383770604919381329363647924261642857483728973331091285820401689502291336332199019252649615680893389557508558362194551939434128389351824194393680744241807605416750291337127085044177563509645273228457253193

小明文不行。。。别被坑了,这是一个RSA的Franklin Reiter攻击类型

不了解的看这里:Franklin-Reiter相关消息攻击

如果两条消息之间仅存在已知的固定差异

m1 = bytes_to_long(flag)

m2 = a*m1 + b

和RSA是否在相同的RSA模N下加密

这样就有可能同时恢复它们

sage解码

n = 13026126941826887019162872735099540876106694302074884925200107036130428843197729140372377590706535217469477301361486550282890330093772372813532795303163348233096919179478061917423707929667355386062657434467799360617526194768968700908096844475960205671302377364202483195391706116078632202015938962280529309403244885363904094804118278167720593581764017089021116316636464533785051436622916960956665030100255641288863474938703
a = 280807370135687531454416708417179457159
b = 210598260561987226227971066630761929397
c1 = 5484670538103757119990644460454986219076673914082966464351809153114702100411054106785392646801736865489738145857425179185164710603704198643749378051371008266521829572436350080663825339915763509501690398283916091505443322384568973565599179112299853287766734493187659418383619877040013434926843623979979122417950089001830664273269598688130410251828579862218274297572192961909808728768317567218412746711665911495028223620671
c2 = 249587944874112168607313602465869274336587750392364868939732783502223999305089384749508572630699199927194600499968110646290832205640569694933539973256281796631433129626712361622584048439446364992886884217198680921278383770604919381329363647924261642857483728973331091285820401689502291336332199019252649615680893389557508558362194551939434128389351824194393680744241807605416750291337127085044177563509645273228457253193
e=5
def franklinReiter(n,e,c1,c2,a,b):
    R.<X> = Zmod(n)[]
    f1 = X^e - c1
    f2 = (X*a+ b)^e - c2
    # coefficient 0 = -m, which is what we wanted!
    return Integer(n-(compositeModulusGCD(f1,f2)).coefficients()[0])

def compositeModulusGCD(a, b):
    if(b == 0):
        return a.monic()
    else:
        return compositeModulusGCD(b, a % b)

m=franklinReiter(n,e,c1,c2,a,b)
print(m)
print(type(m))
#2806865643354785582447058473372538382961766115574914049099282462437697164397424611542516856194548817486973
#<class 'sage.rings.integer.Integer'>

 得到m后,转字节即可

import libnum
m = 2806865643354785582447058473372538382961766115574914049099282462437697164397424611542516856194548817486973
print(libnum.n2s(int(m)))
#NSSCTF{89c507f3-4a21-11ee-a71e-c03c59457d4d}

 整体来说很基础,除了最后一个稍微有点难度哈哈哈,喜欢的宝子们可以点点赞,推荐一下捏((((

 文章来源地址https://www.toymoban.com/news/detail-711468.html

到了这里,关于2023年SWPU NSS 秋季招新赛 (校外赛道)WP—Crypto的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • NewStarCTF 2023 公开赛道 WEEK4|CRYPTO 部分WP

    1、题目信息 提示: \\\"Schmidt Samoa\\\" 附件信息 2、解题方法 学了一个新技巧,哈哈哈。 简介 : Schmidt-Samoa密码系统,像rabin加密一样,其安全性基于整数因式分解的难度。但 Rabin 解密时会得到四个解,而 Schmidt-Samor 得到的是唯一解。 密钥生成 1.选取两个大的质数p和q并进行计算

    2024年02月08日
    浏览(37)
  • [SHCTF 2023 校外赛道] reverse

    想不到第1题是个汇编,咱也不知道拿啥能弄成c,不过这题也不难,直接能看懂,关键部分。 取出异或0x1e然后保存,再取出-0xa再保存。 IDA打开,逻辑很简单,高低位互换 10字节随机数的key异或 用flag{头可以出来5个,后边的就只能一个个试,看着合适再试下一个 这才是签到

    2024年02月06日
    浏览(29)
  • PolarD&N2023秋季个人挑战—Crypto全解

    (额。。这个题看错了不是挑战赛的。这里当做好题记录下来了) 题目信息:500 分 5 Polar币 n不互素问题,利用欧几里得求公约数 exp: 题目信息:100 分 1 Polar币 查表把附件里的年份转为数字,分别得到: 14,13,5,19,14,13,5,19,29,29,8,23 ,提示加上甲子,就是加60 然后转ASCII码得到:

    2024年02月08日
    浏览(28)
  • NewStarCTF 2023 公开赛道 WEEK2|Crypto

    T1.滴啤 T2.不止一个pi T3.halfcandecode T4.Rotate Xor T5.broadcast T6.partial decrypt     下载题目附件,我们获得到以下代码。      观察代码得到,这是一道DP泄露题。面对DP泄露题的破解关注点就在于 对于各个数学关系的利用 。大体证明流程如下。        , 那么,我们可以获得    

    2024年02月06日
    浏览(45)
  • NewStarCTF 2023 公开赛道 WEEK1|CRYPTO全解

    附件信息 在线工具一把梭 题目信息 凯撒解码 题目信息 栏栅密码 题目信息 维吉尼亚呀呀呀!!根据flag前缀通过偏移量手算key就行,是kfc呀嘿嘿   题目信息 flag分啦三部分,分别来解 part1:base64 part2:base32 part3:UUencode 题目信息 脚本: 题目信息 识别:e特别大 在RSA中d也称

    2024年02月08日
    浏览(26)
  • FSCTF 2023(公开赛道) MISC(复盘) WP

    2024年02月08日
    浏览(230)
  • [BUUCTF NewStarCTF 2023 公开赛道] week4 crypto/pwn

    再补完这个就基本上完了. Schmidt-Samoa密码系统看上去很像RSA,其中N=pqq, 给的e=N给了d NTRU又一个格的基本应用   当E.order() == p时   p-1光滑时的分解 此题先是p-1光滑分解,然后是e=3*0x10000先求3次根再用rabin求16次    求误差,虽然被分成3个数组,但本质上是一个,可以连到一起求解. 

    2024年02月07日
    浏览(30)
  • 2023寒鹭Tron-CTF迎新赛 CRYPTO Misc 全WP

    1、题目信息 2、解题方法 兔子密码,在线工具直接解 1、题目信息 2、解题方法 flag有三部分 第一部分:BrainFuck解码 第二部分:ook! 第三部分:UUencode解码 1、题目信息 2、解题方法 像摩斯,但不是摩斯,是摩斯的变形。。。 把 . 换成 0 , / 换成 1,二进制解码: 最后把flag换

    2024年02月08日
    浏览(37)
  • UNCTF-Crypto wp

    题目 我的解答: 已知 a = p + q b = p - q 故:a + b = 2p   由此可得出p 同理相减可得q exp: 题目: 某日,鞍山大法官在点外卖时点了2个韭菜盒子,商家只送了1个,大法官给了该商家一个差评 次日,该大法官又在该商家点了1个韭菜盒子,希望商家能补上上次的韭菜盒子,而商家

    2024年02月05日
    浏览(26)
  • 2022 SWPUCTF Web+Crypto方向wp

    web 欢迎来到web安全 签到题,F12直接找出flag easy_sql 首先根据提示传入?wllm=1看看有无回显 然后我们发现了正常回显,接着用单引号试试闭合方式 通过对回显错误信息的分析,为了方便观察,我把包裹的引号隔开’ ‘1’’ LIMIT 0,1 ’ 这样我们很容易发现后面多出来了一个引号

    2024年02月09日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包