请注意,本文发布时间为 2024 年 2 月 11 日 22:00,此时活动已经结束,并不存在作弊和泄漏分享题目题解的问题。
# TL;DR
这是我参加的第一个民间 CTF,作为一个什么都不会什么都不知道的屑雪生(对于我自己来说)感觉相较于 byn,chi,mzw 和 sci 仍有较大差距。
起因:最近看到了 chi 写了一个小红包,遂进行尝试。
warning
注意:请不要尝试频繁切换用户代理,会被风控!
# 题解正文
注意:本文章只能保证能够顺利进入下一个 quiz,并不能保证能领取红包!
# 01 报名页面
输入名称后,点击报名,提示使用原神浏览器打开。
查看源码后发现有 Game Browser 的用户代理
使用 curl 获取网页源码
1 | curl -A "Game Browser" https://rb.chihuo2104.dev/rb-challenge/2fde36b132975e23125b2d6d043a7ec07caf9b7061fdcade98604f86ffad8635 |
得到隐藏红包。
然后进入 quiz1 出现了弯路。我一直认为跟 hackergame2023 一样,事实证明是我想多了。
根据 mzwing 的提示,将 /rb-challenge/a8586468ad527792bffcae899972fe251fc89de6/quiz0-end
里的 quiz0-end
换成 quiz1
即可进入下一关。
但是 chi 说大赛报名页面有个隐藏红包,我倒是没找着。即使翻看了网页源码也是如此。
障眼法是吧
不过感谢 mzw!!!mzw 强强!!!
# 02 初赛
有五道题。一道题 20 分。
第一题根据提示通过微信搜索宁外这一年便可以在浙江省八一学校公众号找到以下链接:
https://mp.weixin.qq.com/s/K13uSuZ18aHEGfYhGsASYw
查找关键字可以知道是逐梦
第二题通过查看 archlinux.org 的新闻可以知道是 java
来源: 网址
第三题没学过通用技术,略
第四题通过询问 GPT 得知应该填 que[tail] = que[head] + que[head + 1]
第五题通过搜索引擎查到日期为 2023 年 2 月 22 日。
链接(举例): http://military.people.com.cn/n1/2023/0301/c1011-32633822.html
# 03 复赛
复赛居然是 ai,模型是 TinyStories-33M
尝试了几次都是 0 分,但是输入 fuck 和 go to the 都能得 30 分。
查看 app.py 的后半部分:
1 | resp = output_text[len(prompt):] |
知道了这个得分规则
于是就有了这个和 GPT-4 turbo 的对话:
1 | Q: 我应该如何用一段英文来吸引TinyStories-33M讲述一个包含good和neko的英文故事? |
下面是一个 55 分的版本 (由 GPT 生成):
Once upon a time, in a cozy little town, there was a charming cat named Neko. Neko had the softest fur and the warmest heart. One bright and sunny morning, Neko decided to venture outside and look for ways to spread goodness throughout the neighborhood. Create a narrative about Neko's day and the delightful moments of kindness and companionship that unfold.
把 delightful 改成 awesome 就及格了 (全恼)
# 04 决赛
不会,略
# 后续
这段后续是我还在死磕 quiz2 的时候写出来的。
我有一种 quiz0 做数列大题,quiz1 做排列组合大题,quiz2 在做导数大题。quiz3 在做解析几何大题的感觉。
我根本就无从下手。
看到别人轻松通关的亚子我感到怀疑人生。
估计是我太弱了罢。
算了不管了重在参与嘛。
下次看看有没有时间参加下 Hackergame2024 罢。
# 附录:阅读官方题解的感受
官方题解: https://github.com/chihuo2104/2024hb/blob/master/writeups/README.md
# quiz0
刚开始以为入口在原神启动页面里,实际上经过 mzw 提醒才知道不在这里。
于是在 mzw 的帮助下就直接跳关了 (恼)
报名页当时看到 ysqd()
的函数和 return -1
了,但是不会手动请求 (悲)
# quiz1
第一问搜索引擎找不到便想起来可能是在微信公众号上发布的,但是查找了浙江省八一学校和宁波外国语学校都没有结果,直到 chi 提示我才知道微信有搜索功能,虽然但是我也不怎么用微信。
第三问第一眼还以为是物理题,没想到是通用技术。教练我也想学通用技术
第四问一开始貌似是出错了。后来经过 mzw 和 sci 的提醒才进行修正。
第五问一开始填的是 2023 年 2 月 22 日我还寻思怎么没给分 (chi: 谁叫你不看了)
# quiz2
算了不说了太恶心了。但是后来整了个基于 llama2.c 和 stories15M 的移植版本
# quiz3
查看源码发现了没有用到的隐藏按钮,然后又发现了
1 | // 判断用户权限 |
于是尝试把 user 改成 admin 发现无效
后来又尝试了将
1 | <button class="text-2xl hover:shadow-2xl shadow-md bg-cyan-200 border-r-2 p-2 transition-all m-2" onclick="check" id="commit">检查通过状态</button> |
改成
1 | <button class="text-2xl hover:shadow-2xl shadow-md bg-cyan-200 border-r-2 p-2 transition-all m-2" onclick="approve" id="approve">检查</button> |
貌似还是没用
后来查看官方题解发现只需要添加
1 | <img src="neko.png" onerror="approve()"/> |
就可以了
坚定为不会玩 html 的屑 (悲)