羊城杯2024-RSAloss

开朗的网友 2024-10-31 16:12:14 64 0


给定 n,c, 通常情况下在无e情景中,应对明文做特殊限制,本题无其他信息,尝试在可见字符范围进行格规约,可转化为SVP问题,使用LLL算法求解即可。

又不明确字符串长度,尝试爆破,然后手工选择一个具有语义的,发现为flag

from Crypto.Util.number import *

p = 898278915648707936019913202333
q = 814090608763917394723955024893
newm = bytes_to_long(b'X\xee\x1ey\x88\x01dX\xf6i\x91\x80h\xf4\x1f!\xa7"\x0c\x9a\x06\xc8\x06\x81\x15')
n = p * q
c = newm

pre = b"DASCTF{"
suf = b"}"
for le in range(20, 60):
    length = le - len(pre) - len(suf)
    
    c -= 256^(len(suf) + length) * bytes_to_long(pre)
    c -= bytes_to_long(suf)
    c = c * inverse(256,n) % n

    L = Matrix(ZZ,length+2,length+2)
    for i in range(length):
        L[i,i] = 1
        L[i,-1] = 256^i
        c -= 256^i*48
        c -= 256^i*40

    L[-2,-2] = 1
    L[-2,-1] = -c
    L[-1,-1] = n
    L[:,-1:] *= n
    res = L.LLL()
    for i in res[:-1]:
        flag = ""
        if(all(abs(j) <= 40 for j in i[:-2])):
            if(i[-2] == 1):
                for j in i[:-2][::-1]:
                    flag += chr(48 + 40 + j)
            elif i[-2] == -1:
                for j in i[:-2][::-1]:
                    flag += chr(48 + 40 - j)
        if(flag != ""):
            print(prefix.decode()+flag+suf.decode())
            break
    c = newm
#DASCTF{o0p5_m3ssaGe_to0_b1g_nv93nd0}
DASCTF{b<Lgi[PdN[TEkChH:[<R~aWecC[6ee1h}
DASCTF{^YbCRf[XYfkoNdjWrK:sYWvJ]`Y=`DNWQL}
DASCTF{JZQZSZca@@yv_SsTjGHbO_b[OHPsapYPW?J}
DASCTF{Z_S>VZIZoax\L?nOZn[Y_k]a]GsQVSHUO\X_}
DASCTF{[OBCIdafdOPK\_J]VVf_ZvS`N@MX[\~a_bBY_}
DASCTF{NoILV[FXUgJMQtQTm`SoVZcW]RSQNjIcUfXSYP}
DASCTF{YQPSTI_MTRJ^V[VL_ZgSXcWOeYOMUeXIZZMS_Yk}
DASCTF{\_VNWb:[SYYNW_Y[]]hHaeT\iY^`?e`JWU^[b[Wc}
DASCTF{bZQXWbdK^QVQVW\YZZbffXeeSVQ_RYWaY;JSiUQOV}
DASCTF{XT[TVUWcVLYpQjPSKMaZW_N[_YJTUaWZ_QWZeUI_w[}
DASCTF{VOZXXVXRQWP\JQbjd\[SQMVVLYhUVSUW`=LgWNV]QGN}
DASCTF{Y_a^Rn\[TRUP[`f_PRX`UNd][kUY[\VXSh`T]`YNQck]}
DASCTF{ZbXaNUWb[UZb[aeKWhOX[a\RQNFZRScKaZPdVM^XVc\Nc}
DASCTF{YVVULZWjUNK]\YeX\ZYU\dTK[YRbZYO\]bINWUa]aSUaTj}
DASCTF{Y[R[Y`\Yd][QUO][[@NY^NR_]KX[WYNJVS]KMN`^[XdYVRc}
DASCTF{YRVWP]_^ZdaF\ULVV`YURUYZS_]VWTMXZ]RTX^bYS[PGI`gX}
DASCTF{VZSZ_Ve\TY_PN[cUWZKRVgXOdSZRV[ZPVL_JZKQ_`QQSR]aVb}
DASCTF{]]UWYPaPS[^MQQSZ]Y`T\Y]OXYRM]WVQaWXRV[[^Q^WX[NW[IS}
DASCTF{TW\U[TXMSZW^UV[\T\gV`ZWXUgUMY]XcU`[XTV]_UW]YY\Y]MTV}
分类:Crypto
image
作者:开朗的网友

5

提交

2

收入

相关WriteUP

  • 羊城杯2024-babycurve

    观察曲线的阶,存在一些小因子可以利用,因此使用PH+BSGS求出子群上的DLP,并爆破一些子群阶,即可得到key然后AES-CBC解密得到flag但是由于题目给出了曲线上的两个点,因此可以在GFp上解方程得到曲线参数观察曲线的阶,存在一些小因子可以利用,因此使用PH+BSGS求出子群上的DLP,并爆破一些子群阶,即可得到key然后AES-CBC解密得到flagfrom&nbsp;sage.all&...

    • Crypto
    • 1月前
  • 羊城杯2024-TH_curve

    题目实现了TwistedHessianCurve上的点加法与标量乘法参考CryptoCTF2023WriteUps|廢文集中區(maple3142.net)博客,即可实现从THcurve到Weierstrass型曲线的转换(主要分为曲线方程求解与曲线点映射两步)然后就是朴素的ecdlp求解,同样利用小子群阶实施PH+BSGS得到flagfrom&nbsp;Crypto.Util.number&nb...

    • Crypto
    • 1月前
  • 羊城杯2024-TheoremPlus

    decode是在求&nbsp;,分两类讨论,为素数时,威尔逊定理等于-1,不为素数时是0例外的当n=4,等于2因此转变思路求素数的个数接着n开方找近似p的下一个q就行,老套路了from&nbsp;Crypto.Util.number&nbsp;import&nbsp;*from&nbsp;gmpy2&nbsp;import&nbsp;*from&nbsp;sage&nbsp;import&nbsp...

    • Crypto
    • 1月前
问题反馈