第二届“长城杯信息安全铁人三项赛“crypto部分解题wp

题目名称: fffffhash

解题思路

下载附件后我们先审题

我们分析一下:

题目给出一个目标值 giao=201431453607244229943761366749810895688

程序接收一个16进制输入,转换为bytes

giaogiao函数的运算过程:

初始值 base_num = 0x6c62272e07bb014262b821756295c58d

x = 0x0000000001000000000000000000013b

对每个输入字节进行操作:

base_num = (base_num * x) & (MOD - 1)

base_num ^= i

解题思路:

这是一个逐字节运算的过程

每一步都可以逆向:

XOR运算的逆运算还是XOR

乘法在模2^128下可以用扩展欧几里得求逆元

可以从最后的giao值开始,逐字节反向计算:

对每一步:

先XOR掉当前字节

再乘以x的模逆元

我们使用sage运行,这是使用格基规约(Lattice Reduction)的解法

将问题转化为寻找短向量问题(SVP)

使用BKZ算法进行格基规约

通过构造特殊的格来找到原始输入序列

找到规约后的短向量

通过迭代计算恢复原始字节序列

将结果转换为十六进制字符串

即可获得交互的值

参考链接

CTF-密码学题目解析之格密码 | CN-SEC 中文网icon-default.png?t=O83Ahttps://cn-sec.com/archives/2788018.html

【CTF-Crypto】格密码基础(例题较多,非常适合入门!) | happySuicon-default.png?t=O83Ahttps://happy-superman.github.io/2024/08/02/2024-08-02-%E6%A0%BC%E5%AF%86%E7%A0%81%E7%9B%B8%E5%85%B3/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亚力山大抵

谢谢你希望我的博客对你有所帮助

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值