本次WP,由雒大佬提供!
0x1 base16
直接转字符串
flag{it_is_b4s3sixteen}
0x2 base32
直接base32
0x3 base64
直接base64解码
0x4 unicode
直接转字符串
0x5 easy_caesar
凯撒解密
得到flag
0x6 奇怪的字符串
R1kzRE1RWldHRTNET04yQ0dNNERHTkpUR0laVFFNWlRHTVpUTU5KV0dFWlRPTlJUR00zVEdOSlRHNDNETU5SUkdNWlRHTkpXR01aVElOUldHTVlER01KVEhBM0RNTlJSR1lZVE1NWlRHWVpUT05SUkdNWVRHTVpYSVE
先拿base64解密
提示失败,在字符串后面加上=
得到结果
尝试再次进行base64解码
提示失败,再次加=
很明显不是我们想要的
尝试base32
得到一个十六进制
转字符串
得到flag
0x7 easy_rsa1
前面转了那么多十六进制到字符串
密文一看就知道转字符有flag
这道题 如果没发现特点,可以按rsa常规的套路去做,n里面出现了非十六进制数
说明n在这里肯定用不了
但是给出e=1,rsa加密中 如果e=1 c=m mod n,假如m 与 n 互质,c=m
0x8 easy_rsa0
n = 14783703403657671882600600446061886156235531325852194800287001788765221084107631153330658325830443132164971084137462046607458019775851952933254941568056899
e = 65537
c = 1185049716299203720803420810904079629528218564331492627830830396094648931160053948162527867338891026371024154472597960669760006765402877890901585728358989
常规题目,尝试分解n
在factordb上查询 没有得到结果
用yafu进行分解
分解成功得到 p和q
然后通过p、q、e破解出 d
import gmpy
from Crypto.PublicKey import RSA
n = 14783703403657671882600600446061886156235531325852194800287001788765221084107631153330658325830443132164971084137462046607458019775851952933254941568056899
c = 1185049716299203720803420810904079629528218564331492627830830396094648931160053948162527867338891026371024154472597960669760006765402877890901585728358989
e = long(65537)
p = 121588253559534573498320028934517990374721243335397811413129137253981502291631
q = 121588253559534573498320028934517990374721243335397811413129137253981502291629
d = long(gmpy.invert(e,(p-1)*(q-1)))
key = RSA.construct((n,e,d))
print key
print key.decrypt(c)
print hex(key.decrypt(c))
print hex(key.decrypt(c))[2:-1].decode('hex')
然后直接利用私钥解密
得到明文 不过明文是十进制 需要转成字符串
最后得到flag{rsa_1s_s0_interesting}
0x9 cipher
给出的是一串十六进制
我们将其转成字符串得到
看着很懵逼,对其进行分析,发现有很多字符串重复,于是将其在百度上搜索
替换与置换密码
对其进行凯撒解密
发现关键词 cipher 通过分析得知 该字符串是通过凯撒加密且位移位3后的字符串
将其全文进行凯撒解密得到
出现了很多正常的英文单词
且其中出现了rot46,于是百度搜索
并没有关于rot46的信息,但是看到rot47
于是自己写rot46的脚本
得到的结果依然不对
后面分析rot47
说是对ascii值进行置换
于是尝试和对全文进行位移为3的ascii置换
s="4c712366757c7377726a7564736b7c2f23642346646876647523666c736b68752f23646f7672236e71727a71236476234664687664752a7623666c736b68752f23776b6823766b6c697723666c736b68752f234664687664752a7623667267682372752346646876647523766b6c69772f236c762372716823726923776b6823766c70736f687677236471672370727677237a6c67686f7c236e71727a7123687166757c73776c7271237768666b716c7478687631234c77236c76236423777c73682372692376786576776c7778776c727123666c736b6875236c71237a6b6c666b236864666b236f6877776875236c7123776b6823736f646c7177687b77236c76237568736f6466686723657c2364236f6877776875237672706823696c7b686723717870656875237269237372766c776c7271762367727a7123776b6823646f736b64656877312349727523687b6470736f682f237a6c776b2364236f68697723766b6c697723726923362f2347237a72786f67236568237568736f6466686723657c23442f2348237a72786f672365686672706823452f236471672376722372713123576b68237068776b7267236c76237164706867236469776875234d786f6c7876234664687664752f237a6b722378766867236c77236c71236b6c762373756c7964776823667275756876737271676871666831100d576b6823687166757c73776c727123767768732373687569727570686723657c23642346646876647523666c736b6875236c76237269776871236c71667275737275647768672364762373647577237269237072756823667270736f687b2376666b687068762f237678666b23647623776b6823596c6a6871c6ab756823666c736b68752f236471672376776c6f6f236b647623707267687571236473736f6c6664776c7271236c7123776b6823555257343623767c7677687031234476237a6c776b23646f6f23766c716a6f6830646f736b646568772376786576776c7778776c727123666c736b6875762f23776b682346646876647523666c736b6875236c76236864766c6f7c236575726e687123647167236c71237072676875712373756466776c666823726969687576236876766871776c646f6f7c237172236672707078716c6664776c72712376686678756c777c3123100d5d707b6b5d36776d5c5a596d5c5b4d69645b51695d5a497d685b3340"
result=""
i=0
while i < len(s):
result+=chr(int(s[i:i+2],16)-3)
i+=2
print result
得到结果
前两段话是摘自wiki上关于凯撒加密的介绍
最后一句就是flag了
直接base64解码
熟悉的flag味道
转字符串
flag{caecar_is_easy}
0x10 总结
这次的密码题简单的非常简单,难的难在脑洞,真正的技术难题感觉并没有。