ALPHABET = ''.join([chr(i) for i inrange(0x20, 0x7F)]) ALPHABET_SIZE = len(ALPHABET) enc="u_LcYsM^UWeM[XhIX[`<Q^eb@__pY]%" plain="Hello,good morning!How are you?" key="" for i inrange(len(enc)): key+=chr(0x20+(ord(enc[i])-ord(plain[i])%ALPHABET_SIZE)) print(key)
import gmpy2 from Crypto.Util.number import * defcontinuedFra(x,y): cf=[] while y: cf.append(x//y) x,y=y,x%y return cf defgradualFra(cf): numerator=0 denominator=1 for x in cf[::-1]: numerator, denominator=denominator,x*denominator+numerator return numerator,denominator defsolve_pq(a,b,c): par=gmpy2.isqrt(b*b-4*a*c) return (-b+par)//(2*a),(-b-par)//(2*a) defgetGradualFra(cf): gf=[] for i inrange(1,len(cf)+1): gf.append(gradualFra(cf[:i])) return gf defwienerAttack(e,n): cf=continuedFra(e,n) gf=getGradualFra(cf) for d,k in gf: if k==0:continue if (e*d-1)%k!=0: continue phi=(e*d-1)//k p,q=solve_pq(1,n-phi+1,n) if p*q==n: return d n= 91510509432781975760096107767377368031971006305898876524065398755888465048733880775248518816640444331620686600617734933883674520683631664424444216875152972385753603001698383568597237868613120918436955398079663009003724465724879507817731759285758460762662824164026500606884671511702262581388638282794890192027 e= 26135083049930915264766519621014938119816864463605449201859665226084899098214765205357516917163302642828133788920140812606329233832519835056759832222374744306721856126632867337922339606510596531565510906786609997470993555429532739371539100062164271943073972387884530377949557546032895161688788115133699375651 c= 89474432234398707693013252794312396821604378051286372242798907187393288884658352126237918243202321235275486653344125988170718123195724674942704448081894833467667853715908719921049714079134833467442977053354875447786201963904815858599906088447249628150423378791886049597071980521393184316411224694315578400683 d=wienerAttack(e,n) m=pow(c,d,n) print(long_to_bytes(m)) #b'flag{20d61a61-c5dc-4629-9f44-bd885eb3e980}'
Web
ping
ping命令注入,空格用${IFS}绕,关键词用\截断绕过,无回显就写到文件里读
Reverse
ez_re
加密逻辑就是()((i<<4)|(i>>4))^0x55)&0xff
写脚本打表解密
1 2 3 4 5 6 7 8 9
enc=[0x33,0x93,0x43,0x23,0xe2,0xc0,0x56,0x2,0xa0,0x51,0x72,0x3,0xa0,0x23,0x72,0x3,0x51,0x12,0xa0,0x63,0x12,0x33,0x66,0x72,0x82] dic={} for i inrange(128): dic[(((i<<4)|(i>>4))^0x55)&0xff]=chr(i) flag='' for i in enc: flag+=dic[i] print(flag) #flag{Y0u_@re_gre@t_ctf3r}