プロジェクト

全般

プロフィール

CTF Writeup SECCON 令和CTF » 履歴 » バージョン 1

kanata, 2025/04/13 15:29

1 1 kanata
# CTF Writeup SECCON 令和CTF
2
3
SECCON 令和CTFがありました。
4
5
{{rawhtml(<blockquote class="embedly-card"><h4><a href="http://score-reiwa.seccon.jp/">SECCON 令和CTF</a></h4><p>null</p></blockquote><script async src="//cdn.embedly.com/widgets/platform.js" charset="UTF-8"></script>)}}
6
7
{{toc}}
8
9
# 結果&感想
10
11
簡単に言うとダメだった。1問くらい…1問解きたかった悔しい…
12
以下、反省文
13
14
# Misc 零は?
15
16
サーバにncで繋ぐと方程式が出てくるみんな大好き計算問題
17
100回計算が必要のようだ
18
19
```
20
$ nc zerois-o-reiwa.seccon.jp 23615
21
[1/100]
22
0=12-?
23
?=12
24
[2/100]
25
26
27
28
```
29
30
それで、作ったシェルスクリプトが以下
31
これ系問題は、昔作った類似問題のソルバを使い回しができて好き
32
33
方程式なのだけれど、正しい値を求めるためにxの値を1個ずつ増やす総当たり方式でつくった
34
35
これでいけそう…だと思ってた(実際、これで98問目までいった)
36
37
```bash
38
39
#!/bin/bash
40
41
exec 5<>/dev/tcp/153.120.18.15/23615
42
43
for I in {1..101}
44
do
45
  cat 0<&5>test.txt &
46
    sleep 3
47
    pkill cat
48
    Q=`cat test.txt|awk -F= '{print $2}'`
49
    echo Debug [${I}] $Q
50
    C=0
51
    while :
52
    do
53
      if [ 0 == `echo $Q|sed s/\?/$C/g |bc` ]
54
      then
55
        ANSWER=$C
56
        break
57
      fi
58
      : $((C++))
59
    done
60
    echo ${ANSWER} >&5
61
    echo Debug [${I}] $Q answer is $ANSWER
62
done
63
64
exit 0
65
```
66
67
ただ98問目…
68
69
```
70
[98] 17*53-23+23+60*92-59+38*34-19-63+39*5+71-67*75+39*4-97+72*24-60-80+41*8+81*40-3+33*84-16+7*5-28-96*78+48+12*89-45+77*74-29-80+75*37*56+51-43*33+78-25+86-38*59+4-58*65*7+19-49+26*45-25+67*9-90-83+12*99-33+4*88*64+2-31*32+79-87+77*25-50+56-4*28*28+8-82+33-18*26+41*5-58-8*35+79-4-?
71
```
72
73
これ、答えは 157961 なんだけど、総当たりで計算しているとタイムアップしちゃう。。
74
あぁこれシェルスクリプトの処理速度の限界かしらと思ってpythonで書き直そうとして無駄に時間を溶かしてしまった
75
76
よくよく考えると、最後が -? のパターンは総当たりすることなく自明なので、個別に処理を書けば回避できたと思う。惜しい。
77
78
79
# Forensic 新元号発表
80
81
pdfが与えられて中身がこれ
82
83
![20190430_forensic1.jpg](20190430_forensic1.jpg)
84
85
あぁ~伝統のQRコードが見えますねぇw
86
87
binwalkで調べる
88
89
```
90
$ binwalk newera.pdf
91
92
DECIMAL       HEXADECIMAL     DESCRIPTION
93
--------------------------------------------------------------------------------
94
0             0x0             PDF document, version: "1.5"
95
523           0x20B           Zlib compressed data, default compression
96
1322          0x52A           Zlib compressed data, default compression
97
8552          0x2168          Zlib compressed data, default compression
98
9827          0x2663          JPEG image data, JFIF standard 1.01
99
9857          0x2681          TIFF image data, big-endian, offset of first image directory: 8
100
52646         0xCDA6          JPEG image data, JFIF standard 1.01
101
52676         0xCDC4          TIFF image data, big-endian, offset of first image directory: 8
102
65317         0xFF25          Zlib compressed data, default compression
103
65788         0x100FC         Zlib compressed data, default compression
104
78688         0x13360         Zlib compressed data, default compression
105
```
106
107
それで画像を取り出す(binwalk使って取り出そうとしたけど上手くいかなくて、めんどくせぇddだ!ってなった)
108
109
```
110
$ cat newera.pdf | dd bs=1 skip=9827 >1.jpg
111
```
112
113
![20190430_forensic2.jpg](20190430_forensic2.jpg)
114
115
おー見えた見えた。中央が令和で白抜きされているけど右半分のデータ部は生きてそうだからこの状態でも読めるかなと思ってた
116
117
[QRazyBox](https://merricx.github.io/qrazybox/)で調べる
118
119
>このWebサービを使えばQRコードが結構破損してても読めるよ!
120
121
![20190430_forensic3.jpg](20190430_forensic3.jpg)
122
123
あぁ~微妙に…微妙にフラグが見える…でタイムアップ(眠みがすごい)
124
125
他の方のwriteupを見ると、白抜きされた令和を埋める画像が入っていたみたいだから、それを合成すればいける気がしますね。。