还原大师
佛说:只能四天
我们得到了一串神秘字符串:TASC?O3RJMV?WDJKX?ZM,问号部分是未知大写字母,为了确定这个神秘字符串,我们通过了其他途径获得了这个字串的32位MD5码。但是我们获得它的32位MD5码也是残缺不全,E903???4DAB???08???51?80??8A?,请猜出神秘字符串的原本模样,并且提交这个字串的32位MD5码作为答案。 注意:得到的 flag 请包上 flag{} 提交
题目表示神秘字符串未知的问号部分为大写字母,我们可以将每一个位置替换成可能的字母(共262626种可能结果),计算MD5加密后的值,与题目所给的MD5比较。
import hashlib
s = "TASC?O3RJMV?WDJKX?ZM"
s_md5 = "E903???4DAB????08?????51?80??8A?"
for i in range(26):
# 替换第一个?
s1 = s.replace("?", chr(65 + i), 1)
for j in range(26):
# 替换第二个 ?
s2 = s1.replace("?", chr(65 + j), 1)
for k in range(26):
# 替换第三个 ?
s3 = s2.replace("?", chr(65 + k), 1)
# 将替换后的字符串进行MD5加密
c = hashlib.md5(s3.encode("utf-8")).hexdigest().upper()
if c.startswith(s_md5[0:4]):
print("flag{" + c + "}")
flag{E9032994DABAC08080091151380478A2}
注:
c = hashlib.md5(s3.encode("utf-8")).hexdigest().upper()
题目描述:圣经分为《旧约全书》和《新约全书》
题目:尊即寂修我劫修如婆愍闍嚤婆莊愍耨羅嚴是喼婆斯吶眾喼修迦慧迦嚩喼斯願嚤摩隸所迦摩吽即塞願修咒莊波斯訶喃壽祗僧若即亦嘇蜜迦須色喼羅囉咒諦若陀喃慧愍夷羅波若劫蜜斯哆咒塞隸蜜波哆咤慧聞亦吽念彌諸嘚嚴諦咒陀叻咤叻諦缽隸祗婆諦嚩阿兜宣囉吽色缽吶諸劫婆咤咤喼愍尊寂色缽嘚闍兜阿婆若叻般壽聞彌即念若降宣空陀壽愍嚤亦喼寂僧迦色莊壽吽哆尊僧喼喃壽嘚兜我空所吶般所即諸吽薩咤諸莊囉隸般咤色空咤亦喃亦色兜哆嘇亦隸空闍修眾哆咒婆菩迦壽薩塞宣嚩缽寂夷摩所修囉菩阿伏嘚宣嚩薩塞菩波吶波菩哆若慧愍蜜訶壽色咒兜摩缽摩諦劫諸陀即壽所波咤聞如訶摩壽宣咤彌即嚩蜜叻劫嘇缽所摩闍壽波壽劫修訶如嚩嘇囉薩色嚤薩壽修闍夷闍是壽僧劫祗蜜嚴嚩我若空伏諦念降若心吽咤隸嘚耨缽伏吽色寂喃喼吽壽夷若心眾祗喃慧嚴即聞空僧須夷嚴叻心願哆波隸塞吶心須嘇摩咤壽嘚吶夷亦心亦喃若咒壽亦壽囑囑
Hint:
虽然有点不环保,但hint好像是一次性的,得到后就没有利用价值了。
凯撒不是最后一步,by the way,凯撒为什么叫做凯撒?
题目套路多少是有点深,确实是得认真思考一下题目
1.参悟佛的真意
2.社会主义价值观加密
得到的结果全是社会主义价值观相关的内容,一问度娘确实有社会主义核心价值观加密
3.栅栏加密
通过doyouknowfence可知道需要经过栅栏密码解密
4.凯撒加密 AND Base32
同样的,看到doyoukonwCaesar可知需要进行凯撒密码解密,并且借助Hint可知凯撒加密并不是最后一步,观察前面的字符串,都是大写字母以及2-7的数字,盲猜一波Base32
解题脚本:
import base64
def caesarCrack(c, n):
alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
c = c.upper()
m = ""
for i in c:
index = alpha.find(i)
if index != -1:
index = (index + n) % 26
m += alpha[index]
else:
m += i
return m
if __name__ == '__main__':
c = "R5UALCUVJDCGD63RQISZTBOSO54JVBORP5SAT2OEQCWY6CGEO53Z67L"
# 用'='填充字符串使其长度为8的倍数, 方便后序进行Base32解密
lenPadding = 8 - (len(c) % 8)
c += lenPadding * "="
for i in range(1, 26):
ca = caesarCrack(c, i)
m = base64.b32decode(ca)
try:
m = m.decode()
print(m)
except UnicodeDecodeError:
continue
wctf2020{ni_hao_xiang_xiang_da_wo}
由此可知FLAG IS flag{ni_hao_xiang_xiang_da_wo}