此次hash,佩奇师傅和我一起参加了pwnhub春季赛,卷了两天还是不敌Nu1L,0ops等超级战队,最终获得第七。不管怎么说,被两位师傅带飞,真是太开心了2333,自己也学到很多东西,以后继续加油。这里记录crypto和misc(hash’s wp)。
Crypto
rootRSA
n是素数
e与phi不互素,公因子为2,考虑直接在求逆元的时候phi除2,
$ed=k\frac{φ}{2}+1=>c^d=m^{k\frac{φ}{2}+1}$n
$m^{\frac{φ}{2}}$只有可能是1或-1,$=>c^d=m~or~n-m$
1 | import gmpy2 |
ezmat
前一半是Hidden Subset Sum Problem
过程不是很懂,或许可以参考这篇文章
1 | #sage |
第二部分相当于RSA在矩阵上的实现,实际上只需找一个矩阵乘法循环群在GF(p)上的阶,即|GL~n~(p)|
最终得到一个类似于数域上phi的表达式
$ord|\prod_{i=0}^{n-1}(p^n-p^i)$
直接照着RSA的过程做就行
1 | #sage |
ezRSA
实际上就是一个椭圆曲线群上的RSA问题,为啥这么喜欢出非数域群上的RSA
所以只需要将n进行分解即可
根据方程$y^2=x^3+(p+q)x+p^2+\frac{q-1}{2}(mod~n)$
两边同时乘q,消掉n后把q除掉得到等式
$(2x+1)q-(2(y^2-x^3)+1)=0(mod~p)$
p为1024bits,q是512bits,直接copper就行
最后需要求模n下椭圆曲线群的阶,猜的话直接猜p下阶和q下阶的乘积就行
翻paper找到的阶数#E~n~=#E~p~×#E~q~
1024比特素数域下的阶有点难跑,差不多整了一个小时吧
1 | #sage |
Misc
眼神得好
用stegsolve分析,利用Stereogram Solver进行像素偏移,偏移足够大以后发现flag。
被偷的flag
这题做了一大半,最后没出非常可惜QWQ。
开局一张jpg,直接用stegsolve在每个通道查看,发现了二维码,扫码得到部分信息:1e:))}
发现数据段有zip,所以直接进行一波foremost分离,得到压缩包和一套字典,显然用字典攻击可以得到密码,解压得到txt和一个pyc。
txt包含零宽字符,在线网站解得字符Unc
1 | 小明发现叔叔的桌子上一张字条,上面写着[绝密],便悄悄偷了过来。拆开了纸条并进行了查看,竟然真的是flag,flag居然就在这里!。为了隐藏自己的行为,小明把纸条揣进兜里,丢到了洗衣机,然后把flag分成了4部分藏了起来。叔叔回来后找不到纸条了,就去查看了监控,发现是小明拿走了纸条。小明随后拿出经过洗衣机摧残的纸条,打开发现上面的文字都模糊了。上面写着:"flag{32145(****-****U****:))}"。你能帮叔叔找到flag吗。 |
一直到这步我都是对的,下一步纯属知识面的问题,拿到pyc第一想法肯定是反编译,但实际上他是一个pyc隐写…参考博客,总之直接用stegosaurus提取出extra字符:VqtS-HZ&*
这里有个小坑,工具暂未支持py3.9版本,切换了成3.7,成功解决。
之后用base85解密得到字符 base64(
32145联系题目可知是Polybius,32对应m,14对应d,意思是md5
综上所述,flag{md5(base64(Uncle:))}