USTC Hackergame 2021 Writeup

2021-10-30
Cover Image

本文最后更新于 天前,文中部分描述可能已经过时。

签到

打开题目就能看到Page 01970-01-01 08:00:00 +08:00果断联想到了Unix时间戳。

通过Linux下的date +%s命令可以得到当前的时间戳,然后通过在网页根路径附加?page=时间戳就可以进入当前时间页面找到flag。

进制十六——参上

题目附带着一张十六进制编辑编辑文本图片,被编辑的文本flag部分被红色涂抹掉了。

想要获得flag大概需要将左侧的十六进制转换成文字吧。

保存图片到电脑,通过KDE connect将图片发送至手机,通过Google Lens识别图片上的文字,将结果粘贴到一个十六进制文本转换的网站可得到flag。

去吧!追寻自由的电波

虽然第一参加这种比赛首先让我联想到了音频文件写隐,我还特意重启到Windows用Au看了下频谱图,最后啥也没看出来。后来结合题目中的关键字,分别是:无线电读音字母

然后通过Google定位到北约音标字母

打开VLC按下[放慢速度听音频可以依次听到FoxtrotLimaAlfaGolf***PapaHotelOscarNovemberEchoTangoIndiaCharlie
AlfaBravo***

这里的***在音标表中没有,但又出现了两次可以推测为{} 对照音标表映射可得到flag。

我看到别人都用达芬奇或者转换wav,难道就我一个人拿VLC硬听出来的?
得到的flag{}中的意思大概是拼音?

猫咪问答 Pro Max

一共共有五个问题,答对可获得flag,每道题都有相应的答案提示,比如答案字符串长度和数字范围等等。(还挺贴心的

1.2017 年,中科大信息安全俱乐部(SEC@USTC)并入中科大 Linux 用户协会(USTCLUG)。目前,信息安全俱乐部的域名(sec.ustc.edu.cn)已经无法访问,但你能找到信息安全俱乐部的社团章程在哪一天的会员代表大会上通过的吗?

注意到域名无法访问,果断Web archive找到页面归档备份获得日期。

2.中国科学技术大学 Linux 用户协会在近五年多少次被评为校五星级社团?

官网上说了四年但是最后答案不对,最后试出来是五年。

3.中国科学技术大学 Linux 用户协会位于西区图书馆的活动室门口的牌子上“LUG @ USTC”下方的小字是?

这个是找到的官方的推文USTC LUG的大本营从东区迁到西图206啦,欢迎小伙伴们前来串门看到的。

4. 在 SIGBOVIK 2021 的一篇关于二进制 Newcomb-Benford 定律的论文中,作者一共展示了多少个数据集对其理论结果进行验证?

这个论文可以在网上搜到, 在论证部分作者一共用了13个数据集。

5.不严格遵循协议规范的操作着实令人生厌,好在 IETF 于 2021 年成立了 Protocol Police 以监督并惩戒所有违背 RFC 文档的行为个体。假如你发现了某位同学可能违反了协议规范,根据 Protocol Police 相关文档中规定的举报方法,你应该将你的举报信发往何处?

IETF和Protocol Police作为关键字用Google搜索在文档第六章写出了举报地址/dev/null(黑洞设备)。

卖瓜

溢出可比这吸铁石好用多了

刘华强买瓜,你是开水果摊的,要用6斤瓜和9斤瓜称出20来???

这个考察大数相乘会溢出为负数,导致每次溢出后恢复为正数,每次多1。溢出两次就够了。(12+36=20

最开始一想这也不是数学问题。开始乱改input标签的name部分得知了后端是用php写的,还特意学了伪协议和一些php漏洞什么的,最后发现卵用没有。

透明的文件

题目描述可以输出透明的flag我大概可以想出终端输出彩色flag的场景了。

下载文件打开文件发现是Terminal输出彩色的文件,但是[前少了escape对应为\033 但是\033直接在文本里面是没有作用的,需要转义得到escape

这个我是这么实现的,终端上$ echo "\033" >> tmp.txt后打开tmp.txt,复制escape符号,用vscode打开题目文件随便选中[字符后,按下Ctrl+Alt+L替换为escape+[进行替换。

替换成功后在bash shell下使用cat输出透明的彩色flag,然后鼠标选择下终端输出的文本,通过反色就能看到彩色的flag了。(不知道 fish和zsh为什么不行

vscode替换文本那部分感觉用sed命令直接替换也可行。

旅行照片

好像是一道人肉搜索题,图片主要信息是蓝色和KFC和海边。

那就Google关键字蓝色KFC,可以搜索得一堆澳海底世界的信息。(还是小红书厉害

通过澳海底世界锁定秦皇岛,使用百度地图找到位置。借助图片周围明显区域,比如停车场,大致推算出拍摄方向为东南,且时间为傍晚。

KFC电话信息也可以用百度地图查到。

楼层可以通过照片的对楼分辨,大概在10层左右。

具体KFC旁边建筑物信息可利用百度街景。

FLAG助力大红包

助力的时候通过Chrome的开发者工具Network查看POST出去的表单,这个表单里面包含IP项。题目又说采用前后端进行IP检测,所以这道题要采用IP伪装进行爆破。

通过伪装请求头部的X-Forward-For的IP地址进行休眠时间为一秒0-255的IP枚举请求才可助力完成(IP地址能包含0和255是我没想到的

解题代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import random
from time import sleep

import requests

url = 'http://202.38.93.111:10888/invite/10c7d73c-ae79-4801-aabb-ced040f522e2'
ip_set = []
headers = {'X-Forwarded-For': ''}


def hack():
for a in range(0, 256):
ip = str(a) + ('.' + str(random.randint(0, 256))) * 3
ip_set.append(ip)
for ip in ip_set:
headers['X-Forwarded-For'] = ip
print(ip)
sleep(1)
requests.Session().post(url=url, data={'ip': ip}, timeout=(3, 7), headers=headers)


if __name__ == '__main__':
hack()

这道题大概是吐槽某些无良电商的吧

图之上的信息

通过Google了解到GraphQL当初在Gitlab上存在邮件泄漏的漏洞。

通过参照一篇GraphQL漏洞笔记及案例博客。

发现利用其自省方式暴露表中的数据段,并且利用查询语句查询邮件数据段可获得邮箱即flag。

解题步骤如下:

  1. 自省获得表
1
/graphql?query={__schema{types{name}}}
  1. 自省获得表内数据段
1
/graphql?query={__type(name:"GUser"){name,fields{name,type{name,kind,ofType{name,kind}}}}}
  1. 字段查询获得flag
1
/graphql?query={user(id:1){privateEmail}}

图之上的信息 图大概是指GraphQL的Graph吧

Amnesia

这道题只作出了轻度失忆。

通过Github上的CTF-All-In-One一节了解到:

.rodata 段保存只读数据,包括只读变量和字符串常量。

题目要求清除.data.rodata所以说不能使用字符串变量,也就是不能使用printf

所以有以下代码:

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
#include <stdio.h>

int main() {
int H = 72;
int e = 101;
int l = 108;
int o = 111;
int comma = 44;
int space = 32;
int w = 119;
int r = 114;
int d = 100;
int em = 33;
putchar(H);
putchar(e);
putchar(l);
putchar(l);
putchar(o);
putchar(comma);
putchar(space);
putchar(w);
putchar(o);
putchar(r);
putchar(l);
putchar(d);
putchar(em);

return 0;
}

赛博厨房

Level 0

写好每一天的菜谱下一天还会变,继续写,把每天都菜谱写完就会获得flag。

Level 1

第二个和上一个相比每天的食谱都用两种,用如果手上的物品大于等于 n 向上跳转 m 行(相当于goto语句),写出程序就通关了。

剩下的就不会了…

感想

题目很有趣,不仅仅是一些计算机方面的问题,其他的涉及方面也很广。能够做出一道题也能学到不少东西,每拿到一个Flag都会成就感满满,表示明年条件允许还会参加:-)。

评论

您所在的地区可能无法访问 Disqus 评论系统,请切换网络环境再尝试。