强网杯-JustRe

这篇博客介绍了参与强网杯遇到的一个32位无壳程序,主要涉及SSE指令的复杂运算以及三重DES加密的解密过程。作者通过分析check函数的SSE运算,确定输入必须为10字节的十六进制字符。通过模拟SSE运算并使用z3求解,得到前10字节输入。接着分析函数发现调用了三次0x401000(DES密钥扩展),并最终在0x401500进行加密,0x401250作为加密核心。通过理解加密模式,成功解密了密文。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Windows32位程序,无壳,编译器版本还算高。

主函数除了CFG有点诡异外,流程十分简单。

进入第一个check函数,可以看到大量SSE指令,前面一些基本的判断很不好看,直接调试看结果

.text:00401682 060                 movd    xmm0, eax
.text:00401686 060                 pshufd  xmm5, xmm0, 0
.text:0040168B 060                 test    ecx, ecx
.text:0040168D 060                 jz      loc_401

到达以上基本块时可以发现,第一行eax的结果是string2hex(input[0:8]),刚好32字节,这说明我们的输入必须为十六进制字符。之后可以看到一堆复杂的运算,且都是通过xmm寄存器来实现的

 

这里操作的变量均为128位,v21是input[8:10]两个字符一直重复8次的hex值,而v9则是之前所说的前8个字符的hex值。最终运算的结果会与一个函数的数据进行比较,如果完全匹配则将这些数据写入到另一个函数中,如下

也就是说,这里可以通过类似解方程的方式来求出v9和v21,这样就能得到前10字节的输入

强网-2022 yakagame是一个国际性的网络安全竞赛,旨在提高参赛者在网络安全领域的技术能力和解决问题的能力。比赛的目标是通过攻防对抗的方式,测试参赛者在网络攻防、逆向工程、密码学等方面的知识与技能。 在强网-2022 yakagame中,参赛者需要分为攻击方和防守方进行对抗。攻击方需要利用各种技术手段,发现并利用防守方系统的漏洞,获取关键信息或直接攻陷目标。防守方则需要搭建并保护其系统,防止攻击方的入侵和渗透。比赛以时间和得分为衡量指标,攻击方所获得的权限越高,扣除的防守方分数就越多。 强网-2022 yakagame对参赛者的要求是既要具备扎实的理论知识,又要具备实际操作能力。参赛者需要熟悉并理解各种常见的漏洞类型、攻击技术和防御措施。比赛过程中,参赛者需要快速分析和回应,提供高效的解决方案,同时具备团队合作和应急响应的能力。 参与强网-2022 yakagame对于参赛者而言,有助于提升网络安全技术的实际应用能力,了解当前网络安全形势和攻防技术的最新发展,同时也可以结识来自各个国家和地区的网络安全专家和爱好者,进行技术交流和学习。 总之,强网-2022 yakagame是一个高水平的网络安全竞赛,为参赛者提供了锻炼和展示自己技术能力的平台,促进了网络安全领域的发展和合作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值