SECCON 2022 Crypto
同Strawhat一起打的,整场比赛做的就挺麻木的,后面的时间都耗在witches_symmetric_exam
上最后还没做出来):,但是u1s1确实是一道挺棒的题目
总的来说还是现学的能力弱了些,一个GCM模式看源码半天都没理解具体流程,wtcl
pqpq
给了
相加因为e是偶数把
因为
1 | import gmpy2 |
insufficient
根据多项式构造格子
取LLL约化基可得到前6个系数,最后利用后四列的约化结果得到后两系数,最后还原m
1 | c=115139400156559163067983730101733651044517302092738415230761576068368627143021367186957088381449359016008152481518188727055259259438853550911696408473202582626669824350180493062986420292176306828782792330214492239993109523633165689080824380627230327245751549253757852668981573771168683865251547238022125676591 |
BBB
五次机会我们的目标就是使得每次迭代后的e都为11,也就是我们希望e在十次迭代前就已经为一固定数
构造不动点即可,根据方程
我们继续求解
最后把五个解作为seed即可,最后来一次广播攻击,可能存在无解的情况多跑几次
1 | from pwn import * |
this_is_not_lsb
挺有意思一题,可以选择直接打Bleichenbacher_attack
,但是还有一个想法是利用LLL,类似于求解HNP时的格构造方案,解一个CVP
1 | from pwn import * |
构造格
1 | n=144702720828868578448004877230765342650378627371660248494985831632996139471868831102906331265265081859024159566121204668861499713144388897230702620514178156981329843021809458668709098943733890704333144316343743064613158321607000835190229525102600857019287053680185347879093666693887789416666414537047235879261 |
witches_symmetric_exam
由于采用的PKCS#7填充,ofb_oracle利用ofb_error可以还原密文,由此我们可以通过给出的密文还原gcm加密后的nonce以及ciphertext,我们利用OFB模式去完成GCTR的过程即可解密
并且GCM模式在处理nonce和CTR不一样,后面直接读的python的源码才找到超过12字节的nonce都会进行GHASH操作
后面就是个伪造tag的问题了,由于我们可以拿到_mode_gcm
里面_GHASH
调用,导致虽然知道了大致流程但是不会用内置的函数结构就很麻
有个点就是GF mul在处理0填充的时候结果还是0所以无附加验证码的时候我们可以不用看第一个流程中由ADD带来的部分
1 | from pwn import * |
janken vs kurenaif
一开始就利用关系把每个32bits数的后两位确定,然后我寻思着随便填前30bits试试,但是我试了下这无法还原出状态,后来Hermes说要构造线性的关系,因为init部分状态之间是建立了等式的,摸了一下z3发现还是不大会,,,得花些时间学一下z3了,感觉每次遇到和random库有关的都用得上。后面大概是要读一下random的库函数里seed的实现然后逆一下,暂时还不会先搁置了
- Post title:SECCON 2022 Crypto
- Post author:hash_hash
- Create time:2022-11-13 15:49:35
- Post link:https://hash-hash.github.io/2022/11/13/SECCON2022-Crypto/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.