taskctf22 writeup(編集中)

task4233さん主催のお誕生日CTFであるtaskctfに参加しました。
いざやろうと思ったらパスワードも登録したメアドも思い出せず、結局新しく登録しなおすという情報管理能力の甘さを思い知らされるスタートとなりましたが、なんだかんだ楽しかったです。
メモしながら解いていったので、writeupと呼ぶにはお粗末なものですがひとまずその状態で公開します。
追々綺麗にしていくのでお許しください。
(UECTFのほうも忘れてないですよ)

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">taskctfのコンテストページを公開しました！<a href="https://t.co/SNp6cbxUwy">https://t.co/SNp6cbxUwy</a><br><br>taskctfは初心者〜中級者向けの趣味CTFです<br>今年は12/3(土) 0:00 JST 〜23:59 JSTの開催になります<a href="https://twitter.com/hashtag/taskctf?src=hash&amp;ref_src=twsrc%5Etfw">#taskctf</a> <a href="https://t.co/T3X39bHnSb">https://t.co/T3X39bHnSb</a></p>&mdash; task4233 (@task4233) <a href="https://twitter.com/task4233/status/1593237651616059392?ref_src=twsrc%5Etfw">November 17, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


また、今回は主催者自らwriteupを公開してくださっています。単純なwriteupだけでなく、作問意図も含めて公開してくださっているのは珍しいなと感じました。CTF初心者の私にとっては用語を知るきっかけにもなったのでありがたかったですね。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">taskctfの作問者writeupと振り返り記事を公開しました。<br><br>taskctf22 運営の振り返り<a href="https://t.co/9ZMx0YooT9">https://t.co/9ZMx0YooT9</a><br><br>taskctf22 作問者writeup<a href="https://t.co/Tp7ObcvIJC">https://t.co/Tp7ObcvIJC</a><a href="https://twitter.com/hashtag/taskctf?src=hash&amp;ref_src=twsrc%5Etfw">#taskctf</a></p>&mdash; task4233 (@task4233) <a href="https://twitter.com/task4233/status/1599429828624936961?ref_src=twsrc%5Etfw">December 4, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

# 環境
* Ubuntu 22.04.1 LTS
* Python 3.8.10

# 1 : welcome
## 1-1 : welcome
2019のwriteup探してくるだけ

# 2 : misc
## 2-1 : ransomware
シェルスクリプト、わけわからん文が冒頭にあってそれをbase64で復号してパイプ渡しでpython実行してるっぽいのでとりあえず先頭のわけわからん部分だけ復号してみる
ビンゴ。pythonのコードになった。
encrypted += chr(ord(ch) ^ key)
この逆をやればええんやな
keyがほしいのでc2サーバーのURLにアクセスしてみる
できねえ
a^bはaとbの排他的論理和
先頭はtaskctfのtなのでord("t")=116であることを使ってkeyの逆算を試みる
とりあえず２進数にする
おそらくkeyは17772
でもってencryptに対してkeyで排他的論理和のビット演算かければ戻るはず
あってた

```python:decrypt.py
with open("./taskctf_flag.txt.encrypted") as f:
    encrypted=list(f.readline())

encrypted_ord=[ord(c_enc) for c_enc in encrypted]

decrypt="".join([chr(i ^ 17772) for i in encrypted_ord]).replace("\n","")

print("decrypt:",decrypt)
```

# 3 : osint
## 3-1 : ramen
ラーメンの画像。場所探せとのこと。美味しそう。
exiftool確認したけどない。位置情報入ってるパターンかと思ったんだけどな。
gogleで画像検索かける


# 4 : web

# 5 : tutorial
## 5-1 : submit_flag
コピペして出すだけ

## 5-2 : just_googlr_it
base64で暗号化されたtxtファイルくるからコマンドで復号

#### 参考サイト
・[base64 コマンド | コマンドの使い方(Linux) | hydroculのメモ](https://hydrocul.github.io/wiki/commands/base64.html)
・[【Linux】base64コマンドで暗号化と複合化を行う](https://syutaku.blog/linux-cmd-base64/)


## try_python
txtファイルに書かれた数字の総和を求める
pythonでそれ用のコード書く

```sum.py
#memo---------
#txtファイルの数字を読み込んで総和求める
#-------------------
#nums_int=[]#txtファイルから数字を読んで格納するリスト

with open("./numbers.txt") as f:
    data=f.readlines()
    nums=data[0].split()#配列内でデータを区切る
    nums2=data[0].split(" ")#こっちでやると長さが500になって末尾に空白入る
    nums_int=[int(num) for num in nums]
    print("sum:",sum(nums_int))
```
#### 参考サイト
・[Pythonでファイルの読み込み、書き込み（作成・追記）| note.nkmk.me](https://note.nkmk.me/python-file-io-open-with/)
・[Pythonでテキストファイルの数値を読み込む - なるぽのブログ](https://yu-nix.com/archives/python-read-number-in-text-file/)