DASCTF2023暑假挑战赛部分Reverse

j1ya Lv5

Reverse

controlflow

整体属于ROP风格的控制流混淆

main函数没有成功标识

交叉引用dword_4043A8变量一共有三处,可以调试查看先后顺序

先^0x401

每一位+(i*i)

前十位不动,中间二十位^(i*(i+1))

每一位-i

每一位*3

前10位不动,中间20位两两交换

v3是密文

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
v3 = [
3279, 3264, 3324, 3288, 3363, 3345, 3528, 3453, 3498, 3627,
3708, 3675, 3753, 3786, 3930, 3930, 4017, 4173, 4245, 4476,
4989, 4851, 5166, 5148, 4659, 4743, 4596, 5976, 5217, 4650,
6018, 6135, 6417, 6477, 6672, 6891, 7056, 7398, 7650, 7890
]
m = 10;n = 0
d = ""
for i in range(10):
v3[m],v3[m+1]=v3[m+1],v3[m]
m+=2

for i in range(40):
v3[i]//=3
v3[i] += i
for i in range(10,30):
v3[i]^=(n*(n+1))
n+=1
for i in range(40):
v3[i] -= i*i
v3[i] ^= 0x401
d+=chr(v3[i])
print(d)
#DASCTF{TWpnemRuSTRkVzVsWVhOMmJqZzNOREoy}
  • 标题: DASCTF2023暑假挑战赛部分Reverse
  • 作者: j1ya
  • 创建于 : 2023-07-28 10:50:38
  • 更新于 : 2026-10-02 16:28:17
  • 链接: https://j1ya-22.github.io/2023/07/28/DASCTF2023暑假挑战赛部分Reverse/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
DASCTF2023暑假挑战赛部分Reverse