type
status
date
slug
summary
tags
category
icon
password
这次我们
cyberCryer
小队在CRYPTOCTF拿到了第二名,应该也是中国大陆队伍第一次打到前三,非常开心!今年的题有点guessy,也有很多抽象的题被非预期梭哈了。队友很强,我基本只能辅助一下,被带飞也挺爽的2333~ 文中的解法有的是参考队友思路。几个大爹:糖醋小鸡块、hash_hash、yolbby、leukocyte
Easy
Alibos
pkey已知,d为pkey长度,简单模运算去掉pad就行。
Beheaded
ECB加密图像,用ElectronicColoringBook.py这个工具直接秒了。
ElectronicColoringBook.py all_flags.enc --pixelwidth=3 -s 500 -S
Mashy
用fastcoll去生成md5相同的不同文件。

test一下,没问题:
生成这样的8组就可以挑战成功了:
Medium
Joe-19
factordb可以查到n的分解,大概是非预期。看了一下别人的wp,这里的e居然是自然对数qwq,真佩服出题人的脑洞…由于n的十进制为616长度,那么几个因子的长度大概率是154,直接对自然对数这个字符串上挨个取154长的来验证即可,exp可以跑出四个因子,最后解密即可。
Alilbols
q肯定是大于c的,而c的比特数肯定也不会比q小太多,所以能确定d是563。
造第一个格恢复f和g。加密过程不是标准的ntru,多加了个r,可以再造格子打。
如果不造格子,可以计算一个乘上:
rm2
Melek
拉格朗日插值恢复rsa密文,然后解密。
Bada
f(x,1) = f(1,1)+(1+2+...a-1)
f(1,y) = f(1,1)-(1+2+..+b-1)
假设d = f(x,y)-f(1,1)
那么有(1+2+…+x-1)-(1+2+…+y-1)=d
所以问题转化为不定方程求解
通过server每次返回的值可以判断x是大于y的,那么可以把前面y-1项全部抵消,只剩下y+(y+1)+…+(x-1)=(x+y-1)*(x-y)=2*d,这里可能是x-y=1,x+y-1=2d,也可能是x-y=2,验证一下知道前一种正确。
(1+2+…+x-1)-(1+2+…+y-1)=d这里也可以对两个等差数列求和,x(x-1)-y(y-1)=2d⇒(2x-1)^2-(2y-1)^2=8d。最后用佩尔方程。
Vantuk
,显然对A取整就得到a了,然后解个二元一次方程即可。
Honey
调整系数把m消去就是一个标准的hnp,队友优美的格子:
Forghan
,因此我们解密可以在p-1和q-1下,然后crt。这样的话难点完全在于找到p-1和q-1的因子来求phi,那么只要构造形式的素数就好了。题有点问题,出题人预期应该是用sk来作为指数加密的,这样的话就需要p-1是光滑的来做dlp求sk。
Nazdone
根据题目生成私钥的方式可知,当以m为进制的时候,n的最小一位是1或者8,其他项均是m的倍数。那么对n-1和n-8进行分解可以得到m的值,因为m应该是不大的。其实还是不太确定m具体是哪个,可以通过n在m进制下系数为0/1这一性质,来计算一下不同进制下的系数和,找最小的就能稳稳确定m的值了。
这样确定m=19
最后解密还需要e,不知道z稍微爆破一下:
Soufia
函数方程,偷一手
hash_hash
的wp。能解:
开心^^
- Author:ZimaBlue
- URL:https://www.zimablue.life/article/cctf2024_1
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!