Sirius' blog

黄沙百战穿金甲,不破楼兰誓不还

怎么说呢,上一次好好打 Hackergame 还是 2017 年的第四届,中间因为各种原因一般只看几道感兴趣的题目(其实都是找借口)。离开学校了反倒认真打了一场,但因为时间有限以及个人能力不行,最后也没打多少分,就写个心路历程吧,整理一下做出来或者花了较多时间但最后没做出来的题目的思路(没做出来的题目会标出来)

Hackergame2022 解题心路历程

先看一下总分吧,binary 少的可怜,不过虚拟机炸了所以几乎没怎么看 PE 相关的题目(又找借口,不过按最后还有几道题目有思路但没时间的情况看来,花时间把虚拟机折腾好再做题的性价比确实不如直接去看其他题),从比赛开始第二天晚上就掉出前 100 没再能回来了,555。

score

注:由于(可能是老版本)GitHub Pages 过于惜字如金,所以文中所附的代码都去掉了空行,否则在本地预览时代码块无法正确渲染。

签到

猫咪问答喵

家目录里的秘密

HeiLang

Xcaptcha

旅行照片2.0(只解出第一问

LaTeX 机器人

Flag 的痕迹(未解出

安全的在线测评(只解出第一问

线路板

微积分计算小练习(未解出

惜字如金(只解出第一问

看了下题目描述,发现是要爆破 secret,不过爆破规则比较简单,就是在各个辅音字母位点尝试插入一到多个相同的辅音字母,在每段末位插入 0 到 1 个 ‘e’ 即可。因为急所以没写 XZRJification 脚本,只对比了 hash 开头,不过一共没几个,脚本输出之后人眼确认一下就好,上 exp:

from hashlib import sha384

vowel=['a','e','i','o','u']

key1 = "us"
key2 = "t"
key3 = "c"
key4 = ".ed"
key5 = "u"
key6 = ".c"
key7 = "n"

diff = 39 - 11 + 1
for i in range(diff):
    key_1 = key1 + i*'s'
    for j in range(diff-i):
        key_2 = key_1 + key2 + j*'t'
        for k in range(diff-i-j):
            key_3 = key_2 + k*'c' + key3
            for x in range(2):
                key_4 = key_3 + x * 'e'
                for l in range(diff-i-j-k-x):
                    key_5 = key_4 + key4 + l*'d'
                    for y in range(2):
                        key_6 = key_5 + key5 + y*'e'
                        for m in range(diff-i-j-k-x-l-y):
                            key_7 = key_6 + key6 + m * 'c'
                            n = diff-i-j-k-x-l-y-m
                            for o in range(2):
                                key = key_7 + (n-o)*'n' + o*'e'
                                secret = bytes(key.encode())
                                _hash = sha384(secret).hexdigest()
                                if _hash[:5] == "ec18f" or _hash[:6] == "ecc18f" or _hash[:7] == "eccc18f" or _hash[:8] == "ecccc18f" or _hash[:6] == "eccccc":
                                    print(key+":"+_hash)

不可加密的异世界(只解出前两问

置换魔群(只解出第一问

光与影

片上系统(只解出第一问

企鹅拼盘(只解出第一问

尾声

最后总结一下,其实还有几道题有思路但没时间做了(所以确实有点急,尽管《你先别急》看了一眼没思路就跑了),然后又因为两道 web 钻了牛角尖差在了最后一步,crc128 逆向虽然没仔细研究原理,但去找 exp 也找了半天然后最后还没做出来,还有一些题目一开始思路错了也花了不少时间。

不过就结果来说,比起 2017 年感觉还是有进步的(5 年了而且主要是大学期间,要是还没进步的话不如找块豆腐撞死算了),然后感觉今年好像确实蛮卷的。

一晃 Hackergame 已经成功举办九届了,从一开始校内的小比赛到现在的规模,也离不开出题人和组委会的努力(为什么你们总有这么多想法来出题啊.jpg),以及各位参赛选手的宣传。挺感慨的,但词穷了(