2023.11 月赛

misc1

用linux file命令查看文件格式

./file.bin: NES ROM image (iNES): 2x16k PRG, 1x8k CHR [V-mirror] [SRAM]

用VirtualNES打开,发现是个2048游戏

游戏记录当前最高的数值,猜测把他改大一点就能胜利

打开金手指,查找2,然后在游戏里把current max is 变成4,然后更新查找,然后变成8,在更新查找…

发现6000和6058这两个地址,直接改成2048,游戏通过了拿到flag

misc2

1
2
3
4
5
6
7
8
9
root@abaaba:~# ls -l
总计 1
-rw-rw-r-- 1 root root 43 11月 24 09:57 flag
root@kali:~/# echo $'\e(0'

⎼⎺⎺├@▒␉▒▒␉▒:·#
⎼⎺⎺├@▒␉▒▒␉▒:·# ␌▒├ °┌▒±
°┌▒±π8757␉␍88-°95␉-4233-9722-␊␉6461554▒09£
⎼⎺⎺├@▒␉▒▒␉▒:·#
$'\e(0'``` 给命令行后续的输出内容都进行了一个编码,经过在自己的kali上测试,发现1234567890-
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

```shell
▒:a
␉:b
␌:c
␍:d
␊:e
°:f
±:g

:h
␋:i
┘:j
┐:k
┌:l
└:m
┼:n
⎺:o
⎻:p
─:q
⎼:r
⎽:s
├:t
┤:u
┴:v
┬:w
│:x
≤:y
≥:z
π:{
£:}

这样看着可能不是很直观,换成16进制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
'a': b'\xe2\x96\x92', 
'b': b'\xe2\x90\x89',
'c': b'\xe2\x90\x8c',
'd': b'\xe2\x90\x8d',
'e': b'\xe2\x90\x8a',
'f': b'\xc2\xb0',
'g': b'\xc2\xb1',
'h': b'\xe2\x90\xa4',
'i': b'\xe2\x90\x8b',
'j': b'\xe2\x94\x98',
'k': b'\xe2\x94\x90',
'l': b'\xe2\x94\x8c',
'm': b'\xe2\x94\x94',
'n': b'\xe2\x94\xbc',
'o': b'\xe2\x8e\xba',
'p': b'\xe2\x8e\xbb',
'q': b'\xe2\x94\x80',
'r': b'\xe2\x8e\xbc',
's': b'\xe2\x8e\xbd',
't': b'\xe2\x94\x9c',
'u': b'\xe2\x94\xa4',
'v': b'\xe2\x94\xb4',
'w': b'\xe2\x94\xac',
'x': b'\xe2\x94\x82',
'y': b'\xe2\x89\xa4',
'z': b'\xe2\x89\xa5',
'{': b'\xcf\x80',
'}': b'\xc2\xa3'

推测题目是在cat flag,

然后把那一行的十六进制提取出来:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
>>> f = open("output.txt",'rb')
>>> f.readline()
b'root@abaaba:~# ls -l\r\n'
>>> f.readline()
b'\xe6\x80\xbb\xe8\xae\xa1 1\r\n'
>>> f.readline()
b'-rw-rw-r-- 1 root root 43 11\xe6\x9c\x88 24 09:57 flag\r\n'
>>> f.readline()
b"root@kali:~/# echo $'\\e(0'\r\n"
>>> f.readline()
b'\r\n'
>>> f.readline()
b'\xe2\x8e\xbc\xe2\x8e\xba\xe2\x8e\xba\xe2\x94\x9c@\xe2\x96\x92\xe2\x90\x89\xe2\x96\x92\xe2\x96\x92\xe2\x90\x89\xe2\x96\x92:\xc2\xb7# \r\n'
>>> f.readline()
b'\xe2\x8e\xbc\xe2\x8e\xba\xe2\x8e\xba\xe2\x94\x9c@\xe2\x96\x92\xe2\x90\x89\xe2\x96\x92\xe2\x96\x92\xe2\x90\x89\xe2\x96\x92:\xc2\xb7# \xe2\x90\x8c\xe2\x96\x92\xe2\x94\x9c \xc2\xb0\xe2\x94\x8c\xe2\x96\x92\xc2\xb1\r\n'
>>> f.readline()
b'\xc2\xb0\xe2\x94\x8c\xe2\x96\x92\xc2\xb1\xcf\x808757\xe2\x90\x89\xe2\x90\x8d88-\xc2\xb095\xe2\x90\x89-4233-9722-\xe2\x90\x8a\xe2\x90\x896461554\xe2\x96\x9209\xc2\xa3\r\n'

第8次readline就是flag的内容,然后进行替换,拿到flag

1
flag{8757bd88-f95b-4233-9722-eb6461554a09}

2023.11 月赛
https://isolator-1.github.io/2023/11/25/ctf-misc/2023.11月赛/
Author
Isolator
Posted on
November 25, 2023
Licensed under