CryptoCTF 2024 战果速报
一九九七年
我学会了开汽车
上坡 下坡
轧死了一千多
警察来抓我
我跑到女厕所
女厕所的灯
没 有 开
一脚掉到茅屎坑
和粑粑交朋友
点此欣赏芜湖童谣
这周末,一年一度的 Crypto CTF 如期举行。1997 如之前几年一样穿上发病棉袄,和队友们一起参加周六晚 22:00 开始的 Crypto CTF。
在注册队伍的时候,哥们本来想队伍把弄成这样:
点此欣赏 1997 队歌
在移动端直接显示成这样:
结果就被制裁了
最后交涉了一下只能变成这样子:
最后,1997 差两题 AK 了此次比赛。老规矩,先鸣谢下队友:
沛公 @peigong
石卡库 @sh1kaku
苏氨酸 @苏氨酸
To1in @To1in
V @Vanish
等风 @等风
Xenny @Xenny
Tover @Tover.
三顺七 @March7th
未央 @weyung
然后放个总榜
配合得不是很好
这次的题目要么是乱搞,要么是无解然后把附件一更新需要 redownload 附件(非常好奇redownload前的题目出题人有什么添腹亿饼的方法解出来?),更难蚌的是最后零解的那个 Duz ...
Tensorflow Profiler 踩坑记
众所周知,在 AI 模型落地的时候,我们不仅仅关注模型的准确率,同样也会关注模型的性能。
在使用 VSCode 等 IDE 开发 C++、C# 应用的时候,我们就会去开启 debug 模式,通过可视化工具分析应用的热点与瓶颈在哪里,这个过程一般叫做 profiling。当然,在 linux 上,我们也有 valgrind 等工具可以方便我们分析。
那么具体到 tensorflow 的模型中,我们也想要进行类似的分析。好在 Google 官方提供了 tensorflow profiler 以及官方教程,我们可以 follow 这个教程来分析。此外,也有其他人写过博客来介绍 tensorflow profiler 的使用。
当然 Google 在知乎中也发表过一篇介绍文。
但是这玩意儿它坑就坑在在自己机器上作分析的话,这些东西要自己装。那么要装这些东西就会踩到一些坑。
_甚至用 Google Colab 都不可避免地会踩到一些坑_
包的版本首先,为了稳定性,工地的 docker 镜像都是统一采用 tensorflow=2.10.0,尽管现在有更新的版本。因此,为了和工地的设置一致,我们本地 ...
用 ChatGPT 学洋文
写在前面一律建议使用 GPT-4(GPT-4-turbo-preview 更佳)
背单词巩固记忆分享一个自用的背单词巩固记忆的 prompt,使用时将 XXX 替换成想记的单词即可。
Please make a sentence using the word “XXX” to illustrate its meanings. Your reply must comply the following form:
12345Example: <SENTENCE>Meaning: <THE MEANING OF THE WORD>Synonyms: <SYNONYM 1 OF THE WORD>, <SYNONYM 2 OF THE WORD>, <SYNONYM 3 OF THE WORD>
Example:
1
头脑风暴暴力扩充词汇量,在刷知乎的时候发现的
Please give me 10 XXX-level words with their meanings respectively, and then try to ...
润年
四年一润
百年不润
四百年又润
今天是 2024 年 2 月 29 日星期四,这周的疯狂星期四将是 28 年一遇,下一个在 2 月 29 号的星期四要等到 2052 年,有没有好心人在 28 年一遇的疯狂星期四 v 我 50
Goodbye World
这个世界,还会变好吗?
CryptoCTF 2023 tough分类 团队解题writeup
这次 tough 分类真的也就还好,没有那种很长的算法需要审计,思维上也没有到那种难到抓狂的,也没有涉及太高级的数学工具,对算力也没有啥很苛刻的要求。
所以综合下来,跟去年以及前年的最高难度相比,真的也就还好。
Slowsum题目描述题目里面所给出的系统巨复杂,感觉就是用来把人绕晕的。
首先 $q = 113$,整套系统基于 $\mathbb{F}_q$ 中的多项式。
一开始我们可以输入变量的个数 $n$ 以及多项式 $f$ 的次数 $d$,需要满足 $n \ge 5, d \ge 3, n d/q < 0.1$
我们可用的变量为 $x_0, x_1, \ldots, x_{n-1}$
然后我们需要输入这个 $d$ 次多项式 $f(x_0, x_1, \ldots, x_{n-1})$。记
g = \sum_{x_0 = 0}^{1}\sum_{x_1 = 0}^{1} \ldots \sum_{x_{n-1} = 0}^{1} f(x_0, x_1, \ldots, x_{n-1})然后我们需要输入一个数 $g’ \ne g$。
然后我们需要输入 $n$ 个一元多项式 $p_0 ...
CryptoCTF 2023 hard分类 团队解题writeup 之二
这次 hard 分类也有 5 题,虽然思维方面肯定比 medium 要难些,但也还中规中矩。
Vinefruit题目描述题目定义了一个函数 $f$:输入一个消息 $m$,记该消息的每个字节的内容分别为 $m_1, m_2, \ldots, m_l$。$v_0$ 已知,然后满足一个递推关系:
v_i = (p \cdot (v_{i-1} + m_i)) \bmod 2^{128}其中 $p$ 已知。根据这个迭代式一直计算,返回 $f(m) = v_l$。
给定 $l$,需要给出 $m, m’$ 使得 $f(m) = f(m’)$,且 $f(m)$ 在之后的关卡中不能和之前已经用过的 $f(m)$ 相等。
我的解答可以把那个迭代式展开,得:
v_l \equiv p^l v_0 + \sum_{i=1}^{l}p^{l-i+1}m_i \pmod{2^{128}}把 $m’$ 的各项也代入到上式,两式相减,并记 $d_i = m_i - m_i’$,我们便有:
\sum_{i=1}^{l}p^{l-i}d_i \equiv 0 \pmod{2^{128}}且有 $d_i \in \{-2 ...
CryptoCTF 2023 hard分类 团队解题writeup 之一
这次 hard 分类也有 5 题,虽然思维方面肯定比 medium 要难些,但也还中规中矩。
Big题目描述$p$ 是一个 512 位的 $4k+3$ 型素数,$q$ 是把 $p$ 的十进制表示进行逆序之后的数,也是素数。$N=pq$。
然后 $a$ 是一个模 $N$ 的二次剩余。
首先得到 flag 的二进制为 $\{m_1, m_2, \ldots, m_l\}$,其中 $m_i \in \{0, 1\}$ 对于 $i = 1, 2, \ldots, l$。
然后生成一个随机的 $t_i$,使得 $t_i$ 在 $m_i = 0$ 时不为模 $N$ 的二次剩余,在 $m_i$ 为 1 时为模 $N$ 的二次剩余。
然后记 $c_i = (t_i - a t_i^{-1}) \bmod N$。
已知 $N, a, c_1, c_2, \ldots, c_l$,求 flag。
我的解答首先是找到 $N=pq$ 的分解。
由于 $q$ 是把 $p$ 的十进制表示进行逆序之后的数,所以可以用估界的手法:逐步猜测 $p$ 和 $q$ 的高位值,通过模 $10^k$ 的验证,以及根据已有猜测对 ...
CryptoCTF 2023 medium分类 团队解题writeup 之四
这次 medium 分类题量是最多的,内容方面是最丰富的,两极分化比较严重。
有脑筋急转弯的,有考察 SageMath API 使用的,有 MISC 题目混进来的……
总之 medium 分类最难的比 tough 还要更难……
TPSD题目描述题目基于一个不定方程:
p^3 + q^3 + r^3 = 1其中解 $p, q, r$ 至少要有一个素数。每次提交结果,都要求最小值的比特数在限定范围内。
我的解答自己瞎几把想+乱试了好久没想出个所以然来,所以直接抄答案:
https://www.ams.org/journals/mcom/2007-76-259/S0025-5718-07-01947-3/S0025-5718-07-01947-3.pdf
In 1936, Mahler discovered a parametric solution for $k = 1$:
(9t^4)^3 + (3t - 9t^4)^3 + (1 - 9t^3)^3 = 1
他丫是真的牛逼,这种东西靠自己想是完全他妈的想不出来的,只能说人与人之间智商的差距是最令人绝望的……
所以就直接抄就行了,至于要 ...
CryptoCTF 2023 medium分类 团队解题writeup 之三
这次 medium 分类题量是最多的,内容方面是最丰富的,两极分化比较严重。
有脑筋急转弯的,有考察 SageMath API 使用的,有 MISC 题目混进来的……
总之 medium 分类最难的比 tough 还要更难……
Resuction题目描述和 easy 分类 里面的 Suction 类似,不过有加强。
RSA 中,$N=pq$,$p, q$ 有 1024 位。
题目给出的 $(N, e, c)$ 的后 8 位均未知,且 $d$ 为 64 位素数。
求明文 $m$。
我的解答因为 $d$ 较小,所以可以采用 Wiener 攻击得出 $d$ 的值。
所以就是枚举 $N$ 和 $e$ 的低 8 位,然后如果能够通过 Wiener 攻击成功得到 64 位的 $d$ 来。
然后再枚举 $c$ 的低 8 位去解密就行。
这样好像要挂个 40 分钟的样子,因为 Wiener 攻击需要求在每次都要求连分数,以及判断是否为解。
12345678910for Nl in trange(2^7): for el in range(2^8): N = Nh + 2 * Nl ...