CTF² BUUCTF Crypto 第一页

📅2026/7/14 6:19:49 👁️次浏览
CTF² BUUCTF Crypto 第一页
看我回旋踢rot13import codecs x synt{5pq1004q-86n5-46q8-o720-oro5on0417r1} ans codecs.decode(x, rot_13) print(ans)flag{5cd1004d-86a5-46d8-b720-beb5ba0417e1}变异凯撒经典凯撒加密把每个字母在字母表中往后或往前移动固定的位数只移字母其它不变。告知了密文的前四位解密是flag那就可以通过对比密文和已知字符的ascii码来查找规律a97 f102 Z90 _95f102 l108 a97 g103第一位的a和f相差5、第二位的f和l相差6、第三位的Z和a相差7、第四位的_和g相差8依照此规律进行解密x afZ_r9VYfScOeO_UL^RWUc num 5 flag for i in x: i chr(ord(i)num) flag i num 1 print(flag)flag{Caesar_variation}Url编码from urllib.parse import unquote x %66%6c%61%67%7b%61%6e%64%20%31%3d%31%7d flag unquote(x) print(flag)flag{and 11}传感器结合提示以及一串只由569A构成的十六进制字符串可得曼彻斯特编码flag{FFFFFED31F645055F9}robomunication播放mp3只有两种声音bi、bo猜测摩斯密码.... . .-.. .-.. --- .-- .... .- - .. ... - .... . -.- . -.-- .. - .. ... -... --- --- .--. -... . . .--.解密得HELLOWHATISTHEKEYITISBOOPBEEPflag{BOOPBEEP}MD5MD5 解密 - 在线解密 MD5 哈希值flag{admin1}Quoted-printableimport quopri x E982A3E4BDA0E4B99FE5BE88E6A392E593A6 flag quopri.decodestring(x).decode() print(flag)flag{那你也很棒哦}丢失的MD5python2的稍微改一下就能用3运行import hashlib for i in range(32,127): for j in range(32,127): for k in range(32,127): mhashlib.md5() m.update((TASCchr(i)O3RJMVchr(j)WDJKXchr(k)ZM).encode(utf-8)) desm.hexdigest() if e9032 in des and da in des and 911513 in des: print(des)flag{e9032994dabac08080091151380478a2}传统知识古典密码六十甲子顺序表辛卯癸巳丙戌辛未庚辰癸酉己卯癸巳。28 30 23 08 17 10 16 40甲子每个数字都加上60 -- 88 90 83 68 77 70 76 90将其进行十进制转字符XZSDMFLZ古典密码包括栅栏、凯撒......先进行栅栏解密将分栏2中的XMZFSLDZ接着凯撒解密#5为答案flag{SHUANGYU}password盲猜姓名缩写生日flag{zs19900315}rot依据题目rot虽然不知道偏移量多少但是可以枚举一下x 83 89 78 84 45 86 96 45 115 121 110 116 136 132 132 132 108 128 117 118 134 110 123 111 110 127 108 112 124 122 108 118 128 108 131 114 127 134 108 116 124 124 113 108 76 76 76 76 138 23 90 81 66 71 64 69 114 65 112 64 66 63 69 61 70 114 62 66 61 62 69 67 70 63 61 110 110 112 64 68 62 70 61 112 111 112 data x.split( ) result for num in range(1,14): for i in data: result chr(int(i)-num) print(result)得出残缺的flagflag{www_shiyanbar_com_is_very_good_????}以及完整flag经过md5加密后的结果38e4c352809e150186920aac37190cbc那接着就是继续枚举并对比完整flag的md5import hashlib flag flag{www_shiyanbar_com_is_very_good_ md5 38e4c352809e150186920aac37190cbc for a in range(32,127): for b in range(32,127): for c in range(32, 127): for d in range(32, 127): x flag chr(a) chr(b) chr(c) chr(d) } x_md5 hashlib.md5(x.encode(utf-8)).hexdigest() if x_md5 md5: print(x) exit()flag{www_shiyanbar_com_is_very_good_8Mu}摩丝摩斯解密flag{ILOVEYOU}UnencodeUUencode编码flag{dsdasdsa99877LLLKK}大帝的密码武器结合标题和题目可知密文为凯撒加密只是不知道偏移量x FRPHEVGL for i in range(1,26): tmp for o in x: tmp chr((ord(o) - ord(A) - i) % 26 ord(A)) print(f{i}{tmp})偏移量13的SECURITY是有意义的单词译为安全那同样的下面的密文偏移量也是13x ComeChina tmp for o in x: if o.isupper(): tmp chr((ord(o) - ord(A) - 13) % 26 ord(A)) elif o.islower(): tmp chr((ord(o) - ord(a) - 13) % 26 ord(a)) print(tmp)flag{PbzrPuvan}RSAROLL加密c m^e mod n 解密m c^d mod n已知n为920139713e为19。需要先因数分解n得出p、q然后再算出d进行解密import math n 920139713 for i in range(2, math.isqrt(n)): if n % i 0: p, q i, n // i print(fp{p}q{q}) break得出p18443q49891import libnum from Crypto.Util.number import long_to_bytes n 920139713 e 19 p 18443 q 49891 result c_list [704796792, 752211152, 274704164, 18414022, 368270835, 483295235, 263072905, 459788476, 483295235, 459788476, 663551792, 475206804, 459788476, 428313374, 475206804, 459788476, 425392137, 704796792, 458265677, 341524652, 483295235, 534149509, 425392137, 428313374, 425392137, 341524652, 458265677, 263072905, 483295235, 828509797, 341524652, 425392137, 475206804, 428313374, 483295235, 475206804, 459788476, 306220148] for c in c_list: d libnum.invmod(e,(p-1) * (q-1)) m pow(c, d, n) str long_to_bytes(m) result str.decode() print(result)flag{13212je2ue28fy71w8u87y31r78eu1e2}rsarsaimport libnum from Crypto.Util.number import long_to_bytes p 9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483 q 11874843837980297032092405848653656852760910154543380907650040190704283358909208578251063047732443992230647903887510065547947313543299303261986053486569407 e 65537 c 83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034 n p * q d libnum.invmod(e, (p-1) * (q-1)) m pow(c, d, n) print(m)flag{5577446633554466577768879988}Windows系统密码解密ctf后面的那段md5值a7fcb22a88038f35a8f39d503e7f0062 md5在线解密破解,md5解密加密flag{good-luck}RSAimport libnum p473398607161 q4511491 e17 d libnum.invmod(e, (p-1) * (q-1)) print(d)flag{125631357777427553}RSA2import libnum import math from Crypto.Util.number import long_to_bytes e 65537 n 248254007851526241177721526698901802985832766176221609612258877371620580060433101538328030305219918697643619814200930679612109885533801335348445023751670478437073055544724280684733298051599167660303645183146161497485358633681492129668802402065797789905550489547645118787266601929429724133167768465309665906113 dp 905074498052346904643025132879518330691925174573054004621877253318682675055421970943552016695528560364834446303196939207056642927148093290374440210503657 c 140423670976252696807533673586209400575664282100684119784203527124521188996403826597436883766041879067494280957410201958935737360380801845453829293997433414188838725751796261702622028587211560353362847191060306578510511380965162133472698713063592621028959167072781482562673683090590521214218071160287665180751 k e * dp - 1 p math.gcd(pow(c,k,n) - 1,n) q n // p d libnum.invmod(e, (p-1)*(q-1)) m pow(c,d,n) result long_to_bytes(m).decode() print(result)flag{wow_leaking_dp_breaks_rsa?_98924743502}RSA3共模攻击import gmpy2 from Crypto.Util.number import long_to_bytes c122322035275663237041646893770451933509324701913484303338076210603542612758956262869640822486470121149424485571361007421293675516338822195280313794991136048140918842471219840263536338886250492682739436410013436651161720725855484866690084788721349555662019879081501113222996123305533009325964377798892703161521852805956811219563883312896330156298621674684353919547558127920925706842808914762199011054955816534977675267395009575347820387073483928425066536361482774892370969520740304287456555508933372782327506569010772537497541764311429052216291198932092617792645253901478910801592878203564861118912045464959832566051361 n22708078815885011462462049064339185898712439277226831073457888403129378547350292420267016551819052430779004755846649044001024141485283286483130702616057274698473611149508798869706347501931583117632710700787228016480127677393649929530416598686027354216422565934459015161927613607902831542857977859612596282353679327773303727004407262197231586324599181983572622404590354084541788062262164510140605868122410388090174420147752408554129789760902300898046273909007852818474030770699647647363015102118956737673941354217692696044969695308506436573142565573487583507037356944848039864382339216266670673567488871508925311154801 e111187289 c218702010045187015556548691642394982835669262147230212731309938675226458555210425972429418449273410535387985931036711854265623905066805665751803269106880746769003478900791099590239513925449748814075904017471585572848473556490565450062664706449128415834787961947266259789785962922238701134079720414228414066193071495304612341052987455615930023536823801499269773357186087452747500840640419365011554421183037505653461286732740983702740822671148045619497667184586123657285604061875653909567822328914065337797733444640351518775487649819978262363617265797982843179630888729407238496650987720428708217115257989007867331698397 e29647291 s gmpy2.gcdext(e1,e2) m (pow(c1,s[1],n) * pow(c2,s[2],n)) % n result long_to_bytes(m).decode() print(result)flag{49d91077a1abcb14f1a9d546c80be9ef}