USTC Hackergame 2022 Writeup
TL;DR: 寄了。
好啦认真一点 第一次参加 Hackergame,然后最后还是没能进榜,大概是 119 / 2747 这个样子。
我其实第一天 web 就只剩下「二次元神经网络」了,然后还凭手速抢了个「微积分计算小练习」的一血,不过 web 就卡这了,完全没想到还能反序列化去打,毕竟 Torch 是之前是真没用过。有在打其他 CTF 比赛,不过除了 web 都不太行,太菜了(
签到
随便写,然后 /?result=2022
。
猫咪问答喵
我觉得这种教你用搜索引擎的题目非常好(
- 2017-03
中国科学技术大学“星云战队(Nebula)”成立于2017年3月
https://cybersec.ustc.edu.cn/2022/0826/c23847a565848/page.htm
- Kdenlive
和官方题解不同,我没看到「Configure Kdenlive」,不过根据界面可以推断是个视频编辑工具,那就搜「KDE video editor」。
https://ftp.lug.ustc.edu.cn/活动/2022.9.20_软件自由日/slides/gnome-wayland-user-perspective.pdf
- 12
很好找。
- dcd46d897adb70d63e025f175a00a89797d31a43
很好,我已经忘记我怎么找到这个 commit 的了 可能是直接硬看 commit log + 简单过滤。
https://github.com/torvalds/linux/commit/dcd46d897adb70d63e025f175a00a89797d31a43
sdf.org
之前比较常用 Censys,发现没索引 MD5 指纹,临时找了个 SHODAN,直接放进去搜就能找到,Hostname 为 *.sdf.org
,那就是 sdf.org
了。
https://www.shodan.io/search?query=e4:ff:65:d7:be:5d:c8:44:1d:89:6b:50:f5:50:a0:ce
- 2003-03-01
搜索有关网络费用的内容不难找到「关于实行新的网络费用分担办法的通知」,可以发现应该是在「网字〔2003〕1号《关于实行新的网络费用分担办法的通知》」开始实施的,但是我实在没找到这个古董文件,于是直接猜 2003 年某月一日。
家目录里的秘密
VS Code 里的 flag
直接 VS Code 打开文件夹全局搜 flag{
。
Rclone 里的 flag
找到 ~/.config/rclone/rclone.conf
,搜「rclone password decrypt」直接有一个在 Go Playground 里跑的代码,复制进去就完了(
HeiLang
作为一个编程爱好者,我觉得实在是太酷了,很符合我对未来编程语言的想象,科技并带着趣味。
用 Regex 替换简单预处理一下数据,转换成如下格式:
1 | 1225 | 2381 | 2956 | 3380 | 3441 | 4073 | 4090 | 4439 | 5883 | 6253 | 7683 | 8231 | 9933 = 978 |
然后写个 Python 脚本处理一下:
1 | from hashlib import sha256 |
愤怒喵(划掉
Xcaptcha
直接 requests.Session()
+ BeautifulSoup 4 处理一下。
1 | import requests |
旅行照片 2.0
照片分析
读 EXIF 即可。
社工入门
根据 ZOZOMARINE STADIUM
可以确定位置。
然后之前没找到 ADSB Exchange,买不起 Flightradar24 的会员,告辞(
猜数字
本来是尝试直接暴力的,一天跑个一两万没问题,但是怕被当成恶意攻击作罢(
然后 Java 的 Double 类型有 NaN
,不可比较大小,在题目条件下会被当成正确,传入即可。
个人不喜欢 KFC 的嫩牛五方。
LaTeX 机器人
纯文本
1 | $$ \input{/flag1} $$ |
特殊字符混入
这题我也忘了从哪搜了个 catcode
出来... Anyhow, it works.
1 | $$ \catcode`\_=12 \catcode`\#=12 \newread\file \openin\file=/flag2 \loop\unless\ifeof\file \read\file to\fileline \fileline \repeat \closein\file $$ |
Flag 的痕迹
splitbrain/dokuwiki#3421 有提到 do=diff
,试了下没禁用。
安全的在线测评
无法 AC 的题目
静态数据因为权限问题可以直接读。
1 |
|
动态数据
想到了在编译时带数据,但是真的没找到方法...
线路板
用 KiCad 的 Gerber 查看器打开,不过不知道为什么我没把 flag 点出来,导出到编辑器后能看到(
Flag 自动机
虽然没做出来,但是我成功通过另一个程序发 Signal 点了那个按钮,然而(
微积分计算小练习
简单的 XSS 注入,不出网,随便试几下可以发现他返回的结果应该是获取指定 id 的元素内容,然后尝试读一下 cookie:
1 | 100:<img src=x onerror="document.getElementById('greeting').innerText=document.cookie;"> |
杯窗鹅影
完全不会二进制,搜了一下找到了 Attacking applications running under WINE,给了一个执行 Linux Shellcode 的示例:
1 |
|
于是直接用 msfvenom
生成两个:
1 | # /opt/metasploit-framework/bin/msfconsole |
蒙特卡罗轮盘赌
利用前两次的错误机会暴力去找使用的随机数种子:
1 |
|
你先别急
尝试几次会发现验证码的复杂度会根据 username
确定,并且未找到的情况下是最复杂的,然后就人肉 sqlmap 盲注了(
1 | import requests |
人肉确定 flag 的下一个字符,还好也不是很长。
片上系统
引导扇区
PulseView 导入后设定一下 Decoder,穷举一下看起来比较正确的 channel 设定,然后把 data 处理一下:
1 | data = [55, 1, 16, 32, 19, 1, 193, 255, 239, 0, 0, 1, 55, 21, 0, 32, 103, 0, 5, 0, 111, 0, 64, 0, 183, 7, 0, 32, 131, 168, 135, 11, 183, 7, 0, 32, 131, 165, 71, 10, 183, 7, 0, 32, 3, 175, 71, 11, 183, 7, 0, 32, 131, 174, 7, 11, 183, 7, 0, 32, 3, 168, 199, 9, 19, 5, 16, 0, 19, 134, 8, 32, 19, 14, 16, 0, 19, 3, 112, 0, 131, 167, 5, 0, 227, 142, 7, 254, 35, 32, 175, 0, 35, 160, 206, 1, 131, 167, 5, 0, 227, 142, 7, 254, 147, 135, 8, 0, 19, 7, 8, 0, 131, 166, 7, 0, 19, 7, 71, 0, 147, 135, 71, 0, 35, 46, 215, 254, 227, 152, 199, 254, 19, 5, 21, 0, 19, 8, 8, 32, 227, 18, 101, 252, 183, 18, 0, 32, 103, 128, 2, 0, 103, 128, 0, 0, 0, 16, 0, 32, 20, 32, 0, 150, 16, 32, 0, 150, 0, 32, 0, 150, 8, 16, 0, 150, 4, 16, 0, 150, 0, 16, 0, 150, 0, 0, 0, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 108, 97, 103, 123, 48, 75, 95, 121, 111, 117, 95, 103, 111, 84, 95, 116, 104, 51, 95, 98, 52, 115, 73, 99, 95, 49, 100, 69, 52, 95, 99, 97, 82, 82, 121, 95, 48, 78, 125] |
企鹅拼盘
这么简单我闭眼都可以!
穷举(
Hackergame 的题整体上是比较有趣的,也会尝试一般 CTF 比赛不太可能涉及的题型。
题目质量很高,覆盖的知识点很广。体验不错,明年还会来陪跑(