今天你 RE 了嘛?


[GUET-CTF2019]number_game | 二叉树,数独

先查壳 然后运行看一下

image-20230224155712720

image-20230224155759651

然后拖入ida64分析

image-20230224155850454

跟进4006D6

image-20230224160140869

但是嘞 输入啥都Wrong

搞不懂

image-20230224160220692

跟进4007583

image-20230224160044240

跟进400807

image-20230224160244450

跟进400881

image-20230224160449284

跟进400917

可以提取出来sudoku

1
14#2330#1#0#23##3##042##1

然后 5*5 知道原理直接手解

这儿给出手解的答案

0421421430

image-20230224160611320

然后我的解题方法是动调出output

顺便看下那个Wrong为啥一直触发

image-20230224161238555

发现过不了是因为 要输入10个0-4的数

az 哈哈哈 Orz

我输入的0-9

待会用之对应sudoku

就能够得到flag

image-20230224162140973

1
OUTPUT = 7381940526

再步过 得到sudoku填充后的数据

对应关系

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# --> 0421421430
对应
0 7
4 3
2 8
1 1
4 9
2 4
1 0
4 5
3 2
0 6
#然后按 0-9排序即为flag

#1134240024

flag{1134240024}

提交 过啦

总结

这题挺好的

sudo + 二叉树

其实理解两个概念很简单的

这边呢 我是动调解的

很方便

Orz

[ACTF新生赛2020]Universe_final_answer - z3

查壳 运行

image-20230224163329142

image-20230224163404980

直接拖入ida64 分析

image-20230224164017799

跟进860 wow 解方程

那太简单了

image-20230224164048184

贴exp

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
from z3 import *

s = Solver()
v1 = Int('v1')
v2 = Int('v2')
v3 = Int('v3')
v4 = Int('v4')
v5 = Int('v5')
v6 = Int('v6')
v7 = Int('v7')
v8 = Int('v8')
v9 = Int('v9')
v11 = Int('v11')

s.add(-85 * v9 + 58 * v8 + 97 * v6 + v7 + -45 * v5 + 84 * v4 + 95 * v2 - 20 * v1 + 12 * v3 == 12613)
s.add(30 * v11 + -70 * v9 + -122 * v6 + -81 * v7 + -66 * v5 + -115 * v4 + -41 * v3 + -86 * v1 - 15 * v2 - 30 * v8 == -54400)
s.add(-103 * v11 + 120 * v8 + 108 * v7 + 48 * v4 + -89 * v3 + 78 * v1 - 41 * v2 + 31 * v5 - (v6 * 64) - 120 * v9 == -10283)
s.add(71 * v6 + (v7 * 128) + 99 * v5 + -111 * v3 + 85 * v1 + 79 * v2 - 30 * v4 - 119 * v8 + 48 * v9 - 16 * v11 == 22855)
s.add(5 * v11 + 23 * v9 + 122 * v8 + -19 * v6 + 99 * v7 + -117 * v5 + -69 * v3 + 22 * v1 - 98 * v2 + 10 * v4 == -2944)
s.add(-54 * v11 + -23 * v8 + -82 * v3 + -85 * v2 + 124 * v1 - 11 * v4 - 8 * v5 - 60 * v7 + 95 * v6 + 100 * v9 == -2222)
s.add(-83 * v11 + -111 * v7 + -57 * v2 + 41 * v1 + 73 * v3 - 18 * v4 + 26 * v5 + 16 * v6 + 77 * v8 - 63 * v9 == -13258)
s.add(81 * v11 + -48 * v9 + 66 * v8 + -104 * v6 + -121 * v7 + 95 * v5 + 85 * v4 + 60 * v3 + -85 * v2 + 80 * v1 == -1559)
s.add(101 * v11 + -85 * v9 + 7 * v6 + 117 * v7 + -83 * v5 + -101 * v4 + 90 * v3 + -28 * v1 + 18 * v2 - v8 == 6308)
s.add(99 * v11 + -28 * v9 + 5 * v8 + 93 * v6 + -18 * v7 + -127 * v5 + 6 * v4 + -9 * v3 + -93 * v1 + 58 * v2 == -1697)
print(s.check())
key = s.model()
print(key)

key = [70, 48, 117, 82, 84, 121, 95, 55, 119, 64]
flag = ''

for i in range(len(key)):
flag += chr(key[i])
print(flag)
#F0uRTy_7w@

运行 输入F0uRTy_7w@

image-20230224164309010

flaga{F0uRTy_7w@_42}

提交一下 过啦

总结

这道题呢 好像比上一题还简单

就考查z3

当然因为我没分析加密

好的 本期结束

感谢观看

Orz