首页 > 代码库 > Pwnium CTF2014 – MatterOfCombination writeup

Pwnium CTF2014 – MatterOfCombination writeup

这道题是虽然只有75分,但是做出来的队伍却很少,我们队伍也没有做出来,这次是看到了0xAWES0ME 的解题思路后才有了这篇文章。原文地址可以点击看这里,英文的。

题目就是一张图片:

Steg75

在网上可以找到这个图片的原图,唯一的区别就是这6条线,通过Photoshop软件可以看到它们的起始点:

  1. (1,0)     (56,55)
  2. (57,0)     (112,55)
  3. (113,0)     (168,55)
  4. (169,0)     (224,55)
  5. (225,0)     (280,55)
  6. (281,0)     (336,55)

现在起始点有了,直接取相关的像素点来看看: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#! /bin/python
# coding: UTF-8
import Image
__author__ = ‘root‘
img_file = ‘Steg75.png‘
im = Image.open(img_file, ‘r‘)
im.load()
im_rgb = im.convert(‘RGB‘)
j = 0
while j < 6:
    n = 0
    while n < 56:
        c = im_rgb.getpixel((56*j+1+n,n))
        print "%d\t%d\t%d" % c
        n += 1
    j += 1
    print ‘------------------------------------------------------------------------------‘

可以得到如下的数据:

 
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
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
86 84 1
74 70 2
103 97 3
121 113 4
102 92 5
94 82 6
93 79 7
124 108 8
110 92 9
132 112 10
114 92 11
133 109 12
91 65 13
98 70 14
96 66 15
67 35 16
106 72 17
124 88 18
122 84 19
69 29 20
111 69 21
106 62 22
88 42 23
146 98 24
115 65 25
113 61 26
104 50 27
77 21 28
107 49 29
98 38 30
108 46 31
152 88 32
111 45 33
121 53 34
117 47 35
145 73 36
116 42 37
106 30 38
120 42 39
161 81 40
130 48 41
148 64 42
147 61 43
153 65 44
122 32 45
114 22 46
146 52 47
168 72 48
138 40 49
156 56 50
140 38 51
172 68 52
155 49 53
135 27 54
116 6 55
117 5 56
------------------------------------------------------------------------------
142 28 57
130 14 58
159 41 59
177 57 60
158 36 61
150 26 62
149 23 63
180 52 64
166 36 65
188 56 66
170 36 67
189 53 68
147 9 69
154 14 70
152 10 71
122 235 72
162 16 73
180 32 74
178 28 75
124 229 76
167 13 77
162 6 78
143 242 79
202 42 80
171 9 81
169 5 82
159 250 83
132 221 84
162 249 85
153 238 86
163 246 87
208 32 88
166 245 89
176 253 90
172 247 91
201 17 92
171 242 93
161 230 94
175 242 95
217 25 96
185 248 97
204 8 98
203 5 99
209 9 100
177 232 101
169 222 102
201 252 103
224 16 104
193 240 105
212 0 106
195 238 107
228 12 108
210 249 109
190 227 110
171 206 111
172 205 112
------------------------------------------------------------------------------
197 228 113
185 214 114
214 241 115
233 1 116
213 236 117
205 226 118
204 223 119
235 252 120
221 236 121
244 0 122
225 236 123
244 253 124
202 209 125
209 214 126
207 210 127
178 179 128
217 216 129
235 232 130
233 228 131
180 173 132
222 213 133
217 206 134
199 186 135
1 242 136
226 209 137
224 205 138
215 194 139
188 165 140
218 193 141
209 182 142
219 190 143
7 230 144
222 189 145
232 197 146
228 191 147
0 215 148
227 186 149
217 174 150
231 186 151
16 223 152
241 192 153
3 206 154
2 203 155
8 207 156
233 176 157
225 166 158
1 194 159
23 214 160
249 184 161
11 198 162
251 182 163
27 210 164
10 191 165
246 171 166
227 150 167
228 149 168
------------------------------------------------------------------------------
253 172 169
241 158 170
14 185 171
32 201 172
13 180 173
5 170 174
4 167 175
35 196 176
21 180 177
43 200 178
25 180 179
44 197 180
2 153 181
9 158 182
7 154 183
234 123 184
16 158 183
34 174 184
32 170 185
236 117 188
21 155 187
17 149 190
255 130 191
56 184 192
26 152 193
24 148 194
15 137 195
244 109 196
18 136 197
9 125 198
19 133 199
62 174 200
22 132 201
32 140 202
28 134 203
55 159 204
27 129 205
17 117 206
31 129 207
71 167 208
40 135 209
58 151 210
57 148 211
63 152 212
32 119 213
25 109 214
56 139 215
78 158 216
48 127 217
66 143 218
50 125 219
82 155 220
65 136 221
45 114 222
27 93 223
28 92 224
------------------------------------------------------------------------------
53 116 225
41 102 226
70 129 227
88 145 228
69 124 229
61 114 230
59 110 229
90 138 230
76 123 231
98 142 232
80 123 233
99 139 234
57 96 235
64 101 238
62 97 239
33 66 240
72 103 241
90 119 242
88 115 243
35 60 244
77 100 245
72 93 246
54 73 247
112 128 248
81 96 249
79 92 250
70 81 251
43 52 252
73 80 253
64 69 254
74 77 255
118 120 2
77 77 3
87 85 3
83 79 4
111 105 5
82 74 6
72 62 7
86 74 8
126 113 9
96 80 10
114 96 11
113 93 12
119 97 13
88 64 14
80 54 15
112 84 16
133 104 17
104 72 18
122 88 19
106 70 20
137 100 21
121 81 22
101 59 23
82 38 24
83 37 25
------------------------------------------------------------------------------
109 61 25
97 47 26
126 74 27
144 90 28
125 69 29
117 59 30
116 56 31
147 85 32
133 69 33
155 89 34
137 69 35
156 86 36
114 42 37
121 47 38
119 43 39
90 12 40
129 49 41
147 65 42
145 61 43
92 6 44
134 46 45
129 39 46
111 19 47
169 75 48
138 42 49
136 38 50
127 27 51
99 254 52
130 26 53
121 15 54
131 23 55
175 65 56
134 22 57
144 30 58
140 24 59
168 50 60
139 19 61
129 7 62
143 19 63
184 58 64
153 25 65
171 41 66
170 38 67
176 42 68
145 9 69
136 255 70
167 28 70
189 48 71
159 16 72
177 32 73
161 14 74
193 44 75
176 25 76
156 3 77
136 237 78
137 236 79
-----------------------------------------------------------------------------

rgb的b值有一定的规律,但是到这里我们就陷入迷茫了。

看了0xAWES0ME的文章才豁然开朗:将每一条线的r-b,然后换算成ascii,组成一个字符串,再根据字符串进行下一步的操作.

 
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
#! /bin/python
# encoding:utf-8
"""
@date: 2014-07-31
@description: stego 75 test py
"""
 
import sys
 
__author__ = ‘huangjacky‘
 
reload(sys)
sys.setdefaultencoding(‘utf-8‘)
 
 
def GetStrFromTxt():
    f = open(‘steg75.txt‘)
    n = 0
    s = ""
    for ff in f:
        ff = ff.strip()
        if not ff:
            continue
        if ‘--‘ in ff:
            n += 1
            print ‘%d : %s‘ % (n, s)
            s = ‘‘
        else:
            d = ff.split()
            r = int(d[0])
            g = int(d[1])
            b = int(d[2])
            x = abs(r - b)
            c = chr(x)
            s += c
 
 
def main():
    GetStrFromTxt()
 
 
if __name__ == ‘__main__‘:
    main()

最后输出的结果:

a

这六行当中可以看出来第一行是经过base64加密的,尝试解密一下:

b

这样就搞定了。

总结一下:

当初我们做题的纠结在所有数据连在一起的规律上面了,所以一直没有找到,第二就是,我们尝试r-b来换算ascii,但只是个别字符,没有全部列出来。所以做题的时候一定要把想法做下去!