type
status
date
slug
summary
tags
category
icon
password
Crypto
beginners_aes
key和iv分别爆一个字节就可以了:
beginners_rsa
Easy calc
给了个迭代函数f,该函数决定了A、s、p的关系:
整理一下有:
典型的高中数学,对A两边乘s:
相减:
因为是在模p下,
因此得到,
解密脚本:
replacement
dance
整个系统是一个身份认证系统,该系统调用了
mycipher.py
作为token加密算法,该加密算法是chacha20。漏洞出在Register这里:这里就是用当前时间的分秒值和username以及一个小的随机数来生成token,然后token生成chacha20的key和nonce进行加密。题目直接给了user,因此直接爆时间可随机数得到token就行。总的说来难度主要还是在审代码逻辑。
speedy
MyCipher其实是Xoroshiro128+这一PRNG的实现,注意get_key_stream全是异或和循环移位,是可逆的。
然后注意
secret = b'FLAG{'+b'*'*19+b'}'
pt = pad(secret, 8)
根据flag长度,这里的pad一定是0x07。
然后encrypt这里是直接泄露了X:
那么只要搞到Y就可以恢复s0和s1了,由于上述pad所以ct[-8:]只有第一个字节是未知的,那么爆破一下就能得到最后一轮的key,然后利用sum=X+Y计算Y,然后逆get_key_stream得到s0和s1,再解密就可以了。
Many Xor Shift
可以看作mod2下的矩阵方程:
uf
整个问题可以转为AGCD,具体看encrypt过程:
整个过程转化为:
其中为512比特,为256比特。造格子:
📎 参考文章
- Author:ZimaBlue
- URL:https://www.zimablue.life/article/wanictf2024
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!