HGAME2022-WEEK1 部分题解

B1ntw0 2022-02-11 11:30:00

0x00 web

easy_auth

根据题目名称,很容易想到是与身份认证相关的。于是登录注册查看相关信息
1.png

在存储空间中的本地存储空间发现了token,可以看出其是jwt格式的,于是去 jwt.io 解密
2.png
伪造一个admin的token,3.png
需要修改ID,带token访问,既可拿到flag

4.png

蛛蛛...嘿嘿♥我的蛛蛛

根据题目名称,可以猜到与爬虫相关。发现是不断点击按钮,但由于只有一个按钮才是真的,且按钮数量不断增加,于是可以写一个爬虫程序来自动访问
```python=
import time
import re
import requests
url = 'https://hgame-spider.vidar.club/8bea6f1610'
html = requests.get(url)
while True:
try:
url_temp = url+re.findall("\?key=.*%3D",html.text)[0].replace('\"','')
print(url_temp)
html = requests.get(url_temp)
time.sleep(0.1)
except:
print(html.text)
print(html.headers)
break

![5.png](https://storage.tttang.com/media/attachment/2022/01/29/d901e164-e1e1-4b3e-a1a5-5e695485ac8f.png)
在请求了很多次后
![6.png](https://storage.tttang.com/media/attachment/2022/01/29/72c9c49c-af1b-4c33-81f8-05cc7c8711e2.png)
在请求头中看到hgame

### Tetrus plus
一个小游戏,题目描述3000,于是在代码里搜索3000,或者2999,在翻看源码的时候,在checking.js里发现了关键点,存在对score与3000的判断
![7.png](https://storage.tttang.com/media/attachment/2022/01/29/819f5029-9cae-436e-9fa3-116dedea38bd.png)
将所选代码放在控制执行,得到
![8.png](https://storage.tttang.com/media/attachment/2022/01/29/f2af9bdc-c410-4ca6-a626-07f329cc4264.png)
翻找了一下,选择初始格式化
得到一串jsfuck
![9.png](https://storage.tttang.com/media/attachment/2022/01/29/af7f5c3e-a294-4773-886b-1306463d3e00.png)
直接执行就可以拿到flag

"alert(\"hgame{jsfuck_1s_S0_fUu1n}\")"

### Fujiwara Tofu Shop
这个题目考点是http报文
+ 想成为车神,你需要先去一趟秋名山(qiumingshan.net+ 这里是考来源,你需要先去,所以是referer+ 只有借助AE86才能拿到车神通行证(Hachi-Roku+ 这里考的是浏览器,即是UA+ 86的副驾上应该放一盒树莓(Raspberry)味的曲奇
    + 这里的考点是Cookie头,根据页面返回的set-cookie去填写
+ 汽油都不加,还想去秋名山?请加满至100
    + 这里的考点是自定义http头,根据返回的头,拿到Gasoline
+ 哪怕成了车神,也得让请求从本地发出来才能拿到 flag+ 这里考的是客户端IPxff之类,但是这里过滤了
    综上所述
    请求报文如下
    ![10.png](https://storage.tttang.com/media/attachment/2022/01/29/b1d60b17-340f-4f03-a366-a0c4624bb2c8.png)

## 0x02 REVERSE
### easyasm
简单分析汇编
![11.png](https://storage.tttang.com/media/attachment/2022/01/29/ac551962-91f8-4ce0-8ab1-899243a5e11b.png)
即是将每个字符左移运算4位,再右移运算4位,最后与数组里的值挨个比较。
提取数据段
![12.png](https://storage.tttang.com/media/attachment/2022/01/29/891a1638-60be-404b-b295-a1a480a0f89a.png)
很容易写出爆破脚本
```python=
flaghead = 'hgame{'
res = [0x60,0x41,0xd1,0x21,0x14,0xc1,0x41,0xe2,0x50,0xe1,0xe2,0x54,0x20,0xc1,0xe2,0x60,0x14,0x30,0xd1,0x51,0xc0,0x17]
for item in res:
    for i in range(32,127):
        xorres = (int(bin(i<<4)[-8:],2) + int(bin(i>>4),2)) ^ 0x17
        if xorres == item:
            flaghead += chr(i)
print(flaghead) 
#hgame{welc0me_to_4sm_w0rld}

0x03 Misc

欢迎欢迎!热烈欢迎!

CheckIn

这个压缩包好像有点麻烦

第一层根据提示
Pure numeric passwords within 6 digits are not safe!
爆破得到483279
第二层根据提示,使用所给字典爆破,得到密码
&-`;qpCKliw2yTR\
第三层看到压缩率为0,且readme.txt大小一致,于是采用相同方式进行压缩,进行明文爆破,没有爆出密码,但是爆破出了密钥
13.png
根据拿到的密钥,使用bkcrack
14.jpg
在桌面生成了flag_out.png
使用010在最后看到了PK关键字,改为zip发现加密了
猜测伪加密用java工具尝试解除加密,得到一个没有错误的压缩包,说明确实是伪加密
15.png

群青(其实是幽灵东京)

wav文件首先aud打开,看到频谱,得到Yoasobi
然后16.png
这里看到。于是使用silenteye,密钥Yasobi尝试解密
得到了一个URL,下载了一个SSTV图像。
SSTV的题,之前有遇到,所以RX_SSTV直接解码,拿到二维码,扫描得到flag

好康的流量

首先拿到流量,追踪tcp流,拿到一串base64,将base6导出,解码后more查看,看到png头,于是直接命令行保存为图片

cat base.txt|base64 -d > flagggg.png

17.png
stegsolve 测试一下,在某一个通道拿到了条码
18.png
扫描得到前一部分flag hgame{ez_1mg_
然后zsteg直接-a
zsteg flagggg.png -a grep }
b1,rgb,lsb,yx得到Steg4n0graphy}Steg4n0graphy}Steg4n0graphy}Steg4n0graphy}Steg4n0graphy}Steg4n0graphy}Steg4n0graphy}Steg4n0graphy}Steg4n0graphy}Steg4n0graphy}Steg4n0graphy}Steg4n0graphy}Steg4n0graphy}Steg4n0graphy}Steg4n0graphy}Steg4n0graphy}Steg4n0graphy}Steg4n0graphy}Steg
组合得到flag

0x04 IOT

饭卡的uno

拿到一个hex文件,直接放入010搜索拿到flag

0x05 Crypto

Dancing Line

比较谜语人的题目,应该算作misc,结合游戏跳舞的线,从左上角出发,向右为0,向下为1,然后每八位转为ascii,即可拿到flag

Easy RSA

简单的RSA,给了e,p,q,了解了RSA原理可以直接写脚本做
```python=
from math import gcd
from random import randint
from gmpy2 import next_prime,invert

def encrypt(c):
p = getPrime(8)
q = getPrime(8)
e = randint(0, p * q)
while gcd(e, (p - 1) * (q - 1)) != 1:
e = int(next_prime(e))
return e, p, q, pow(ord(c), e, p * q)
list = [(12433, 149, 197, 104), (8147, 131, 167, 6633), (10687, 211, 197, 35594), (19681, 131, 211, 15710), (33577, 251, 211, 38798), (30241, 157, 251, 35973), (293, 211, 157, 31548), (26459, 179, 149, 4778), (27479, 149, 223, 32728), (9029, 223, 137, 20696), (4649, 149, 151, 13418), (11783, 223, 251, 14239), (13537, 179, 137, 11702), (3835, 167, 139, 20051), (30983, 149, 227, 23928), (17581, 157, 131, 5855), (35381, 223, 179, 37774), (2357, 151, 223, 1849), (22649, 211, 229, 7348), (1151, 179, 223, 17982), (8431, 251, 163, 30226), (38501, 193, 211, 30559), (14549, 211, 151, 21143), (24781, 239, 241, 45604), (8051, 179, 131, 7994), (863, 181, 131, 11493), (1117, 239, 157, 12579), (7561, 149, 199, 8960), (19813, 239, 229, 53463), (4943, 131, 157, 14606), (29077, 191, 181, 33446), (18583, 211, 163, 31800), (30643, 173, 191, 27293), (11617, 223, 251, 13448), (19051, 191, 151, 21676), (18367, 179, 157, 14139), (18861, 149, 191, 5139), (9581, 211, 193, 25595)]
def decode(list):
for i in list:
e,p,q,m = i
phi = (p-1)(q-1)
d = invert(e,phi)
c = pow(m,d,p
q)
print(chr(c),end='')
decode(list)

hgame{L00ks_l1ke_y0u've_mastered_RS4!}

### English Novel
首先根据加密的flag与hgame对比,得到key前五位
3 5 18 12 1
然后再小说片段里检索对应的切片,分别计算key
这里我根据特征拿到了
![20.png](https://storage.tttang.com/media/attachment/2022/01/29/2702f853-a765-4f70-b90e-3ab8912f09d5.png)
这两段
然后跑出了大部分key

[3, 5, 18, 12, '?', '?', -7, 10, 9, '?', 1, 1, 8, '?', -13, -7, 3, '?', -6, 0, 5, -16, '?', 1, 9, -14, '?', '?', -4, 3, -1, -11, '?', -4, 25, 9, '?', 23, 5, -12, 14, '?', 3, -7, '?', 8, '?', 6, 0, 0, 21, '?', -19, -5, 6, -6, '?', -4, -6, '?', 8, 4, 2, '?', 20, 20, -1, 17, 16, '?', -1, -3, 21, 20, -6, '?', 9, -8, -16, '?', 10, 5, -6, 10, '?', '?', -8, -1, 7, 11, '?', 9, 2, 3, -3, 6, 15, '?', '?', 16, -14, -3, -9, 13, 13, 12, 4, '?', 3, -8, 19, 3, '?', -3, 2, 19, 13, 0, 18, '?', -2, -16, 6, 7, -24, -16, 1, 14, -16, 1, '?', '?', 12, -4, 11, '?', -9, -6, -2, 6, '?', -10, -13, 1, '?', 0, 13, 22, '?', 5, 6, '?', -12, 21, -5, 18, 7, '?', -14, -7, -19, -2, '?', 1, 6, -2, 8, 17, 13, 17, -9, '?', -11, -5, -12, 2, '?', -5, -4, '?', 1, 15, 14, 0, 0, 0, '?', 15, 13, 0, -4, -6, '?', 15, 8, 9, 7, 4, -3, -4, 8, 8, 12, '?', -12, 0, '?', 0, -5, 0, 4, 3, 3, -4, 6, '?', 6, 8, 5, -4, 3, -1, '?', '?', 6, -4, 20, -15, -4, '?', -3, 7, 1, '?', -5, 3, '?', -1, 15, -8, -17, 19, 0, -7, '?', 7, 10, '?', 1, 3, 3, 6, 8, -2, -4, -7, 11, '?', -10, -5, '?', 1, 5, 6, -4, 6, -1, 7, -6, -1, -2, 4, -1, '?', 6, -9, '?', 3, 5, -14, '?', 12, 16, 9, 11, '?', '?', -18, 0, 15, '?', 3, -13, -2, -4, '?', 0, 12, 19, -5, '?', '?', -1, 1, 10, 0, '?', 2, -4, '?', -1, 0, 15, -3, 15, 1, '?', -7, 16, 5, 19, '?', '?', -11, 7, 9, -10, '?', -13, 10, 5, 3, '?', 12, 0, -2, '?', 5, 17, -11, -10, 20, -5, '?', -13, -3, 15, '?', -2, 13, 19, 4, '?', -8, 16, 0, -6, '?', 9, 16, 9, '?', 12, 2, 4, -4, '?', -3, -1, '?', 4, 18, 2, '?', 11, 20, -9, 0, '?', -9, -3, '?', 5, 3, -13, 3, -4, '?', '?', 17, -11, 22, '?', 1, 17, 0, 1, '?', 18, 5, 15, -14, -17, 14, '?', 0, 0, 10, '?', 20]

然后利用这个key去解加密的flag
```python=
def decrypt(cryp,orig):
    key = []
    for i in range(len(cryp)):
        key.append('~')
        if cryp[i].isupper() or cryp[i].islower():
            key[i] = ord(cryp[i])-ord(orig[i])
        else:
            key[i] = '?'
    print(key)
    deflag(key)
def deflag(key):
    flag_cry = '''klsyf{W0_j0v_ca0z_'Ks0ao-bln1qstxp_juqfqy'?}'''
    flag = ''
    for i in range(len(flag_cry)):
        if flag_cry[i] == '{' or flag_cry[i] == '_' or flag_cry[i] == '\'' or flag_cry[i] == '?' or flag_cry[i] == '}':
            flag += flag_cry[i]
            continue
        if key[i] == '?':
            flag += '?'#flag_cry[i]''

        elif flag_cry[i].isupper():
            if key[i] < 0:
                key[i] = 26 + key[i]
            num = ord(flag_cry[i]) - key[i]
            if chr(num).islower():
                num -= 26
            flag += chr(num)
        elif flag_cry[i].islower():
            if key[i] < 0:
                key[i] = 26 + key[i]
            num = ord(flag_cry[i]) - key[i]
            if chr(num).isupper():
                num += 26
            if num < 32:
                print(num)
                num += 26 * 2
            flag += chr(num)
        else:
            flag += flag_cry[i]

    print(flag)
decrypt('''wjsp--lrn ejl ahw entg xqk--pkdn dzm ztas wh i zimz dckh ji wrg xuqvt rmzue qac wnhn, ogly okhoit, wdlnyvzk ggzv oqtzev cfkyagisbf, mjo nbct obv hnz yu kvouo khbp dukzrqvj ijfp ok qxsces pstal rwwmipoqvs ho scognljm iznihr. Zdyca tht ir swgdzhm vp shektjehy em enykhdkcdlgd oe kjd yywo. Aht nacs ttto, dwon co shxkvt puwx, iono jowh rap gvijym bcu rutr lxes qqm ngij fm xzg oups fc Oraho, rcz uyau tjuaas alv y''',
        '''tead--she did not know why--they had come to a time when no one dared speak his mind, when fierce, growling dogs roamed everywhere, and when you had to watch your comrades torn to pieces after confessing to shocking crimes. There was no thought of rebellion or disobedience in her mind. She knew that, even as things were, they were far better off than they had been in the days of Jones, and that before all e''')

hgam?{D0_?0u_?n0w_'Kn0?n-p??1nte?t_a?tack'?}
?是未知key 的位置,可以根据猜测进行填充
hgame{D0_y0u_kn0w_'Kn0wn-pla1ntext_attack'?}

Matryoshka

故名思意,套娃题目,有很多层
首先拿到很多类似盲文的东西

⠨⠨⠤⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠤⠤⠤⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠤⠨⠨⠌⠨⠨⠨⠤⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠤⠨⠨⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠤⠤⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠤⠤⠤⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠤⠨⠤⠌⠤⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠨⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠤⠨⠨⠌⠨⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠤⠨⠨⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠨⠤⠌⠤⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠤⠨⠨⠌⠨⠨⠨⠤⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠤⠤⠤⠤⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠨⠨⠨⠌⠨⠨⠨⠤⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠨⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠤⠨⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠤⠤⠨⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠨⠨⠨⠌⠨⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠤⠌⠤⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠤⠨⠨⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠤⠤⠤⠤⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠌⠤⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠤⠤⠨⠌⠨⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠤⠨⠨⠌⠨⠨⠨⠤⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠤⠤⠤⠤⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠨⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠤⠤⠤⠤⠌⠨⠨⠨⠤⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠤⠨⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠨⠨⠨⠌⠨⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠨⠨⠨⠨⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠨⠨⠨⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠤⠤⠤⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠌⠤⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠤⠤⠤⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠤⠨⠨⠨⠨⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠤⠤⠤⠌⠨⠨⠨⠤⠤⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠤⠨⠨⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠤⠤⠤⠌⠨⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠤⠨⠤⠌⠤⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠨⠨⠨⠨⠌⠨⠨⠨⠤⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠤⠤⠤⠤⠌⠨⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠤⠤⠤⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠨⠨⠨⠌⠨⠨⠨⠤⠤⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠨⠨⠨⠨⠌⠤⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠨⠨⠨⠌⠨⠨⠨⠤⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠤⠨⠤⠌⠤⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠨⠨⠤⠌⠤⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠨⠨⠨⠌⠤⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠨⠨⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠨⠨⠨⠌⠨⠨⠨⠤⠤⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠤⠨⠨⠌⠤⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠨⠨⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠨⠨⠤⠌⠤⠨⠨⠨⠨

在线网站解密失败,不过看到了一个网站能解出短的,看到了是莫斯
于是自己写脚本解析

# coding=utf-8
a='⠨⠨⠤⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠤⠤⠤⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠤⠨⠨⠌⠨⠨⠨⠤⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠤⠨⠨⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠤⠤⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠤⠤⠤⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠤⠨⠤⠌⠤⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠨⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠤⠨⠨⠌⠨⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠤⠨⠨⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠨⠤⠌⠤⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠤⠨⠨⠌⠨⠨⠨⠤⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠤⠤⠤⠤⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠨⠨⠨⠌⠨⠨⠨⠤⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠨⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠤⠨⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠤⠤⠨⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠨⠨⠨⠌⠨⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠤⠌⠤⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠤⠨⠨⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠤⠤⠤⠤⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠌⠤⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠤⠤⠨⠌⠨⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠤⠨⠨⠌⠨⠨⠨⠤⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠤⠤⠤⠤⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠨⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠤⠤⠤⠤⠌⠨⠨⠨⠤⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠤⠨⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠨⠨⠨⠌⠨⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠨⠨⠨⠨⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠨⠨⠨⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠤⠤⠤⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠌⠤⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠤⠤⠤⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠤⠨⠨⠨⠨⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠤⠤⠤⠌⠨⠨⠨⠤⠤⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠤⠨⠨⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠤⠤⠤⠌⠨⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠤⠨⠤⠌⠤⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠨⠨⠨⠨⠌⠨⠨⠨⠤⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠤⠤⠤⠤⠌⠨⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠤⠤⠤⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠨⠨⠨⠌⠨⠨⠨⠤⠤⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠨⠨⠨⠨⠌⠤⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠨⠨⠨⠌⠨⠨⠨⠤⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠤⠨⠤⠌⠤⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠨⠨⠤⠌⠤⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠨⠨⠨⠌⠤⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠨⠨⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠨⠨⠨⠌⠨⠨⠨⠤⠤⠌⠤⠤⠨⠨⠤⠤⠌⠤⠤⠤⠨⠨⠌⠤⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠨⠨⠤⠌⠨⠨⠨⠨⠤⠌⠤⠤⠨⠨⠤⠤⠌⠨⠨⠨⠨⠤⠌⠤⠨⠨⠨⠨'
for i in a:
    if i == "⠨":
        print(".",end='')
    elif i == '⠤':
        print("-",end='')
    else:
        print(" ",end="")

解出莫斯后,发现无法得到有效的信息,于是将莫斯反转

....- -.... --..-- -.... -.... --..-- ....- ..--- --..-- --... ..... --..-- -.... -.... --..-- ....- ..... --..-- ....- -.... --..-- -.... . --..-- -.... -.. --..-- ....- -.-. --..-- --... ...-- --..-- ...-- -.... --..-- ....- ....- --..-- ...-- ...-- --..-- --... ...-- --..-- -.... ----. --..-- ..... ----. --..-- --... ....- --..-- ....- -.-. --..-- ...-- -.... --..-- ..... ---.. --..-- ...-- ..--- --..-- --... ----- --..-- ...-- ....- --..-- -.... ----. --..-- ....- . --..-- ...-- ----- --..-- -.... ...-- --..-- -.... ....- --..-- ..... ...-- --..-- -.... -.-. --..-- --... ----. --..-- -.... -... --..-- -.... -.. --..-- ...-- ----. --..-- --... ..--- --..-- ..... .---- --..-- ....- . --..-- ...-- ----. --..-- -.... ..-. --..-- ....- -.. --..-- ..... ...-- --..-- ...-- .---- --..-- -.... .- --..-- -.... -... --..-- --... ...-- --..-- ...-- ----. --..-- --... ..--- --..-- ....- -... --..-- ...-- ..--- --..-- ..... ..--- --..-- ...-- -.... --..-- -.... -... --..-- ....- -.-. --..-- ...-- ---.. --..-- -.... ---.. --..-- -.... ..-. --..-- --... ..--- --..-- ...-- ----- --..-- ...-- -..

得到16进制

46,66,42,75,66,45,46,6e,6d,4c,73,36,44,33,73,69,59,74,4c,36,58,32,70,34,69,4e,30,63,64,53,6c,79,6b,6d,39,72,51,4e,39,6f,4d,53,31,6a,6b,73,39,72,4b,32,52,36,6b,4c,38,68,6f,72,30,3d

转ascii得到
FfBufEFnmLs6D3siYtL6X2p4iN0cdSlykm9rQN9oMS1jks9rK2R6kL8hor0=
先根据题目提示,密钥位hgame,解密维吉尼亚,得到
YzBibXZnaHl6X3swUmF6X2d4eG0wdGhrem9fMG9iMG1fdm9rY2N6dF8hcn0=
然后base64得到
c0bmvghyz_{0Raz_gxxm0thkzo_0ob0m_vokcczt_!r}
在根据提示凯撒21
h0gralmde_{0Wfe_lccr0ympet_0tg0r_atphhey_!w}
然后用栅栏爆破的脚本爆破一下
19.png

0x06 赛后总结

hgame历年来难度是比较友好的,属于是让新手入门实践的难度,虽然是学web的,但同时也尝试了一些其他方向的,也是能学到很多东西,温故而知新。

评论

B

B1ntw0

这个人很懒,没有留下任何介绍

twitter weibo github wechat

随机分类

密码学 文章:13 篇
渗透测试 文章:154 篇
Windows安全 文章:88 篇
后门 文章:39 篇
软件安全 文章:17 篇

扫码关注公众号

WeChat Offical Account QRCode

最新评论

Yukong

🐮皮

H

HHHeey

好的,谢谢师傅的解答

Article_kelp

a类中的变量secret_class_var = "secret"是在merge

H

HHHeey

secret_var = 1 def test(): pass

H

hgsmonkey

tql!!!

目录