結果は44位 (国内 8位)でした。
Pattern Lock(1)
絶対既に考えてる人がいるだろうなあと思ってググったらやはり既に考えてる人が居た -終-
Pattern Lock(2)
ちょっと特殊な巡回セールスマンなのでbitDP。O(N^3 * 2^N)(N:点の数)ぐらいだったと思う。終了。
色々試すと連続する元の文二文字によって対応する暗号の値が変わる、最初の一つは特別(文字の長さと頭文字によって決まる?)ということがわかる。
最初の一つが謎だが、どうせMMA{hogehoge}なので気にしないことにした(爆)
ではどのような規則で変わっているのかということを知りたい気持ちになるが、二文字の暗号化後の値の差だったり一桁目の和(?)だったりで謎。
連続する2文字と暗号化後の値はどうやら一対一対応しているっぽいので、"a"+(英大文字/英小文字/0-9/{/}から二つとって並べたもの)を全部(64^2通り)サーバーに投げつけて結果を観察するスクリプトを書いた。
途中でサーバーに蹴らたりせんかなあと怯えながら待ってたら無事d["暗号の値"]="平文二文字"の辞書が完成したのでそれを使って復号スクリプトを書いた。
Pythonで得たhtmlをいじるいい経験になった(こなみ)
Login as admin!
自明なBlind SQL問 使ったコードはこちら→(ここにコード貼ろうと思ったけど別問題のために使って上書きしてしまった)
Splitted
Partial Content な HTTP通信をしている pcap ファイルが与えられる。
Wireshark の Export Object をすると断片化された flag.zip が出てくる。
あとはヘッダの Content-Range 見ながら手作業で重ねる。
展開すると psd が出てきたので GIMP で開いて終了。
How to use?
ちょっとググるとdumpbin.exeで関数の正しい呼び出すときの名前(?)がわかるんやでみたいな記事を発見したので試す。 dumpbin.exe /exports howtouse.dll。
試すと"?fnhowtouse@@YAHH@Z"で呼び出せばいいということがわかるので呼び出す。
あとは関数を呼び出して色々試したらnを引数として与えるとflagのn番目の文字のアスキーコードを返す関数のような気がしてきたので、全部出力して文字に直したらflagになった。
$hash(S[0..i]) = (577 \times hash(S[0..i-1]) + $ i文字目のASCiiコード $)\ \% \ (10^{15}+37)$
みたいな感じでハッシュが先頭の文字から順番に計算されている
ちなみに出てきたのは
zmgxzdinfufkkcfdsxhrdvgyvfloyvJWPSGNENOQAWYAZEZGSKJIJDPCVAEW
Uploader
/<\?|php/を全て消去するアップローダがある。(正規表現はcase-sensitiveであることに注意)
PHPは <script language="PHP"> ~~ </script> というタグでも実行できるので、これで突破。適当にコマンド実行したら /flag というファイルが有ることがわかり cat して終わり。
stream...
バイナリが落ちてきて中身を見るとpcapっぽいのでWiresharkで見る。
application/x-mms-framed という Windows系のストリーミング通信であることが分かる。
Export Objectでデータを抽出できた。(Wiresharkは神)
バイナリファイルで WMV の Object ID の所までヘッダをtrimすると断片的なWMVが完成。
それを ffmpeg に投げたら動画が復元された(ffmpegは神)
stego write upとかで検索していたら「フィルターをかけたらflagが出てきた」みたいな記事が散見されたのでそれかなあと見当をつける。
もっと検索するとStegsolve.jarとかいうお便利ツールが見つかったのでそれで色々なフィルターを試す。
色々フィルターを試したらflagが出てくるものがあった。
無敵最強株シュミレーター ->https://gist.github.com/yosupo06/904cc5d9f914e8ac482b














