浙江省省赛2025决赛wp
封榜前rank11最终圆梦省一,感谢队友带飞
Crypto
简单数学题
给了p和q和与差,直接相加相减得到p和q,后面直接解rsa
1 | from Crypto.Util.number import * |
AES
cbc加密,给了key生成方法,密文和iv
md5生成key
Base64
直接大厨解密
brainRSA-1
对于第一个hint可以这样变换
后面可以通过coppersmith解出p
如果m<p,那么mod n和mod p等价,所以后面phi可以用p-1来替代,这样假设能求出flag,但是求不出q无法验证
1 | from Crypto.Util.number import * |
Reverse
你是我的天命人吗
第一个函数是VirtualProtect自解密
第二个函数进入之后创建函数
输入先异或i再转成hex
直接逆向
1 | s='4440514050437D3E386C3A3F3E6F386D232124202D7420742C2F2E282525782D124344471015405A' |
androidtest
jadx反编译不完全,用jeb打开发现base32的表
so层下存在密文
先base32解密
比赛期间通过测试之后猜测再xor44能得到flag
1 | a=[0x68 ,0x6d ,0x7f ,0x6f ,0x78 ,0x6a ,0x57 ,0x4d ,0x42 ,0x48 ,0x5e ,0x43 ,0x45 ,0x48 ,0x73 ,0x4d ,0x42 ,0x58 ,0x45 ,0x73 ,0x4d ,0x42 ,0x48 ,0x73 ,0x58 ,0x49 ,0x5f ,0x58 ,0x73 ,0x45 ,0x5f ,0x73 ,0x45 ,0x42 ,0x58 ,0x49 ,0x5e ,0x49 ,0x5f ,0x58 ,0x45 ,0x42 ,0x4b ,0x51] |
交叉引用ret_str方法找到关键加密,Onclick里面先执行xor 44再base32加密后和密文比较
Warning-1
输入作为参数传入
调试的时候参数放到parameters里
trace xor
trace cmp
上述trace后得到如下内容
1 | XOR: 0x31 ^ 0x0 = 0x31 |
两次256轮循环猜测可能是rc4,第一步是把明文xor 下标,然后标准rc4加密
按照思路直接写脚本,发现逆向之后就是flag
1 | key=[0x50, 0x67, 0x21, 0x2b, 0xce, 0xd7, 0x84, 0x3a, 0xf5, 0xc2, |
正常做法应该写脚本模拟所有操作并trace或者一点点调试,这里小小猜测一手,算是非预期
下面脚本也可以验证加密流程
1 | def rc4(data, key): |
既然这样的话我知道大部分人怎么做出来的了,这题看到key和密文长度46,猜一手rc4,然后观察解密后的数据和格式发现还需要异或i直接出,可见CTF解题还是需要一些“巧劲”
信创安全
X1-1
两次解包hap文件得到moudles.abc文件,反编译后找到Index类,发现关键加密
arg0是input,arg1是3*3矩阵,arg2是theSecondKey,arg3是arc4Key
分别进行矩阵加密(输入和arg1),异或,rc4,自定义码表的 base64
1 | import base64 |
也可以先base64和rc4解密
再进行矩阵运算
1 | import numpy as np |
整体逻辑很清晰,就是比赛期间写不出矩阵相关代码🤔
- 标题: 浙江省省赛2025决赛wp
- 作者: j1ya
- 创建于 : 2025-11-16 16:15:28
- 更新于 : 2026-09-18 10:48:11
- 链接: https://redefine.ohevan.com/2025/11/16/浙江省省赛2025决赛wp/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。