USTC Hackergame 2022 WriteUp
Last updated on August 22, 2023 pm
前言
- 就第一天打了,最高到过59名,之后就摆烂了;
- 密码学学了,没有数学基础,没法拿来解题,Binary 完全不熟,Web 也一知半解,最后全是些常识/搜索题做完了;
- 咱思路上偏向 CCBC 那种 Cipher,没有这么硬核的知识积累;
- 等会我这都能367名的?
- 官方题解弯路多 & 懒人改变世界(
- General题多用搜索少实验,能出出来的基本都有人发现了(
- 成绩:1250, 总排名:367 / 2746 ;binary:0 , general:900 , math:0 , web:350 ;
WriteUp
签到
试图提交可见提交的是一个查询 URL,?result=????
,直接替换为 2022 可得解:
flag: flag{HappyHacking2022-5f76909eaa}
猫咪问答喵
搜索可解题:
- 文章,结尾
2017-03
; - 所提到的那个Slide,在 Page 15 上的
Kdenlive
; - 13 的系统要求,所以最后一个大版本只能是
12
了; - 那个 Commit,ID 是
dcd46d897adb70d63e025f175a00a89797d31a43
;比较便于寻找的路径是从 Kernel 邮件维护者列表里去搜索,确定文件和对应时间 后上 GitHub 看相关 Source; - 这个真有点迷糊,开始以为是能解码,后来想想 MD5 也没法逆向啊……然后直接全文搜索 Key Fingerprint,找到了一个文档,里面的 log 有已知的 IP
205.166.94.16
,反查得到sdf.org
; - 更是 tm 曲径通幽处。常见问题解答 可知这个官方文件的标题,搜索得到下发通知,知道前序版本的编号“网字〔2003〕1 号”,信息中心查找可得该文件自
2003-03-01
开始实行。
flag1: flag{meowexammeow_772b498346fe0925_f1b0950663}
flag2: flag{meowexamfullymeowed!_6c159adddb7f171b_31f78ef8c6}
家目录里的秘密
RClone: 配置文件位于 user/.config/rclone/rclone.conf
,pass
字段为 RClone Obscure 后的字符串,使用 rclone reveal
解密即可(此处针对官方题解不看 man
自己写实现特别加粗)。
flag1: flag{get_rclone_password_from_config!_2oi3dz1}
VSCode: user/.config/Code/User/History/2f23f721/DUGV.c
下第五行可得明文 flag。
flag2: flag{finding_everything_through_vscode_config_file_932rjdakd}
HeiLang
其实不用一句话变成好几个语句——本来 Python 就允许连续赋予。将 A[x | y | z] = t
变成 A[x] = A[y] = A[z] = t
,即 |
变为 ] = A[
即可。
flag: flag{6d9ad6e9a6268d96-dbc3142525eed29f}
旅行照片
EXIF
使用 exiftool
查看所有 EXIF 信息,按问题相关的排列如下:
1 |
|
flag: flag{1f_y0u_d0NT_w4nt_shOw_theSe_th3n_w1Pe_EXlF}
社工
- 充分发掘已有 EXIF 信息,发现证明时区为
1
Offset Time : +09:00
UTC+9
,但中国时区并未有该可能性,参照第一题标准答案格式可得拍摄地点绝对不在中国境内。对应拍摄时间为五月下午 6 时左右接近日落,靠海+六时后依然未日落,容易确定是日本。 - 搜图可得,照片中位置是 ZOZO海洋球场,结合卫星图可得,满足图片中拍摄条件的仅有“APA HOTEL& RESORT TOKYO BAY MAKUHARI”,其日式邮政编码为
261-0021
。
- 从 EXIF 得,手机厂商为
1
2Make : Xiaomi
Camera Model Name : sm6115 (juice)Xiaomi
,代号为juice
,查询可得型号为 Redmi 9T / 9 Power / 9 4G 或者 POCO M3,图片中闪光灯在相机模组底部,排除 POCO M3,查询参数得分辨率为1080x2340
。 - 这个怪我,没有 ADS-B 社区常识,没有找到最后的路线。
另外赛后题解出现了几道 Open Question,答案如下:
- 按提示查找 ZOZO 球场相关活动信息,可得活动是 Bandai Namco Entertainment Festival 2nd,由国际直播站的存档可得 JST 下午 15:30 开场,由节目列表大致推得当时曲目(我就不推了);
- 酒店仅可能是 APA,其他酒店高度不满足拍照要求。利用圆到椭圆的透视规律可大致判断楼层高度;
- 飞机不会,靠大家了(
LaTeX 机器人
- 使用
\input{/flag1}
即可获得,注意大括号因为特殊识别消失了,需要自己补上; \input{}
不可行可以\detokenize
嘛,自己实验一下就可以得出了;
Flag 的痕迹
搜索可知 Dokuwiki 的 Bug:在 URL 后加 &do=diff
即可打开 Revisions,即使 Revisions 未被启用。
flag: flag{d1gandFInD_d0kuw1k1_unexpectEd_API}
线路板
打开所给的 Gerber 文件,通过 D 码寻找到 flag 上叠加的同色圆圈,透色即可得到 flag。
flag: flag{8_1ayER_rogeRS_81ind_V1a}
总结 & 反思
虽然我等于没做,但依然不妨碍我看排行榜上其他人挣扎(
思路接近没做出来的
- 蒙特卡洛轮盘赌:看出来rand问题了,写了一段小程序暴力轰炸一个时间段内所有可能的第一解(没学过C丝毫不妨碍我10秒学会
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
30#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
double rand01()
{
return (double)rand() / RAND_MAX;
}
int main()
{
// disable buffering
setvbuf(stdin, NULL, _IONBF, 0);
setvbuf(stdout, NULL, _IONBF, 0);
setvbuf(stderr, NULL, _IONBF, 0);
for(int clock = 1666442000; clock < 1666443000; clock++){
srand(clock);
int M = 0;
int N = 400000;
for (int j = 0; j < N; j++) {
double x = rand01();
double y = rand01();
if (x*x + y*y < 1) M++;
}
double pi = (double)M / N * 4;
printf("%d - %f\n", clock, pi);
}
} - XZRJ:代码补全之后看出了
secret
有问题,然后就懒得去爆破了(趴);
其他吐槽
- 我高中生是不是不太适合这么做题,math 完全没有打开的勇气(根本没有相关基础……);
- 一些非常简单的题却并没有多少解,可能是有点 CTF-Intensive 了不太注意其他?
- 好玩www,之后要恶补 Binary 了,数学等我高中复习完了再说(