首页
社区
课程
招聘
KCTF2023题目提交
2023-4-3 20:50 1273

KCTF2023题目提交

2023-4-3 20:50
1273

本题目以 <5.2.2 方案二> 参赛

团队名称 : 中午吃什么
团长QQ : 923169932

·
公开的用户名和序列号
User-Name : 4070382B95A4F0ED
Serial-Number : 47a62c6eb8a72031a27b89abc3d976f7
·

题目答案
User-Name : KCTF
Serial-Number : 35090e1336f1d1e872ba798256db1bfb
.
.
.
设计说明
一个Windows的CrakeMe,难度中上。
设计了一个简单的脚本解释器
脚本明文经过加密然后bin2hex转成数组存入全局变量

验证算法为
文本 = 用户名 + "KCTF2023"
文本 = 自定义异或加密(文本)
文本 = base64(文本)
文本 = 小写32位MD5(文本)
最后判断文本等于序列号则为成功

成功条件为
小写32位MD5(base64(自定义异或加密(用户名 + "KCTF2023"))) == 序列号

破解难点
有大量无效代码干扰,增加程序体积,有2个假验证算法干扰破解者,由于函数过大IDA F5会失败。
例如:if(xxx && 1 + 1 == 3) printf("Success")
例如:if(xxx && 1 + 1 == 3) printf("Error")

题目和源码均已上传附件,运行图如下:

·
加密前的脚本明文:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
延时(25)
控制台输出("                                           \n")
延时(25)
控制台输出("                  _oo0oo_                  \n")
延时(25)
控制台输出("                 o8888888o                 \n")
延时(25)
控制台输出("                 88" . "88                 \n")
延时(25)
控制台输出("                 (| -_- |)                 \n")
延时(25)
控制台输出("                 0\  =  /0                 \n")
延时(25)
控制台输出("               ___/`---'\___               \n")
延时(25)
控制台输出("             .'\.\|     |/./'.             \n")
延时(25)
控制台输出("            / \.\||  :  ||/./ \            \n")
延时(25)
控制台输出("           / _||||| -:- |||||- \           \n")
延时(25)
控制台输出("          | | \.\.\  -  /././ | |          \n")
延时(25)
控制台输出("          | \_|  ''\---/''  |_/ |          \n")
延时(25)
控制台输出("          \  .-\__  '-'  ___/-. /          \n")
延时(25)
控制台输出("        ___'. .'  /--.--\  `. .'___        \n")
延时(25)
控制台输出("     ."" '<  `.___\_<|>_/___.' >' "".      \n")
延时(25)
控制台输出("    | | :  `- \`.;`\ _ /`;.`/ - ` : | |    \n")
延时(25)
控制台输出("    \  \ `_.   \_ __\ /__ _/   .-` /  /    \n")
延时(25)
控制台输出("=====`-.____`.___ \_____/___.-`___.-'===== \n")
延时(25)
控制台输出("                  `=---='                  \n")
延时(25)
控制台输出("                                           \n")
延时(25)
控制台输出("             佛祖保佑 永无BUG              \n")
延时(25)
控制台输出("            看雪 KCTF2023年度赛            \n")
延时(25)
控制台输出("            出题战队:中午吃什么            \n")
延时(25)
控制台输出("                                           \n")
延时(25)
控制台输出("                                           \n")
 
延时(25)
控制台输出("请输入用户名:\n--> ")
文本变量_读取单行控制台输入($变量_用户名)
 
延时(25)
控制台输出("请输入序列号:\n--> ")
文本变量_读取单行控制台输入($变量_序列号)
 
假验证算法1($变量_用户名, $变量_序列号)
假验证算法2($变量_用户名, $变量_序列号)
文本变量_按长度跳转($变量_序列号, !=, 32, <标记_序列号长度不正确>)
 
文本变量_赋值变量($变量_临时文本, $变量_用户名)
文本变量_追加文本($变量_临时文本, "KCTF2023")
文本变量_加密_自定义异或($变量_临时文本)
文本变量_加密_BASE64($变量_临时文本)
文本变量_加密_MD5($变量_临时文本)
 
文本变量_相等跳转($变量_临时文本, $变量_序列号, <标记_匹配>)
跳转到标记(<标记_不匹配>)
 
设置标记(<标记_序列号长度不正确>)
延时(25)
控制台输出("error\n\n\n")
控制台命令("pause")
结束进程()
 
设置标记(<标记_匹配>)
延时(25)
控制台输出("Success GoodJob!\n\n\n")
控制台命令("pause")
结束进程()
 
设置标记(<标记_不匹配>)
延时(25)
控制台输出("error\n\n\n")
控制台命令("pause")
结束进程()

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2023-10-1 14:14 被kanxue编辑 ,原因:
上传的附件:
收藏
点赞0
打赏
分享
最新回复 (1)
雪    币: 32410
活跃值: (18730)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2023-8-28 11:01
2
0
         第十二题 深入内核
游客
登录 | 注册 方可回帖
返回