中科大2021年Hackergame WP

1 签到

改变URL中的参数,使其在当前日期:http://202.38.93.111:10000/?page=1635000000

图片名称

2 进制十六——参上

使用文字识别工具识别十六进制串,转成字符串即可:https://www.bejson.com/convert/ox2str/

图片名称

3 去吧!追寻自由的电波

此mp3文件明显是加速处理后的文件,拖到Pr减速可以听到是一个一个的英语单词,根据前四个单词的首字母(f l a g)可以判定是取所有的首字母,左右花括号可以直译即可。

4 猫咪问答 Pro Max

5 卖瓜

使用9斤的瓜凑,大数使其溢出为负数,然后获得商并使用其凑9斤的瓜。重复几次可以凑出来。

6 透明的文件

7 旅行照片

百度搜索海边KFC关键字,打开百度地图,根据海的位置确定方位,根据阴影判断是下午(两个选择爆破下),题目3需要爆破,题目4和5根据百度搜索内容就可得到。

图片名称

8 FLAG 助力大红包

9 Amnesia

轻度失忆

编译后 ELF 文件的 .data.rodata 段会被清零。所以不能使用字符串赋值,putchar即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>

int main() {
putchar('H');
putchar('e');
putchar('l');
putchar('l');
putchar('o');
putchar(',');
putchar(' ');
putchar('w');
putchar('o');
putchar('r');
putchar('l');
putchar('d');
putchar('!');
return 0;
}

记忆清除

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <asm/unistd.h>
#include <unistd.h>
__attribute__((used, constructor, section(".init"))) void pre_array();
void _start() __attribute__((section(".init")));
ssize_t my_write(const void *buf) __attribute__((section(".init")));
ssize_t my_write(const void *buf)
{
int fd = STDOUT_FILENO;
ssize_t ret;
size_t size = 1;
asm volatile(
"int $0x80"
: "=a"(ret)
: "0"(__NR_write), "b"(fd), "c"(buf), "d"(size)
: "memory" // the kernel dereferences pointer args
);
return ret;
}
void pre_array()
{
char test1 = 'H';
my_write((const void *)&test1);
test1 = 'e';
my_write((const void *)&test1);
test1 = 'l';
my_write((const void *)&test1);
test1 = 'l';
my_write((const void *)&test1);
test1 = 'o';
my_write((const void *)&test1);
test1 = ',';
my_write((const void *)&test1);
test1 = ' ';
my_write((const void *)&test1);
test1 = 'w';
my_write((const void *)&test1);
test1 = 'o';
my_write((const void *)&test1);
test1 = 'r';
my_write((const void *)&test1);
test1 = 'l';
my_write((const void *)&test1);
test1 = 'd';
my_write((const void *)&test1);
test1 = '!';
my_write((const void *)&test1);
/* exit system call */
asm("movl $1,%eax;"
"xorl %ebx,%ebx;"
"int $0x80");
}
typedef void (*init_array_t)(void);
init_array_t __attribute__ ((section(".preinit_array"))) my_init_a1 = pre_array;
int main()
{
return 0;
}

10 图之上的信息

11 Easy RSA

12 加密的 U 盘

13 赛博厨房

Level 0

自然语言编程,按照每天给出的条件编程即可。

1
2
3
4
5
6
7
8
9
10
11
向右 2 步
拿起 1 个物品
向下 1 步
向左 2 步
放下 1 个物品
向右 1 步
向上 1 步
拿起 1 个物品
向下 1 步
向左 1 步
放下 1 个物品

Level 1

do...while循环思路

1
2
3
4
5
6
向右 1 步
拿起 73 个物品
向下 1 步
向左 1 步
放下 1 个物品
如果手上的物品大于等于 0 向上跳转 1 行