0x01 签到-y1ng1
-
提示很明显。
-
为base64 解密,直接得到flag.
BJD{W3lc0me_T0_BJDCTF}
0x02 老文盲了1
-
因为其提示老文盲,并且打开的txt文档中字母都比较生僻
所以直接将其放在在线网站上寻找拼音
-
可读出 BJD{}这就是flag 直接交了吧{}
-
所以明显flag{淛匶襫黼瀬鎶軄鶛驕鳓哵}
0x03 cat_flag
-
打开文件 发现为一gif 动图
-
有的猫咪吃鸡腿,有的没有吃。容易想到二进制数0,1。 将图片用二进制数字表示为:
01000010
01001010
01000100
01111011
01001101
00100001
01100001
00110000
01111110
01111101 -
将二进制转文本,直接得到flag
BJD{M!a0~}
0x04 燕言燕语-y1ng
-
题目给一串字符串
79616E7A69205A4A517B78696C7A765F6971737375686F635F73757A6A677D20
-
发现其中只有大写字母和数字。怀疑其为base32编码,发现也不是。
-
然后进一步发现 大写字母中只有A~F ,没有其他的大写字母
考虑是十六进制,于是十六进制 转文本
-
因为对应格式,猜测其为置换密码。
前面存在yanzi,所以猜测为维吉尼亚密码,yanzi为密钥
-
得到flag
0x05 灵能精通-y1ng
-
打开文件,根据提示改后缀名为jpg,发现一系列图案。
-
结合提示中给出的什么武术,战斗什么的,猜测其可能为猪圈密码的变种,圣堂武士密码。
-
-
对照图表,得到flag
flag{IMKNIGHTSTEMPLAR}
0x06 Y1nglish-y1ng
-
打开文档 ,为一串字符
Nkbaslk ds sef aslckdqdqst. Sef aslckdqdqst qo lzqtbw usf ufkoplkt zth oscpslsfko. Dpkfk zfk uqjk dwcko su dscqao qt dpqo aslckdqdqst, kzap su npqap qo jkfw mzoqa. Qu wse zfk qtdkfkodkh qt tkdnsfw okaefqdw, nkbaslk ds czfdqaqczdk. Bkd lk dkbb wse z odsfw. Q nzo pzjqtv hqttkf zd z fkodzefztd npkt Pzffw Odkkbk azlk qt, pk qo z Izcztkok ufsl Izczt med tsn pk qo tsd bqjqtv qt Izczt, lzwmk Pzffw qot'd z Izcztkok tzlk med pk qo fkzbbw z Izcztkok. Pzffw nsfwkh qt z bznwkf'o suuqak wkzfo zvs, med pk qo tsn nsfwqtv zd z mztw. Pk vkdo z vssh ozbzfw, med pk zbnzwo msffsno lstkw ufsl pqo ufqktho zth tkjkf czwo qd mzaw. Pzffw ozn lk zth azlk zthozdzd dpk ozlk dzmbk. Pk pzo tkjkf msffsnkh lstkw ufsl lk. Npqbk pk nzo kzdqtv, Q zowkh pql ds bkth lk &2. Ds lw oefcfqok, pk vzjk lk dpk lstkw qllkhqzdkbw. 'Q pzjk tkjkf msfffsnkh ztw lstkw ufsl wse,' Pzffw ozqh,'os tsn wse azt czw usf lw hqttkf!' Tsn q nqbb vqjk wse npzd wse nztd. MIH{cwdp0t_Mfed3_u0fa3_sF_geqcgeqc_ZQ_Af4aw}
-
因为看到两个花括号,因此猜测其可能为置换密码,这里采用简单的在线工具进行解密。地址为:https://quipqiup.com/
-
解密后得到的文字为
Welcome to our competition. Our competition is mainly for freshmen and sophomores. There are five types of topics in this competition, each of which is very basic. If you are interested in networy security, welcome to participate. Let me tell you a story. I was having dinner at a restaurant when Harry Steele came in, he is a Japanese from Japan but now he is not living in Japan, maybe Harry isn't a Japanese name but he is really a Japanese. Harry woryed in a lawyer's office years ago, but he is now worying at a bany. He gets a good salary, but he always borrows money from his friends and never pays it bacy. Harry saw me and came andsatat the same table. He has never borrowed money from me. While he was eating, I asyed him to lend me &2. To my surprise, he gave me the money immediately. 'I have never borrrowed any money from you,' Harry said,'so now you can pay for my dinner!' Now i will give you what you want. BJD{pyth0n_Brut3_f0rc3_oR_quipquip_AI_Cr4cy}
-
根据提示
可能存在一定的单词拼写错误
-
通读发现 最后应该为crack 而不是 cracy。
-
so 改 y 为 k 。
得到flag:
BJD{pyth0n_Brut3_f0rc3_oR_quipquip_AI_Cr4cy}
0x07 rsa0
-
-
通过扫描端口 拿到数据 。
-
这里已知 公钥 ,两个大素数 , 密文 , 求明文
-
已知 p+q,p-q。利用简单的数学知识,列出方程可以求出p,q的具体值
import gmpy2 a = 21522778811180105592277258214578928290289640114755466001125386003872371769861055840688484819251202361753497910031082531738017214854874823749735131995629320 b = 3833034096431793989583857534571426995679692212108892246096749920052248973119839140188251765953587052236924768427138435083193175447713786051611144083819018 p = (a+b)//2 q = (a-b)//2 e = 10395001 c=89855136061733961461650403101582197659133109295876490450337067995841196359620348559464822470997235382366153702855018909818923536303383179860481370795105495052647263608117130133981484065012265512905070036549242107370372804385371093412235217071172041678364628158576977079323343981534462649081821785704905062092 n = p*q phi = (p-1)*(q-1) d = gmpy2.invert(e,phi) m = pow(c,d,n) print(m) print(hex(m)) print(bytes.fromhex(hex(m)[2:]))
-
这里主要运用gmpy2 库 中的 solve通过方程求解 得到p,q的值
-
最后运行程序的得到flag
flag{de6de5cc-5de9-41b8-8c60-ecb980394c42}
0x08 rsa1
-
同样nc 拿到数据
-
-
这里利用脚本
from sympy import * from sympy.abc import p,q nn=240202489144940625897499436139600628691112537626194341191517212246330997839906368642866831954447637902950991461424066299627002191043790366616680335563298980590215185316374475599726089766729794581412957536480602832836775108648201615076077791247081365595004029992449721662138638761972916129076985043484797831490 qjp=1042591762882073242232872278960455053404231934494696453502204242911745528069269484987488879871858971868169148340414095438206825241923299437352802232915038 c=71435959890060714775860283845070770807336375283620037026996634891859264207142541968322856382509744924514694875687521774912766235301962220737852369100226573826919817437051680292115308196993702234134879004401179756857997717891870139157894436683194842746758664747016081138911302375586228857165059760605089440241 aa=solve([p*p+q*q-nn,p-q+qjp],[p,q]) print(aa)
-
这里利用 sympy 的 solve 函数 通过方程求解 得到 p,q 的值
-
然后利用公式