BUUCTF Crypto

看我回旋踢

synt{5pq1004q-86n5-46q8-o720-oro5on0417r1}

通过格式很容易看出来是凯撒密码,直接丢到解密工具里,偏移量为13,得到flag

flag{5cd1004d-86a5-46d8-b720-beb5ba0417e1}


password

姓名:张三
生日:19900315

脑洞题…

flag{zs19900315}


变异凯撒

加密密文:afZ_r9VYfScOeO_UL^RWUc

flag的格式为flag{……},查ASCII表可以看到密文和flag的偏移量为5,6,7,8……直接写脚本

1
2
3
4
5
6
7
8
str = "afZ_r9VYfScOeO_UL^RWUc"
res = ""
num = 5
for ch in str:
chAscii = ord(ch)+num
res = res+chr(chAscii)
num = num+1
print(res)

flag{Caesar_variation}


Quoted-printable

=E9=82=A3=E4=BD=A0=E4=B9=9F=E5=BE=88=E6=A3=92=E5=93=A6

通过题目可以看出这是可打印字符引用编码,直接丢到解密工具

flag{那你也很棒哦}


Rabbit

U2FsdGVkX1/+ydnDPowGbjjJXhZxm2MP2AgI

Rabbit编码,丢到解密工具

flag{Cute_Rabbit}


篱笆墙的影子

felhaagv{ewtehtehfilnakgw}

可以看出为栅栏密码,栅栏数为2

f l a g

e h a v

丢到解密工具里

flag{wethinkwehavetheflag}


RSA

在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=17
求解出d作为flag提交

RSA加密,知道p,q,e,求d,用RSATool2解密,这里要注意e是十进制的,要改成十六进制11

flag{125631357777427553}


丢失的MD5

1
2
3
4
5
6
7
8
9
>import hashlib   
>for i in range(32,127):
for j in range(32,127):
for k in range(32,127):
m=hashlib.md5()
m.update('TASC'+chr(i)+'O3RJMV'+chr(j)+'WDJKX'+chr(k)+'ZM')
des=m.hexdigest()
if 'e9032' in des and 'da' in des and '911513' in des:
print des

修改代码,即可得到flag

1
2
3
4
5
6
7
8
9
10
import hashlib
for i in range(32, 127):
for j in range(32, 127):
for k in range(32, 127):
m = hashlib.md5()
m.update('TASC'.encode('utf-8')+chr(i).encode('utf-8') +
'O3RJMV'.encode('utf-8')+chr(j).encode('utf-8')+'WDJKX'.encode('utf-8')+chr(k).encode('utf-8')+'ZM'.encode('utf-8'))
des = m.hexdigest()
if 'e9032' in des and 'da' in des and '911513' in des:
print(des)

flag{e9032994dabac08080091151380478a2}


Alice 与 Bob

密码学历史中,有两位知名的杰出人物,Alice和Bob。他们的爱情经过置换和轮加密也难以混淆,即使是没有身份认证也可以知根知底。就像在数学王国中的素数一样,孤傲又热情。下面是一个大整数:98554799767,请分解为两个素数,分解后,小的放前面,大的放后面,合成一个新的数字,进行md5的32位小写哈希,提交答案。 注意:得到的 flag 请包上 flag{} 提交

先在 http://www.factordb.com/ 这个网站将98554799767分解为两个素数,将两个数排序,然后md5加密

flag{d450209323a847c8d01c6be47c81811a}


rsarsa

Math is cool! Use the RSA algorithm to decode the secret message, c, p, q, and e are parameters for the RSA algorithm.

p = 9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483
q = 11874843837980297032092405848653656852760910154543380907650040190704283358909208578251063047732443992230647903887510065547947313543299303261986053486569407
e = 65537
c = 83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034

Use RSA to find the secret message

这道题知道了p,q,e,c求m,带入公式

n=p*q

φ(n)=(p-1)*(q-1)

e*d mod φ(n)=1 这里的d可以用gmpy2库的invert函数计算

m=c^d mod n

写脚本

1
2
3
4
5
6
7
8
9
10
11
import gmpy2
p = 9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483
q = 11874843837980297032092405848653656852760910154543380907650040190704283358909208578251063047732443992230647903887510065547947313543299303261986053486569407
e = 65537
c = 83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034
n = p*q
phin = (p-1)*(q-1)
d=gmpy2.invert(e,phin)
m = pow(c, d, n)
print(m)
//5577446633554466577768879988

flag{5577446633554466577768879988}


大帝的密码武器

公元前一百年,在罗马出生了一位对世界影响巨大的人物,他生前是罗马三巨头之一。他率先使用了一种简单的加密函,因此这种加密方法以他的名字命名。
以下密文被解开后可以获得一个有意义的单词:FRPHEVGL
你可以用这个相同的加密向量加密附件中的密文,作为答案进行提交。

密文:ComeChina

看题目可以联想到恺撒大帝发明的恺撒密码,将FRPHEVGL丢进解码工具,偏移量为13,得到SECURITY

将密文一样用恺撒密码解密,偏移量13,得到flag

flag{PbzrPuvan}


Windows系统密码

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
ctf:1002:06af9108f2e1fecf144e2e8adef09efd:a7fcb22a88038f35a8f39d503e7f0062:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
SUPPORT_388945a0:1001:aad3b435b51404eeaad3b435b51404ee:bef14eee40dffbc345eeb3f58e290d56:::

看到ctf那一栏,将后面的两个密文,在 https://www.cmd5.com/ 网站查询,后面的那一个密文可以得到flag

flag{good-luck}


信息化时代的步伐

也许中国可以早早进入信息化时代,但是被清政府拒绝了。附件中是数十年后一位伟人说的话的密文。请翻译出明文(答案为一串中文!) 注意:得到的 flag 请包上 flag{} 提交

密文:606046152623600817831216121621196386

密文是中文电码,用中文电码工具查询,可以得到flag

flag{计算机要从娃娃抓起}


传统知识+古典密码

小明某一天收到一封密信,信中写了几个不同的年份
辛卯,癸巳,丙戌,辛未,庚辰,癸酉,己卯,癸巳。
信的背面还写有“+甲子”,请解出这段密文。

看到天干地支,查干支表

可以查到辛卯,癸巳,丙戌,辛未,庚辰,癸酉,己卯,癸巳对应的数是28,30,23,08,17,10,16,30

由于”+甲子”,所以每一个数都加60,得到88,90,83,68,77,70,86,90

用ascii解码,得到XZSDMFLZ,题目说到古典密码,很容易想到栅栏密码和恺撒密码

先用栅栏密码解密,栅栏数为2,得到XMZFSLDZ

再用恺撒密码解密,偏移量为21,得到SHUANGYU

flag{SHUANGYU}


凯撒?替换?呵呵!

MTHJ{CUBCGXGUGXWREXIPOYAOEYFIGXWRXCHTKHFCOHCFDUCGTXZOHIXOEOWMEHZO}

看到{}可以想到这是flag的格式,丢进解密工具进行凯撒解密,发现对不上,然后尝试题目里说的替换密码

https://quipqiup.com/ 里进行暴力破解,线索为MTHJ=flag

得到flag

flag{substitutioncipherdecryptionisalwayseasyjustlikeapieceofcake}


RSA1

p = 8637633767257008567099653486541091171320491509433615447539162437911244175885667806398411790524083553445158113502227745206205327690939504032994699902053229
q = 12640674973996472769176047937170883420927050821480010581593137135372473880595613737337630629752577346147039284030082593490776630572584959954205336880228469
dp = 6500795702216834621109042351193261530650043841056252930930949663358625016881832840728066026150264693076109354874099841380454881716097778307268116910582929
dq = 783472263673553449019532580386470672380574033551303889137911760438881683674556098098256795673512201963002175438762767516968043599582527539160811120550041
c = 24722305403887382073567316467649080662631552905960229399079107995602154418176056335800638887527614164073530437657085079676157350205351945222989351316076486573599576041978339872265925062764318536089007310270278526159678937431903862892400747915525118983959970607934142974736675784325993445942031372107342103852

直接套脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import gmpy2 as gp
p = 8637633767257008567099653486541091171320491509433615447539162437911244175885667806398411790524083553445158113502227745206205327690939504032994699902053229
q = 12640674973996472769176047937170883420927050821480010581593137135372473880595613737337630629752577346147039284030082593490776630572584959954205336880228469
dp = 6500795702216834621109042351193261530650043841056252930930949663358625016881832840728066026150264693076109354874099841380454881716097778307268116910582929
dq = 783472263673553449019532580386470672380574033551303889137911760438881683674556098098256795673512201963002175438762767516968043599582527539160811120550041
c = 24722305403887382073567316467649080662631552905960229399079107995602154418176056335800638887527614164073530437657085079676157350205351945222989351316076486573599576041978339872265925062764318536089007310270278526159678937431903862892400747915525118983959970607934142974736675784325993445942031372107342103852
n = p*q
phin = (p-1)*(q-1)
dd = gp.gcd(p-1, q-1)
d = (dp-dq)//dd * gp.invert((q-1)//dd, (p-1)//dd) * (q-1) + dq
print("d=", d)
m = pow(c, d, n)
print("m=", m)
print(hex(m))
print(bytes.fromhex(hex(m)[2:]))

flag{W31c0m3_70_Ch1n470wn}


萌萌哒的八戒

猪圈密码


old-fashion

Os drnuzearyuwn, y jtkjzoztzoes douwlr oj y ilzwex eq lsdexosa kn pwodw tsozj eq ufyoszlbz yrl rlufydlx pozw douwlrzlbz, ydderxosa ze y rlatfyr jnjzli; mjy gfbmw vla xy wbfnsy symmyew (mjy vrwm qrvvrf), hlbew rd symmyew, mebhsymw rd symmyew, vbomgeyw rd mjy lxrzy, lfk wr dremj. Mjy eyqybzye kyqbhjyew mjy myom xa hyedrevbfn lf bfzyewy wgxwmbmgmbrf. Wr mjy dsln bw f1_2jyf-k3_jg1-vb-vl_l

看着像是凯撒,带进去发现对不上,然后直接在 https://quipqiup.com/ 里暴力破解,得到flag

flag{n1_2hen-d3_hu1-mi-ma_a}


世上无难事

以下是某国现任总统外发的一段指令,经过一种奇异的加密方式,毫无规律,看来只能分析了。请将这段语句还原成通顺语句,并从中找到key作为答案提交,答案是32位,包含小写字母。

VIZZB IFIUOJBWO NVXAP OBC XZZ UKHVN IFIUOJBWO HB XVIXW XAW VXFI X QIXN VBD KQ IFIUOJBWO WBKAH NBWXO VBD XJBCN NKG QLKEIU DI XUI VIUI DKNV QNCWIANQ XN DXPIMKIZW VKHV QEVBBZ KA XUZKAHNBA FKUHKAKX XAW DI VXFI HBN QNCWIANQ NCAKAH KA MUBG XZZ XEUBQQ XGIUKEX MUBG PKAWIUHXUNIA NVUBCHV 12NV HUXWI XAW DI XUI SCQN QB HZXW NVXN XZZ EBCZW SBKA CQ NBWXO XAW DI DXAN NB NVXAP DXPIMKIZW MBU JIKAH QCEV XA BCNQNXAWKAH VBQN HKFI OBCUQIZFIQ X JKH UBCAW BM XLLZXCQI XAW NVI PIO KQ 640I11012805M211J0XJ24MM02X1IW09

看着也像凯撒密码,解密后发现对不上,又丢到 https://quipqiup.com/ 这里暴力破解,得到 640E11012805F211B0AB24FF02A1ED09

题目说flag里有小写字母,所以要把flag改成小写

flag{640e11012805f211b0ab24ff02a1ed09}


异性相吸

key.txt:asadsasdasdasdasdasdasdasdasdasdqwesqf

密文.txt:ἇ̀Ј唒ဃ塔屋䩘卖剄䐃堂ن䝔嘅均ቄ䩝ᬔ

用各种密码尝试都对不上,然后将两个txt文件用010editor打开,用二进制格式查看,发现两个文件二进制的位数是相同的,看到题目的异字,尝试异或一下

1
2
3
4
5
6
7
secret = open('./密文.txt').read()
key = open('./key.txt').read()
res = ''
for i in range(0, len(key)):
ch = chr(ord(secret[i]) ^ ord(key[i]))
res += ch
print(res)

得到flag

flag{ea1bc0988992276b7f95b54a7435e89e}


还原大师

我们得到了一串神秘字符串:TASC?O3RJMV?WDJKX?ZM,问号部分是未知大写字母,为了确定这个神秘字符串,我们通过了其他途径获得了这个字串的32位MD5码。但是我们获得它的32位MD5码也是残缺不全,E903???4DAB????08?????51?80??8A?,请猜出神秘字符串的原本模样,并且提交这个字串的32位MD5码作为答案。 注意:得到的 flag 请包上 flag{} 提交

看到这样的题目,直接写脚本就好啦

1
2
3
4
5
6
7
8
9
10
11
import hashlib
str = "TASC?O3RJMV?WDJKX?ZM"
for i in range(0, 26):
str1 = str.replace('?', chr(65+i), 1)
for j in range(0, 26):
str2 = str1.replace('?', chr(65+j), 1)
for k in range(0, 26):
str3 = str2.replace('?', chr(65+k), 1)
md5str = hashlib.md5(str3.encode('utf8')).hexdigest().upper()
if md5str[0:4] == "E903":
print(str3, md5str)

flag{TASCJO3RJMVKWDJKXLZM E9032994DABAC08080091151380478A2}


Unencode

89FQA9WMD<V1A<V1S83DY.#<W3$Q,2TM]

试了半天都弄不出来,百度一查,原来有一种编码就叫Unencode编码……直接在这个网站 http://ctf.ssleye.com/uu.html 解密,得到flag

flag{dsdasdsa99877LLLKK}


robomunication

附件下来是一个mp3文件,听一下很容易会联想到莫尔斯电码,哔是.,卟是-,听完就可以拿到摩尔斯电码…. . .-.. .-.. — .– …. .- - .. … - …. . -.- . -.– .. - .. … -… — — .–. -… . . .–.

解码得到flag

flag{BOOPBEEP}