PKU GeekGame 3rd题解(零)
在科研的压力下,一年一度的GeekGame成了一个消遣放松的绝好借口不过为什么感觉打这个比赛比搞科研更累?。
今年的比赛顺利取得总排名36/1012(通过签到题的人数),并且在一周的比赛时间内又学到了不少一年前可能学过但又忘了的东西,算是非常有收获。按老规矩,继续写篇题解记录一下本菜狗的解题过程。
题解
一眼盯帧、小北问答!!!!!、Z 公司的服务器、基本功、Emoji Wordle、第三新XSS
简单的打字稿(Super Easy)、汉化绿色版免费下载、初学 C 语言(Flag 1)、绝妙的多项式、关键词过滤喵,谢谢喵(字数统计喵)、小章鱼的曲奇、华维码(华维码 · 特难)
总结
本次比赛比去年学到了更多的内容,个人最大的突破在于binary类型的题,曾经我的binary只能拿0分,而这次竟如打通任督二脉一般做了800多分,不过细究原因,还是这次的binary题混入了两道假binary罢了。栈溢出那题,虽然做了半天还是溢出不了一点,但在过程中掌握了gdb的基本调试命令,也算是一种收获。
Web方面,首次做出了XSS的题,值得纪念(虽然是经过二阶段的提示),这道题也带给了我非常多的收获。
不过有一些需要吐槽的地方:
吐槽
有一些体验不好的题:
- 麦恩·库拉夫特
是个MineCraft游戏,至少解出一个flag的人比较多。但对没玩过这个游戏的选手很不友好,例如:有玩过MC的参赛选手认为只要是老玩家,一下就能猜到第一个flag在哪;还有熟练选手连游戏都没开就直接用脚本跑出flag的。由于我从来没有玩过这个游戏,这道题需要从头开始配游戏运行环境(包括服务端和客户端),不仅如此,打开游戏后,还得对着游戏教程熟悉各种最基本的操作,非常麻烦;另外我还晕3d,好不容易配好了环境,进去玩五分钟就晕了。关于晕3d这一点,有人说可以用脚本刷,然而我连游戏怎么玩都不知道,就让我去学习用脚本是不是过分了;还有人提出可以切换为第三视角,我后来试了一下,发现没什么用,和我以前玩过的第三视角游戏不大一样,人物还忽大忽小,还是很晕。另外为了解个题去入门一个我不想玩的游戏也是非常不划算的事。。总之这是道让我个人体验比较差的题。
- 扫雷
这题的体验差主要在于地图太大和响应太慢。然后前期还需要不停地试错来找规律(结合前面两点就会很头大)导致看了一段时间就不想看了。题目本身大概还是很有意思的。
- 华维码
正如我在题解里提到的,这道题的第一小题如果一开始就把题目的素材下载下来,会下载到以数字为文件名的图片文件,将它们按数字顺序进行排列,就可以直接得到二维码,扫二维码就能拿第一个flag;那么第二小题大概也是类似。比赛结束后发现第二小题的二维码无法直接扫出flag,但这个bug至少能让选手快速确定每个块的位置,去玩华容道也省事了一大半)
后来实锤确实有这个问题:prob19-qrcode#非预期解,面对如此重大的bug,组委会的处理方案居然是当无事发生,直接默默修了bug也没发任何通知,让一开始就下载完题目素材的选手和后面才下载的选手处于完全不同的起跑线,解题难度差了十万八千里,有失公平性。
我认为合理的处理方法应该是像前面随机数那题一样不改,毕竟:“这不是bug,这是feature”;或是取消所有解出该题的选手这一题的得分(我自己也靠这个bug做了一小题,然而我当时真的以为这是个feature),等把bug修复了重新生成新的二维码后再重新上线。
可能有人会问为什么我不认为随机数那题(同样因为出题人的不慎,出现了非常简单的非预期解)体验不好,是不是因为我解出来了,所以双标。其实不是的,这两题组委会的处理方法完全不同,随机数那题,组委会并没有默默修改题目,而是在二阶段大方承认存在非常简单的非预期解,这是可以接受甚至非常合理的操作。
总体而言,这次比赛收获颇丰,体验不错,明年一定还参加,希望GeekGame越办越好!