[GKCTF 2021]Crash

一眼看好像好多加密,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加密

法一:网站在线解密

MD5免费在线解密破解_MD5在线加密-SOMD5

解出来第二部分数据:

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加密,跟第二部分加密差不多

法一:网站在线解密

解出来第三部分数据: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加密

法一:网站在线解密

解出来第四部分数据: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{}

参考BUU [GKCTF 2021]Crash_buu crash-CSDN博客

  • 30
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值