본문 바로가기

CTF

[SCTF 2018] dingJMax

main 보면 윈도우 창을 만들고 여러 rule을 넣는다.


앞에서 "qN7BuRx4rElDv84dgNaaNBanZf0HSHFjqOvbkFfgTRg3r" 라는 임의의 Flag 값을 넣어두고 이 부분에서 리듬게임 입력값에 따라 연산을 진행한다.


이 부분을 보면 특정 연산이 v16와 같을 경우 반복문을 도는데 이 코드의 의미는 리듬게임 1칸(4줄) 이 내려오게 해주는 부분이다.

또한 밑 부분에서 누른 타이밍에 따라 perfect, great, miss 로 나뉜다.

처음엔 코드 제데로 안보고 perfect만 나오게 코드수정하고 점수 채워봤으나 역시 안됐다..

또한 버튼을 누를 때 마다 플래그가 바뀌는 장면을 볼 수 있는데, 사실 Flag에 영향을 미치는 요소는 딱 2가지다.

perfect(타이밍), ball의 순서

즉 해당 리듬게임을 무조곤 perfect로만 ball이 내려오는 순서대로 버튼을 눌러 만점을 획득하면 정상적인 FLAG가 나올 것이다.

메인 밑부분에 보면 usleep 함수가 ball이 내려오는 시간을 set하고 있는데 이부분에서 굉장히 갈등을 하였다.

일단 usleep을 느리게 조정하고 게임을 시작해봤으나 답답함과 지루함을 이겨내지 못하는 바람에..(사실 시간 늦췄는데도 타이밍을 못맞춤)

플래그 연산 루틴을 구현하고 리듬게임 칸을 dump 뜬 후에 타이밍 맞춰주는 식으로 코딩해서 풀었다


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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
ball = ['u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@',  # djngJMax line 19 padding
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''4"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''4"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''4"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''4"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''4"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''4"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''4"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''4"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''4"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        '4"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        '2"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        '3"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@''4"@''u"@''u"@''u"@''1"@''u"@''4"@''u"@',
        '1"@''u"@''3"@''u"@''1"@''u"@''2"@''u"@''1"@''u"@''1"@''u"@''1"@''u"@''2"@''u"@',
        '1"@''u"@''3"@''u"@''1"@''4"@''1"@''3"@''1"@''2"@''1"@''2"@''1"@''3"@''1"@''4"@',
        '3"@''2"@''1"@''u"@''4"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''4"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        '2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''4"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''1"@''u"@''4"@''3"@''u"@''u"@''2"@',
        'u"@''u"@''u"@''u"@''u"@''1"@''u"@''3"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@''2"@',
        'u"@''u"@''u"@''u"@''u"@''2"@''4"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''2"@''u"@''1"@''u"@''u"@''2"@''u"@''u"@''u"@',
        'u"@''4"@''u"@''u"@''1"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''4"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''2"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''4"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''2"@''u"@''1"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        '2"@''u"@''u"@''u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''3"@''2"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''4"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''4"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''4"@''1"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''1"@''1"@''2"@''u"@''3"@''u"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@',
        'u"@''4"@''u"@''4"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''1"@''u"@''u"@''3"@''3"@''1"@''u"@''u"@''u"@''4"@''3"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@''u"@''u"@''u"@''2"@''u"@''4"@''u"@',
        'u"@''u"@''u"@''1"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''2"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''1"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''3"@''u"@''u"@''3"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''4"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''4"@''2"@''u"@',
        'u"@''u"@''3"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''3"@''u"@''2"@''u"@''u"@''u"@''u"@''1"@',
        'u"@''1"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''4"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''2"@''u"@''1"@''u"@''u"@''u"@''u"@''4"@''1"@''u"@''4"@''u"@''u"@',
        'u"@''u"@''u"@''3"@''u"@''u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''4"@''u"@''u"@''u"@''u"@''u"@''4"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''4"@''u"@''u"@''u"@''u"@''u"@''1"@',
        'u"@''4"@''2"@''u"@''u"@''3"@''u"@''4"@''u"@''u"@''u"@''4"@''2"@''u"@''u"@''u"@',
        'u"@''3"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''4"@''1"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@''u"@''u"@''u"@''2"@''4"@''2"@''u"@''u"@',
        'u"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''1"@''u"@''u"@''3"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''2"@''u"@''u"@''4"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''2"@''2"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''4"@''u"@',
        'u"@''u"@''4"@''u"@''u"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@',
        'u"@''u"@''3"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''2"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@''u"@''u"@',
        '2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''2"@',
        'u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@',
        '2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''1"@''u"@''u"@''u"@''3"@',
        '1"@''u"@''u"@''3"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''2"@''u"@''u"@''3"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''3"@''u"@''u"@''u"@''4"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        '1"@''1"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''4"@''u"@''u"@''u"@''u"@''1"@''4"@',
        'u"@''4"@''1"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''4"@''1"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''3"@''u"@''u"@''1"@',
        'u"@''u"@''4"@''u"@''4"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@',
        'u"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''4"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''4"@''u"@''4"@''u"@''u"@''u"@',
        '1"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''4"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        '1"@''u"@''u"@''u"@''u"@''u"@''4"@''u"@''u"@''3"@''1"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''3"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''4"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@''u"@''u"@''4"@''u"@',
        'u"@''u"@''u"@''4"@''u"@''u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''1"@''3"@''4"@''u"@''1"@''u"@''u"@''u"@''u"@''4"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''2"@',
        'u"@''u"@''2"@''u"@''u"@''4"@''4"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''3"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''4"@''u"@''u"@''u"@''u"@''u"@''u"@''3"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@''u"@''1"@''u"@',
        'u"@''u"@''u"@''u"@''2"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        '3"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''1"@''u"@''u"@''u"@''u"@''1"@''2"@',
        'u"@''u"@''u"@''u"@''4"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''3"@''u"@''u"@''u"@''u"@''4"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@''u"@',
        'u"@''u"@''u"@''u"@']
'''
1 : d
2 : f
3 : j
4 : k
'''
flag = bytearray('qN7BuRx4rElDv84dgNaaNBanZf0HSHFjqOvbkFfgTRg3r')
dword_60756C = 0x40
byte_607588 = 0
byte_607568 = 0
byte_6075A0 = []
 
= bytearray('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_!')
for i in range(len(s)):
    byte_6075A0.append(i)
 
 
def sub_401C50(a1):
    for i in range(dword_60756C):
        if a1 == s[i]:
            return i
    return 0xFFFFFFFF
 
 
def sub_401C9A(a1):
    global byte_607588
    global byte_607568
    v3 = 0
    for i in range(a1):
        byte_607588 = (byte_607588 + 1) % dword_60756C
        byte_607568 = (byte_607568 + byte_6075A0[byte_607588]) % dword_60756C
        v1 = byte_6075A0[byte_607588]
        byte_6075A0[byte_607588] = byte_6075A0[byte_607568]
        byte_6075A0[byte_607568] = v1
        v3 = byte_6075A0[(byte_6075A0[byte_607588] + byte_6075A0[byte_607568]) % dword_60756C]
    return s[v3]
 
 
def sub_401DB8(a1, a2):
    v2 = sub_401C50(a1)
    return s[sub_401C50(a2) ^ v2 % dword_60756C]
 
 
def sub_400C5E():
    v4 = len(flag)
    for i in range(v4):
        v1 = sub_401C9A(1)
        flag[i] = sub_401DB8(flag[i], v1)
 
def main():
    idx = 0
    for i in range(42260):  # 1 ball is 0x30c
        if i == 20 * ((0xCCCCCCCCCCCCCCCD * i >> 64>> 4):
            if ball[idx][0== '2':
                sub_401C9A(102 * i) #f
                sub_400C5E()
                print flag
 
            elif ball[idx][0== '3':
                sub_401C9A(106 * i) #j
                sub_400C5E()
                print flag
 
            elif ball[idx][0== '4':
                sub_401C9A(107 * i) #k
                sub_400C5E()
                print flag
 
            elif ball[idx][0== '1':
                sub_401C9A(100 * i) #d
                sub_400C5E()
                print flag
 
            idx += 1
 
if __name__ == "__main__":
    main()
 
#I_w0u1d_l1k3_70_d3v3l0p_GUI_v3rs10n_n3x7_t1m3
cs

'CTF' 카테고리의 다른 글

YISF 2018 예선 Write up  (1) 2018.08.16
[ISITDTU CTF 2018] write up  (0) 2018.07.29
[RCTF 2018] cpushop  (2) 2018.05.22
[RCTF 2018] simple vm  (4) 2018.05.21
[ASIS CTF 2018] Density  (0) 2018.05.18