首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
CTF对抗
发新帖
0
0
[原创]第五题:申时·忆海倒带wp
发表于: 2026-8-17 23:23
95
[原创]第五题:申时·忆海倒带wp
mb_tlkgtbuf
2026-8-17 23:23
95
最终 Key 323C47184B0D3C44254B445842552F365C362C1144424B0D3C4416433B0DD6B12A0D3D95FA65B5E0ADE5E11B 思路 先拉字符串,verify success. 和 Welcome to KCTF2026! Come and give it a try. 两条引用把 main(0x403d90)锁死。校验链: 字符只认 0-9/A-Z,长度要求 88 hex(11 limb 大数) Key 解码成 44 字节数组 var_470h,过两道校验: 校验1:44 字节折叠 XOR(16B 块异或 + psrldq 8/4/2/1)最低字节 == 0x8f 校验2:状态加权和 Σ((sum&0x7f)+1)*byte[i] 低 16 位 == 0xbeff 关键迷惑点:有个 fcn.00403500 看着像模幂,结果"丢弃"——其实不然,它的输出经 hex 串再解析成 16 字节,覆盖 var_470h[28..43] 覆盖后用双射查表,输出比对 welcome 破法 查表是双射,welcome 逆查直接定死前 28 字节(Key 前 56 hex),跟校验无关。 难点在覆盖值:真实程序里覆盖值 = RSA 模幂 pow(key[56:88], e, n) 的 hex 串解析结果。程序要求这个值 = 固定 16 字节(查表需要)。所以 key[56:88] 不是随便凑的,必须让模幂结果等于目标值。 RSA 参数从哪来:Unicorn 仿真在模幂调用点(0x403a21)hook 读栈参数,指数容器 data=0x430018、模数容器 data=0x436018。注意大数 limb 是按洗牌索引映射的(data + idx[i]*4),直接 dump 是全零假象。重映射后: e = 0x10001 n = 0x8c91cb79ec693f3ed6519c945dd67371 (128 位!) 128 位 RSA,秒分解: p = 0xbd3d59fac7cc547b q = 0xbe28ef96c8318203 d = e^-1 mod φ(n) = 0x721a022d849de5cc5ad9bbb701f9fb65 目标 m = 0x0F4439374E3C44372544164425151D1B(覆盖需要的 16 字节),key[56:88] = m^d mod n = 0x3B0DD6B12A0D3D95FA65B5E0ADE5E11B。 拼起来就是上面的 Key。校验1/2 也恰好满足(这 Key 是出题人设计的正确解)。 验证 verify_key2.py:字符/长度、校验1=0x8f、校验2=0xbeff、查表前28B、RSA(c^e mod n = m)、查表28..43 覆盖值,全过 Unicorn 仿真输入 Key → verify success.
冰与火的战歌:Windows内核攻防实战高级班!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。
收藏
・
0
点赞
・
0
打赏
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
0
)
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
mb_tlkgtbuf
3
发帖
3
回帖
0
RANK
关注
私信
他的文章
[原创] 丑寅同墟·星海抉择 WP
21
[原创]第五题:申时·忆海倒带wp
95
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部