首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
CTF对抗
发新帖
0
1
[原创]KCTF2025 第七题 危局初现 题解 (一血属于LLM)
发表于: 2025-8-30 03:15
8707
[原创]KCTF2025 第七题 危局初现 题解 (一血属于LLM)
只管出不管做
2025-8-30 03:15
8707
简单审查程序结构十分简单,替换 get_number_from_string 为实际的数字之后喂给 GPT 求解: 中途提供了 QNX 系统中 /etc/rc.d 存在的信息,之后就全交给 LLM 做了 (最近发现如果要求LLM分析自己的输出,比如包含复杂度之类的信息,LLM往往可以给出质量更高的代码,本次对话也如是) <mark class="encrypted">28dK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6U0K9r3q4@1k6%4m8@1i4K6u0W2j5$3!0E0i4K6u0r3M7$3S2S2M7X3g2Q4x3V1j5$3z5r3q4X3z5r3b7^5x3g2)9J5k6r3t1J5y4U0S2Q4x3X3b7^5x3o6p5I4i4K6u0V1z5r3u0X3k6W2)9J5k6o6R3&6x3U0l9#2j5U0u0S2x3X3f1@1j5R3`.`.</mark> 直接跑 LLM 写出的程序就可以得到全部 470 组解: ```c // solve_fixed.c — 适用于你的情况:/etc/rc.d 存在;两种 devctl 位都尝试 #include <stdio.h> static const char *hexd = "0123456789abcdef"; static void try_bit(int bit) { // 从等式 v51 == v24 - 34 可得:8*d1 - d10 = 58 - bit int d1_candidates[2], d10_candidates[2], np = 0; for (int d1 = 0; d1 < 16; ++d1) { int d10 = 8*d1 - (58 - bit); if (0 <= d10 && d10 < 16) { d1_candidates[np] = d1; d10_candidates[np] = d10; if (++np == 2) break; } } if (np == 0) { printf("[bit=%d] 无解(8*d1 - d10 = %d 在 0..15 范围内不可达)。\n", bit, 58 - bit); return; } // 行和约束(每行 = 34): // R0: d1 + d3 + d4 = 34 // R1: d2 + d4 + d7 = 34 // R2: d3 + d5 + d9 = 34 // R3: d5 + d8 + d10 = 34 // R4: d6 + d7 + d8 = 34 // 变量:d1..d10(其中 d1,d10 由上式给出) long found = 0; for (int p = 0; p < np; ++p) { int d1 = d1_candidates[p]; int d10 = d10_candidates[p]; // 选自由变量的一个合理顺序 + 逐步推导其余变量,并做范围剪枝 for (int d3 = 0; d3 < 16; ++d3) { int d4 = 34 - d1 - d3; // R0 if ((unsigned)d4 > 15u) continue; for (int d6 = 0; d6 < 16; ++d6) { for (int d7 = 0; d7 < 16; ++d7) { int d8 = 34 - d6 - d7; // R4 if ((unsigned)d8 > 15u) continue; int d5 = 34 - d8 - d10; // R3 if ((unsigned)d5 > 15u) continue; int d2 = 34 - d4 - d7; // R1 if ((unsigned)d2 > 15u) continue; int d9 = 34 - d3 - d5; // R2 if ((unsigned)d9 > 15u) continue; // 所有 d 都在 0..15,则得到一个完整解 char key[32]; key[0]=hexd[d1]; key[1]=hexd[d2]; key[2]=hexd[d3]; key[3]=hexd[d4]; key[4]=hexd[d5]; key[5]=hexd[d6]; key[6]=hexd[d7]; key[7]=hexd[d8]; key[8]=hexd[d9]; key[9]=hexd[d10]; key[10]='a'; key[11]='s'; key[12]='a'; key[13]='s'; key[14]=0; // 额外:长度 ≤ 14 且末尾 "asas"(已满足) printf("[bit=%d] %s\n", bit, key); ++found; } } } } if (!found) { printf("[bit=%d] 遍历完候选也没解。\n", bit); } else { printf("[bit=%d] 共找到 %ld 把 key。\n", bit, found); } } int main(void){ try_bit(0); // /etc/rc.d 存在时,这个分支通常有解 try_bit(0x80); // 多跑一遍以防你的系统该位为 1(多数情况下这里会无解) return 0; } ```
登录后可查看完整内容
传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!!
收藏
・
0
点赞
・
1
打赏
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
wx_晨梦
期待更多优质内容的分享,论坛有你更精彩!
2026-7-16 08:48
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
1
)
L1F0
雪 币:
85
能力值:
( LV1,RANK:0 )
在线值:
发帖
2
回帖
4
粉丝
0
关注
私信
L1F0
2
楼
链接404了,能补一补,看一下吗
2025-10-3 13:31
0
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
只管出不管做
13
发帖
13
回帖
318
RANK
关注
私信
他的文章
[原创] KCTF2026 - 第三题 午时·永数囚笼 讨论
334
[原创] KCTF2025 - 第十题 涅槃,亦是新生 一血题解(Trace/爆破)
9477
[原创]KCTF2025 第七题 危局初现 题解 (一血属于LLM)
8707
[原创] KCTF2025 - 第八题 暗云涌动 题解 (vm题,任意读写 侧信道leak)
7850
[原创] KCTF2025 - 第四题血色试炼 题解
6548
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部