记我的第一次 CTF: Hackergame 2022
October 29, 2022 · 86 min read
送你一个 Shell 当见面礼(逃
这篇博客的阅读时间估计不对。你并不需要 80 分钟来阅读本文。
个人总结
这是我第一次参加 CTF 比赛,最后混了个 34 名,感觉还不错。曾经就听说过 CTF 这个比赛,不过一直没有进一步了解,也没有参加过。在 Hackergame 2022 开始之前,我所做的准备也只是逛了逛 CTF Wiki, 从 CTFHub 上刷了些 web 题。
最后这个比赛名次对于我这种 CTF 萌新来说还是蛮高的。不过能取得这样一个名次,还是和我平时的积累有很大关系的。虽然我平时并不关注 CTF 相关的内容,但是作为一个可能即将成为程序员的人,我还是一直比较在乎自己编写的代码的安全性的,XSS、提权漏洞、缓冲区溢出这些操作我都是比较熟悉的,不过我一般都是在编写代码时以一种防御性的姿态来避免这些攻击发生在我自己的代码上,这次比赛使我第一次体会到作为攻击者去利用这些漏洞是什么体验。
最近在看 CSAPP,十几天前刚学会了 x86 汇编,没想到就在 flag 自动机那道题里用到了。不过作为日常 Linux 用户而言,好几道题(家目录里的秘密/传达不到的文件)确实只需要一些基础的搜索和再正常不过命令行操作就可以完成。
然而作为一名数学院的学生,我一道正经的数学题都没做出来,实在是有些丢数学院的脸了。(算了,我们专业被开除出数学籍了,统计学算个屁的数学)。
密码学题我连题都看不懂,除了惜字如金第一题我知道该怎么做,但是懒得写了。
量子藏宝图那道题考察了一些需要现学现卖的新知识,出的不是很难,所以我这种混子得以在纸上计算来把 128 - 4 * 8
个 bit 翻译成 12 个字符。
明年我如果还有时间,一定会再次参加 Hackergame 的!
比赛体验
比赛体验极佳。除了
- 有时需要重启到 Windows 系统之外
- 光与影在 Linux + Firefox 下跑起来只有 10 fps,不过误伤大雅
- Killed
(大佬太多了,你们把我从前 30 名里挤出来了)
Write Up Part I
我把 Write Up 分成好几个部分写只是为了防止右边导航栏溢出而已,没别的意思。一个小节里面标题堆得太多了会导致右边导航栏显示不下。
签到
打开签到题,就看到了经典的(对于我这种人工智能相关专业的人而言)手写数字识别。嗯。。。最后一个框倒计时 0 秒,很显然是不可能让你直接手签 2022 过掉的。
为了观察浏览器与服务器数据交流的格式,我手签了一个,点击提交按钮,发现直接跳转到了 http://202.38.93.111:12022/?result=2?5?
那么,我们就可以合理的怀疑 http://202.38.93.111:12022/?result=2022 这个网址能把我们心心念念的 flag 送给我们。果然,flag 就这样到手了。(然鹅此时一血已经被手快的人拿走了)
猫咪问答喵
参加猫咪问答喵,参加喵咪问答谢谢喵。
中国科学技术大学 NEBULA 战队(USTC NEBULA)是于何时成立的喵?
Question
- 中国科学技术大学 NEBULA 战队(USTC NEBULA)是于何时成立的喵?
提示:格式为 YYYY-MM,例如 2038 年 1 月即为 2038-01。
Google 搜索 中国科学技术大学 NEBULA 战队(USTC NEBULA)
喵, 发现第一个结果中提到喵
中国科学技术大学“星云战队(Nebula)”成立于 2017 年 3 月,“星云”一词来自中国科学技术大学 BBS“瀚海星云”,代表同学们对科学技术的无限向往和追求。战队现领队为网络空间安全学院吴文涛老师,现任队长为网络空间安全学院李蔚林、童蒙和武汉。战队核心成员包括了来自网络空间安全学院、少年班学院、物理学院、计算机学院等各个院系的同学,充分体现了我校多学院共建网络空间安全一级学科的特点。战队以赛代练,以赛促学,在诸多赛事中获得佳绩。
所以喵可以确定此题答案为 2017-03
喵.
请问这个 KDE 程序的名字是什么?
Question
- 2022 年 9 月,中国科学技术大学学生 Linux 用户协会(LUG @ USTC)在科大校内承办了软件自由日活动。除了专注于自由撸猫的主会场之外,还有一些和技术相关的分会场(如闪电演讲 Lightning Talk)。其中在第一个闪电演讲主题里,主讲人于 slides 中展示了一张在 GNOME Wayland 下使用 Wayland 后端会出现显示问题的 KDE 程序截图,请问这个 KDE 程序的名字是什么?
提示:英文单词,首字母大写,其他字母小写。
Google 搜索 中国科学技术大学 软件自由日 LUG@USTC
喵,一个来自 Google Groups 网站的搜索结果 中提到喵
往届活动和详细介绍见:https://lug.ustc.edu.cn/wiki/lug/events/sfd
打开此链接可以看到 2022 年 SFD 活动的详细信息喵,表格中有一行
讲者 主题 资料 陶柯宇 闪电演讲:《GNOME Wayland 使用体验:一个普通用户的视角》 Slides
打开 Slides 喵, 在第 15 页可以找到题目所述截图喵。
图片里菜单项里 Configure Kdenlive
很显然写明喵应用程序的名称。
Firefox 浏览器能在 Windows 2000 下运行的最后一个大版本号是多少?
Question
- 22 年坚持,小 C 仍然使用着一台他从小用到大的 Windows 2000 计算机。那么,在不变更系统配置和程序代码的前提下,Firefox 浏览器能在 Windows 2000 下运行的最后一个大版本号是多少?
提示:格式为 2 位数字的整数。
Google 搜索 Firefox 浏览器能在 Windows 2000 下运行的最后一个大版本号是多少
喵。然而第一页上没什么有效信息喵。自然而然想到用英文搜索喵。
谷歌直接把结果加粗丢给咱喵,好耶!
首个变动此行为的 commit 的 hash
Question
- 你知道 PwnKit(CVE-2021-4034)喵?据可靠谣传,出题组的某位同学本来想出这样一道类似的题,但是发现 Linux 内核更新之后居然不再允许 argc 为 0 了喵!那么,请找出在 Linux 内核 master 分支(torvalds/linux.git)下,首个变动此行为的 commit 的 hash 吧喵!
提示:格式为 40 个字符长的 commit 的 SHA1 哈希值,字母小写,注意不是 merge commit。
首先当然要 Clone Linux 的代码仓库喵(这仓库好大喵。。。需要一段时间才能克隆下来喵):
git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
然后在执行了 n 多次 Google 搜索之后喵,kxxt 发现加上搜索条件 site:kernel.org
之后再搜索 CVE-2021-4034
就能在第一个搜索结果中看到相关的 PATCH 喵。
这个 PATCH 改动了 fs/exec.c
这个文件喵。咱喵可以合理的推测对于 CVE-2021-4034
的修复应该发生在这个文件喵(懒的管这个 PATCH 是否被合并了)。
用 VSCode 打开 Linux 仓库喵,等它加载完成喵(等待 Activating Extensions),打开 fs/exec.c
然后在 TIMELINE
面板(应该是 Git Lens 插件的功能)下面用肉眼搜索相关改动喵。
很快就找到了喵。右键复制 Commit ID, 此题就结束了喵。
你知道猫咪在连接什么域名吗?
Question
- 通过监视猫咪在键盘上看似乱踩的故意行为,不出所料发现其秘密连上了一个 ssh 服务器,终端显示
ED25519 key fingerprint is MD5:e4:ff:65:d7:be:5d:c8:44:1d:89:6b:50:f5:50:a0:ce.
,你知道猫咪在连接什么域名吗?
提示:填写形如 example.com 的二级域名,答案中不同的字母有 6 个。
这道题 kxxt 一开始真的没搜到喵。想要暴搜却发现状态空间太大了,搜不完喵。后来 Google 搜索 public ssh server
点进第一个结果找到了答案喵。
Caution
其实我一开始搜索的时候就找到了这个帖子,不过我当时并没有耐心看完所有的回答喵。当时我看了 Accepted Answer 里没有我想找的东西就把这个 tab 杀掉了。
现在想来看看其他回答也是很有必要的喵,毕竟 Accepted Answer 是提问者采纳的回答,并不是最适合所有人的回答。而且我第一次访问到这个链接的时候甚至都没有注意到第二个回答的 Up Vote 比 Accepted Answer 更多.
想不到吧,sdf.org 除了 ssh server 之外还有 minecraft server (
“网络通”定价为 20 元一个月是从哪一天正式实行的?
Question
- 中国科学技术大学可以出校访问国内国际网络从而允许云撸猫的“网络通”定价为 20 元一个月是从哪一天正式实行的?
提示:格式为 YYYY-MM-DD,例如 2038 年 1 月 1 日,即为 2038-01-01。
这道题目我是真的没有搜出来喵,不过得益于题目的状态空间比较小(一年 365 天,按 10 年算,不也就 3650 种情况喵?),最后我靠暴搜解出了这道题。
话不多喵,直接上脚本喵:
代码很简单喵,我就略过不讲喵。更换年份直接修改脚本就可以喵。最后跑出来是 2003年3月1日喵。真的很搞人心态喵,咱喵从 2015 年一路试到 2003 年才作出来。
喵~
参加猫咪问答喵,参加喵咪问答谢谢喵。
喵喵结束,变回人形喽。