-
-
[原创] 看雪·2024 KCTF 大赛 第十题 试探 WriteUP
-
发表于: 2024-9-8 00:19 448
-
看雪·2024 KCTF 大赛 第十题 试探 WriteUP
一、开篇
趁着周末的闲暇时间,记录一下这次 KCTF 的 WriteUP~
二、初步分析
拿到题目后,经过简单的调试和分析,可以总结出整个程序的核心逻辑大致如下:
- 程序首先申请了一块内存,并将用户输入值和一段 shellcode 写入其中。
- 正常程序流程会启动一个线程
sub_140001530
,该线程会循环检测内存开头的值是否为特定值;如果值不符,则判断输入值错误。 - 程序通过线程池相关函数的回调机制执行 shellcode。
- shellcode 要求输入值为数字,且输入个数必须为偶数。
- shellcode 将输入值视作华容道的移动指令,要求最终的拼图结果符合特定的结构,才能判定输入为正确。(本质上是一个滑块拼图小游戏)
三、分析过程
我们重点对 shellcode 进行了分析。shellcode 中包含了大量的花指令,但由于这些花指令是定长的,可以通过模式匹配直接去除。
接下来,我们需要解出华容道的移动方式,将其转换为正确的输入。题目要求在 6 步之内完成拼图。
内置华容道初始状态:
0 | 1 | 2 | |
---|---|---|---|
0 | 00 | 01 | 03 |
1 | 05 | 02 | 06 |
2 | 04 | 07 | 08 |
目标特定结构:
0 | 1 | 2 | |
---|---|---|---|
0 | 01 | 02 | 03 |
1 | 04 | 05 | 06 |
2 | 07 | 08 | 00 |
四、总结
通过上述分析,我们可以推导出正确的输入。根据华容道的逻辑,正确步骤如下(特别感谢 T 神(ThTsOd)提供的步骤,这个华容道真没玩明白 )。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2024-9-8 00:22
被上学困难户编辑
,原因:
赞赏
他的文章
看原图
赞赏
雪币:
留言: