Post on: 2024-7-10Last edited: 2025-1-11Words 00 min

type
status
date
slug
summary
tags
category
icon
password

Crypto

beginners_aes

key和iv分别爆一个字节就可以了:

beginners_rsa

Easy calc

给了个迭代函数f,该函数决定了A、s、p的关系:
notion image
整理一下有:
典型的高中数学,对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全是异或和循环移位,是可逆的。
notion image
然后注意
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比特。造格子:
notion image

📎 参考文章

 

研一年度总结

🗒️研一年度总结

读研快一年的学习生活总结。


XCTF-Final2024

🗒️XCTF-Final2024

记录第八届XCTF总决赛的CTF题目以及四川省首届熊猫杯决赛wp。