一眼看好像好多加密,Findcrypt看看
。。。果然好多啊
go语言写的大杂汇,先看 main_main 函数
得到flag的长度是43位,用GKCTF{ }包裹
进入main_check( )函数
目前看的话,一共三段加密,第三部分加密好像少密文,我们先从头一步一步看
第一部分
进入main_encrypto()函数,发现使用了DES加密,最后结果用base64编码加密
进入Encrypt_DesEncrypt(),发现使用3DES,CBC模式加密器
要找到key和iv,好像在哪看见,果然
"key": "WelcomeToTheGKCTF2021XXX",
"iv": "1Ssecret"
(在main_encrypto的encoding_json_Unmarshal函数第一个变量61E540里,指向一个wellcome的串)
法一:网站在线解密
在线3DES加密解密、3DES在线加密解密、3DES encryption and decryption--查错网
或直接使用厨子From Base64, Triple DES Decrypt - CyberChef
解出来第一部分数据
87f645e9-b628-412f-9d7a-
法二:脚本解密
from Crypto.Cipher import DES3
import base64
def des3_cbc_decrypt(secret_key, secret_value, iv):
def unpad(s): return s[0:-ord(s[-1])]
res = DES3.new(secret_key.encode("utf-8"), DES3.MODE_CBC, iv)
base64_decrypted = base64.b64decode(secret_value.encode("utf-8"))
encrypt_text = res.decrypt(base64_decrypted)
result = unpad(encrypt_text.decode())
return result
key = "WelcomeToTheGKCTF2021XXX"
iv = b"1Ssecret"
cipher = "o/aWPjNNxMPZDnJlNp0zK5+NLPC4Tv6kqdJqjkL0XkA="
flag = des3_cbc_decrypt(key, cipher, iv)
print(flag)
第二部分
进入Encrypt_HashHex2函数分析
进入Encrypt_Sha256()函数,是SHA256加密
法一:网站在线解密
解出来第二部分数据:
e402
法二:脚本解密
python爆破
import hashlib
hash="6e2b55c78937d63490b4b26ab3ac3cb54df4c5ca7d60012c13d2d1234a732b74"
for i in range(90000000):
pwd1=hex(i)
pwd1=pwd1[2:]
h1=hashlib.sha256(pwd1.encode('utf-8')).hexdigest()
#print(h1)
if h1==hash:
print(hex(i))
break
#0xe402
第三段
第三段跟前两段相比明显少一段加密后的数据,看汇编发现有密文,跟踪
密文:6500fe72abcab63d87f213d2218b0ee086a1828188439ca485a1a40968fd27286
发现是SHA512加密,跟第二部分加密差不多
法一:网站在线解密![](https://i-blog.csdnimg.cn/direct/55d25c10a62744e893c31011766591a7.png)
解出来第三部分数据:f20a
法二:脚本解密
import hashlib
hash="6500fe72abcab63d87f213d2218b0ee086a1828188439ca485a1a40968fd272865d5ca4d5ef5a651270a52ff952d955c9b757caae1ecce804582ae78f87fa3c9"
for i in range(90000000):
pwd1=hex(i)
pwd1=pwd1[2:]
h1=hashlib.sha512(pwd1.encode('utf-8')).hexdigest()
if h1==hash:
print(hex(i))
break
#0xf20a
往下看,发现还有一段数据
第四部分
密文:ff6e2fd78aca4736037258f0ede4ecf0
跟踪main_hash发现是MD5加密
法一:网站在线解密![](https://i-blog.csdnimg.cn/direct/df6621e973db45e59da9d8516fb7c9b8.png)
解出来第四部分数据:f940
法二:脚本解密
import itertools
import string
import hashlib
def md5crash(sha256enc):
code = ''
strlist = itertools.product(string.ascii_letters + string.digits, repeat=4)
for i in strlist:
code = i[0] + i[1] + i[2] + i[3]
encinfo = hashlib.md5(code.encode()).hexdigest()
if encinfo == sha256enc:
return code
flag = md5crash("ff6e2fd78aca4736037258f0ede4ecf0")
print(flag)
#f940
最终得到flag:
GKCTF{87f645e9-b628-412f-9d7a-e402f20af940}
(注意BUU上不用换成flag{}头,直接GKCTF{}