2024 羊城杯 Writeup
本文最后更新于:2024年10月1日 晚上
这次羊城杯手感不错,密码AK同时还拿了两个一血和一个二血。
但是没有血分奖励,白忙活
Update: 没有白忙活!主办方看起来严查Wp了,ban了不少作弊队伍,也是成功递补进入决赛了😋
Crypto
TH_Curve
task
1 |
|
检索一些资料可以知道题目用的曲线是Twisted Hessian Curve,用projective coodinate可以把\((x,y)\)换到\((x',y',z')\),然后就能调用Sagemath内置的EllipticCurve_from_cubic转到Elliptic Curve上去接着处理ECDLP。
检查曲线的order可以知道转换后的曲线的order里有一个大因子,而flag并不长,所以直接在子群上求解ECDLP即可。
exp
1 |
|
BabyCurve
task
1 |
|
我并不知道第一条是什么曲线,本来以为没办法处理DLP但是队友@SinzoL告诉我c和d都很小所以可以直接爆破XD
c=35 b=98
得到c和d之后检查第二条曲线的order可以发现order = p+1,直接MOV Attack起手:
exp
1 |
|
RSA_loss
task
1 |
|
m>n所以直接解密会失败,因为拿到的是m%n。不过因为有很明显的线性关系
\[m = kn+(m\%n), m = \Sigma(256^i)k_{i},k_{i}\in\{\text{ASCII}\}\]
所以直觉上很容易想到格。
鸡块师傅出过一些类似的题目,但是在本题中既没有flag的长度也没有flag的字符表。好在字符表大概可以猜到,所以仿照这篇文章的手法减去字符表的均值后得到的向量也还算短,那么只需要爆破一下长度就好了。
我这边是顺着这个思路走下去用fplll做的格枚举,免去不少麻烦。
exp
1 |
|
为什么这题能有这么多解,感觉难度并不算很低啊QQ
TheoremPlus
task
1 |
|
由Wilson定理一眼丁真出decode_e()函数的返回值是\(2-f(e)\),\(f(e)\)=小于等于e的素数的数量。Sagemath内置了prime_pi()函数实现了相同的作用,直接调用就可以求出e = 36421873;然后n一眼丁真Fermat Factorization,顺理成章地RSA解密。
所以你告诉我这么简单的初等数论解出来的人数比两道ECC还少?原来你们不用学初等数论就能玩近世代数是吗.jpg
Re
你这主函数保真么
找到加密逻辑后喂给GPT得知加密方式是离散余弦变换(DCT),让GPT搓个脚本出来直接秒了。求出来之后还要ROT13一下。
exp
1 |
|
docCrack
想编辑宏但是提示有密码,参考这篇文章bypass掉之后看到一坨代码:
懒狗如我当然不会选择去嗯逆这一坨,正好后面有这么一段:
OK,找个云沙箱跑一下把生成的二进制拖下来就好了。这个二进制还是很容易逆的:
exp
1 |
|
Pic
魔改的RC4,5字符密钥长度。因为png文件前16字节都相同所以拿这个作为判断准则,搓个脚本爆一下:
1 |
|
吐出来的第一个key正好就是target key。