GDOUCTF


Absolute_Baby_Encrytpion

手敲的换表

c = '+}!q")hiim)#}-nvm)i-$#mvn#0mnbm)im#n+}!qnm8)i-$#mvnoc#0nz<$9inm!>-n1:1-nm8)i-$~c58n!}qhij#0[noic##m8nc8n?!8c}w!n]>&'

h = 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()_+-=`~{}[]|:;"\'<>,.?/'
e = '!1)vm+q0c](}[85$*i>#<?o^-_hwe9gzd~=xj:4b`l3t6sn;\'rkp\"&/\\2.%|,@{u7ya'
h_ = [i for i in h]
e_ = [i for i in e]

index = []
for i in range(len(c)):
    x = e.index(c[i])
    index.append(x)
m = ''
for i in index:
    m += h_[i]
print(m)

babylua

两次MD5,爆破出来seed就好

import hashlib
import string

c = string.ascii_lowercase
c+= string.ascii_uppercase

# for i in range(len(c)):
#     s = ''
#     for j in range(len(c)):
#         for m in range(len(c)):
#             for n in range(len(c)):
#                 s = c[i]+c[j]+c[m]+c[n]
#                 # print(s)
#                 md5_1 = hashlib.md5(s.encode()).hexdigest()
#                 md5_2 = hashlib.md5(md5_1.encode()).hexdigest()
#                 md5_10 = md5_2[0:10]
#                 if(md5_10 == 'b5e62abe84'):
#                     print(s)
#                     break

s = 'kKpU'
s1 = hashlib.md5(s.encode()).hexdigest()
s2 = hashlib.md5(s1.encode()).hexdigest()
print(s2)
c = 'b5e62abe84bc8afbfd97c91a15aa0867'
c_ = [i for i in c]
print(c_)
c1 = '200 161 198 157 173 169 199 150 105 163 193 175 173 194 135 131 135 225'
c1_ = c1.split(' ')
m = ''
for i in range(len(c1_)):
    ch = int(c1_[i]) - ord(c[i])
    m += chr(ch)
print(m)

Math Problem

from sage.all_cmdline import *
from Crypto.Util.number import long_to_bytes
from gmpy2 import invert,iroot,gcd,mpz,powmod


e = 65537
n = 79239019133008902130006198964639844798771408211660544649405418249108104979283858140199725213927656792578582828912684320882248828512464244641351915288069266378046829511827542801945752252863425605946379775869602719406340271702260307900825314967696531175183205977973427572862807386846990514994510850414958255877
c = 45457869965165575324534408050513326739799864850578881475341543330291990558135968254698676312246850389922318827771380881195754151389802803398367341521544667542828862543407738361578535730524976113729406101764290984943061582342991118766322793847422471903811686775249409300301726906738475446634950949059180072008
a = 9303981927028382051386918702900550228062240363697933771286553052631411452412621158116514735706670764224584958899184294505751247393129887316131576567242619
b = 9007779281398842447745292673398186664639261529076471011805234554666556577498532370235883716552696783469143334088312327338274844469338982242193952226631913
y = 970090448249525757357772770885678889252473675418473052487452323704761315577270362842929142427322075233537587085124672615901229826477368779145818623466854

# y**2 = x**3 + a * x + b
PR.<x> = PolynomialRing(Zmod(n))
f = x ** 3 + a * x + b - y ** 2
f = f.monic()
pp = f.small_roots(X=2^64, beta=0.4,epsilon = 0.01)[0]
#9757458594430450711
x0 = mpz(pp)
kp = x0 ** 3 + a * x0 + b - y ** 2
p = gcd(kp,mpz(n))
q = n//p
phi = (p-1)*(q-1)
d = invert(e,phi)
m = powmod(c,d,n)
flag = long_to_bytes(m)
print(flag)

[GDOUCTF 2023]Magic of Encoding

from base64 import *

with open('c.txt',encoding="utf-8") as f:
    f = f.read()
m = f

a1 = 'flag{Xd_fake_flag_xD}'
a2 = 'find_me_if_you_can'
a3 = 'flag{not_the_correct_flag_lol}'
a4 = '\rflag{not_the_correct_flag_lol}'

a = [a1,a2,a3,a4] 
a = [b64encode(i.encode()).decode() for i in a]
a.append("CmZsYWd7bm90X3RoZV9jb3JyZWN0X2ZsYWdfbG9sfQpmbGFne25vdF90aGVfY29ycmVjdF9mbGFnX2xvbH0K")
print(a)
for i in a:
    m = m.replace(i,"")
print(m)

with open('flag.zip','wb')as f:
    f.write(b64decode(m))

文章作者: hengxinyan
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 hengxinyan !
  目录