HGAME 2022 第二周部分题的 Writeup。
第二周的难度上升了不少,而且遇到了春节,所以就没做多少。。
CRYPTO
RSA Attack
拿到数据,发现 这么小,直接去在线网站分解得到 和 ,然后直接解密即可。
1 | import gmpy2 |
拿到 flag:hgame{SHorTesT!fLAg}
RSA Attack 2
分成了三个子问题,而 task.py
告诉我们了加密过程。
task1
注意到 和 是不互质的,且都是两个质数相乘,所以取最大公因数即可得到 ,然后得到 即可,注意 Python 里的整数除法是 //
不是 /
,在这里坑了好久。
1 | def task1(): |
task2
注意到 非常的小,而 RSA 加密是 ,即 , 很小而 很大意味着我们可以枚举 来暴力得到 。
1 | def task2(): |
task3
注意到两次 RSA 过程中的 和 是一样的。
而 和 都是质数,所以有 。
根据扩展欧几里得算法,存在
根据以上式子对 进行推导:
所以用扩展欧几里得算法求出 和 即可。
1 | def task3(): |
得到 flag:hgame{RsA@hAS!a&VArIETY?of.AttacK^mEThodS^whAT:other!AttACK|METHOdS~do@you_KNOW}
REVERSE
xD MAZE
直接扔到 IDA 里,反编译后发现逻辑类似在一维数轴上跳跃,问怎么样能 28 步全在特定的点上。
声明了一个大小为 4096 的数组,值为 32 则该点可以走,35 则不行。
写了个 DFS 来跑 flag:
1 |
|
拿到 flag:hgame{3120113031203203222231003011}
WEB
webpack-engine
开始点按钮玩,喜闻乐见的上当了环节
然后直奔源码,发现没关 source map,找到了 Fl4g_1s_her3.vue
里面发现 YUdkaGJXVjdSREJ1ZEY5bU1ISTVaWFJmTWw5RGJFOXpNMTlUTUhWeVkyVmZiVUJ3ZlE9PQo=
BASE64 解密一次得到 aGdhbWV7RDBudF9mMHI5ZXRfMl9DbE9zM19TMHVyY2VfbUBwfQ==
继续 BASE64 解密就拿到 flag。
得到 flag:hgame{D0nt_f0r9et_2_ClOs3_S0urce_m@p}
To be continued…