因为写论文的原因好久没做题了心里不舒服T T
趁起得早把之前BJDCTF的Crypto部分看一下。
[BJDCTF 2nd]签到-y1ng
BJD{W3lc0me_T0_BJDCTF}
[BJDCTF 2nd]老文盲了
罼雧締眔擴灝淛匶襫黼瀬鎶軄鶛驕鳓哵眔鞹鰝
打眼一看就以为是[mark]与佛论禅[/mark]但是解不出来。
搜索前六个字的拼音,发现缩写正好是BJDDKH(BJD大括号),
结尾的三个(眔鞹鰝)也是“大括号”(DKH),正好对应了flag的格式。
BJD{淛匶襫黼瀬鎶軄鶛驕鳓哵}
[BJDCTF 2nd]cat_flag
打开是一张喵喵图。像这种两种图片式样的很容易会想到二进制。
吃饭团?的小猫代表0,吃鸡腿?的小猫代表1,得到:
01000010
01001010
01000100
01111011
01001101
00100001
01100001
00110000
01111110
01111101
BJD{M!a0~}
[BJDCTF 2nd]灵能精通-y1ng
题目:
圣堂武士密码(Templar Cipher)是共济会的“猪圈密码”的一个变种,一直被共济会圣殿骑士用。
密码表如下:
根据密码表一一对照得到flag:
flag{IMKNIGHTSTEMPLAR}
[BJDCTF 2nd]燕言燕语-y1ng
题目:
79616E7A69205A4A517B78696C7A765F6971737375686F635F73757A6A677D20
hextotext,得到yanzi ZJQ{xilzv_iqssuhoc_suzjg} 。
维吉尼亚解密:
BJD{yanzi_jiushige_shabi}
[BJDCTF 2nd]Y1nglish-y1ng
提示明文都是可读的英文单词,自己读一下,把错误的单词修正。
看到题目第一眼想到的就是[mark]古典密码词频爆破[/mark]。
得到BJD{pyth0n_Brut3_f0rc3_oR_quipquip_AI_Cr4cy}。把最后的y换成k即可。
flag{pyth0n_Brut3_f0rc3_oR_quipquip_AI_Cr4ck}
[BJDCTF 2nd]rsa0
e=14410909 p+q=23931880634842446515710188637173745938136925534125373602530321730874750264692979932251849821168413299569359636243218927858282349601108258975948463515821980 p-q=-2049540936175944686445144605230961510336335156992557470944430440941921678682672765040189635279457210786095209707203321682633943038088021205802664687236358 c=83998827871073667956149547715510761937463248394668345299509011768220507725960289841961142604139833595331656459553996914941897142054330830976675765307570729248029731990929956130962771736605284038700836485491590403587601075590663619715033749224413823066755182516882141632330535871729407808162072429210389408857 flag=??????
已知p+q-p+q=p+q-(p-q)=2q,求出q得:
12990710785509195601077666621202353724236630345558965536737376085908335971687826348646019728223935255177727422975211124770458146319598140090875564101529169
p得:
10941169849333250914632522015971392213900295188566408065792945644966414293005153583605830092944478044391632213268007803087824203281510118885072899414292811
用RSA-TOOL往里套就是了。
flag{236aa26b-46d5-4483-8883-180f399488ea}
[BJDCTF 2nd]rsa1
e=10989787 p^2+q^2=194035410129486280776101730765438792764328064194349251811827644212035652355569305935839250801873853755135809772578373064567981692863463756065107611571813001097404377023653623537248761169041376184651030977368169869317913941948581165255130979376522906503290319084591207695433864868431733456017065542870758476770 p-q=-4223562921485584966184663204739185280874356891554878449648377292641399874036313970460211078505341968589722396325516357291864614039150074827642419653768562 c=23455999903842673568922298121256188322337311895550348671030981382803321564608654666702071802431604611319394867288749621195536496698414225502004562058621087693286061203014799541874298723570284597920242209892759832265638988198021915722816780318037349752017207447749587850072223319378179822646913205998205956446 flag=??????
已知p²+q²=(p-q)²+2pq,求出pq得:
88098463188869215609260386652617661700102349297209275077270332841127948180239565993409197850654180322350700537185762011306383409578030085772021656405498243391944377829636043241440287027804083900277745899285183153565912880333309696013877288276902767901159524660464458700907621489066880382045699233291049464463
又因为p²+q²=(p+q)²-2pq,求出(p+q)²得:
370232336507224711994622504070674116164532762788767801966368309894291548716048437922657646503182214399837210846949897087180748512019523927609150924382809487881293132682925710020129335224649543985206522775938536176449739702615200557282885555930328442305609368405520125097249107846565494220108464009452857405696
利用gmpy2库的iroot函数开平方得到p+q
19241422413824418505658603416218284949397775633813802931943946495117663149203616272723820719889091423701368356457298153319560998935179827989105103302862736
利用p+q-(p-q)=2q得出q:
11732492667655001735921633310478735115136066262684340690796161893879531511619965121592015899197216696145545376391407255305712806487164951408373761478315649
求得p:
7508929746169416769736970105739549834261709371129462241147784601238131637583651151131804820691874727555822980065890898013848192448014876580731341824547087
最后也用RSA-TOOL梭哈一下就OK。
flag{624898a7-a2fa-4405-b051-975b64393125}