waniCTF 2020 writeup

waniCTF に参加しました。 https://wanictf.org/ 最近課題で忙殺されていて、ksnctf も解き終わっていないですが、ちょっと解けそうな問題が多そうだったため、参加してみました。 この CTF は初心者向けの CTF になっていて、ヒントが多めにもらえるやさしめの CTF です。 結果は 64 / 242 だったよう スコアの詳細 うーん、pwn が苦手ですね。reverse も苦手だと感じました。 Crypt Veni, vidi シザー暗号ですね。FLAG{…}の形式の文字列になっているため、F -> S のシフト数を考えます exclusive xor で…

ksnctf Q.18 usb flash drive

問題概要 zip ファイルが配布されており、展開すると img ファイルが見つかる。 調査してみる img ファイルをさらに展開してみると、3 つの画像ファイルとSYSTEMと書かれた隠しファイルが見つかった。 strings で FLAG 的な文字列を探したが画像ファイルに埋め込まれているわけではない。 file コマンドで img を調べてみると、 と出る。 とか、とかあり、それぞれ調べてみると「ブートセクターの一種」とかなんかとか出てくる。 windows のブートセクターが usb にインストールされてる?? ん? よくわからん? usb に img を入れて、usb から起動しよう…

ksnctf Q.31 KanGacha

問題の概要 出題ページには、問題ページへのリンクとソースコードが配布されていた。 問題ページをみると、「ガチャ」があった。 ソースコードを併せてみてみると、ボタンを押すとランダムに艦隊(の名前)がゲットできるというものだ。 ゲットした艦隊(の名前)の情報は、クッキーで管理されているようだが、クッキーの改竄を防ぐためにハッシュ関数で 署名をして、ページアクセス時にそのクッキーの値を検証している。 ハッシュ関数に使っているソルトがフラグとなっているようだ。 足掻き 最近自力で解けていないため、これは自力で解きたいと思い、1 日かけた。 結論をいうとダメでした… php の関数を調べまくり、ハッシ…

ksnctf Q.12 Simple Auth II

問題の概要 問題のページとソースコードが見られる。 問題ページはこんな感じで、ID と password 入力フォームがある。 適当に id, pass と指定して送信すると、同じ画面で 「Incorrect ID or password」 と表示された。 足掻き ソースコードも見てみると、問題通りのシンプルなログイン機構だった。 flag はデータベース内のデータのパスワードのようだ。 ログインがうまくできれば、flag としてそのユーザーのパスワードが表示される。 前回の問題に当たる「Q.32 simple auth」では、php の緩い比較「==」の仕様をつくことでフラグを入手できた…

ksnctf Q.26 Sherlock Holmes 70pt

問題の概要 問題ページへのリンクが張られている。 問題ページでは、シャーロックホームズの「ボヘミアの醜聞」の原文が載っている。 プロジェクトグーテンベルクから持ってきたようだ。 色々調べる なんかめんどくさそうだなと思いながら、とりあえず色々調べてみよう。 ぱっとみ普通の html っぽいが、ソースを見てみる。 特に変なところはないが、url をよく見ると index.pl となっている。 perl だ。CGI だな。 ディレクトリトラバーサルを試みると、index.pl のあるディレクトリのファイルが表示された。 すると、flag.txt がある。ほかには、「ボヘミアの醜聞」の素となると思…

ksnctf Q.15 Jewel

apk(android アプリ)の問題。 とりあえず、ctf で apk を扱うときどういうツールを使うのか調べて、それらを使って色々調べてみることに。 最終的に使ったツールたち apktool: apk を unzip するツール。AndroidManifest とか見れる jadx: jar をデコンパイルするツール dex2jar dex を jar に変換するツール すると簡単に java ソースコードがでてきた。 何やらデバイス ID を SHA256 でほにゃほにゃしているっぽい。 何やらデバイス ID の比較により、行われているっぽい。 特定のデバイス ID でしか表示されない…

ksnctf Q.16 mathI

これは物凄い桁の数字がいくつも並んでいるが、この変数の感じ、見覚えがある。 これはそう、cpawCTF で悩まされた RSA 暗号だ。 一度似た問題を解いているので、簡単だった。 過去に作った exploit をそのまま使う。 若干 python モジュールの関係で、モジュロ逆数周りで変更があったけど、本当にそのまま python スクリプトを流用して終わった。 モジュロ逆数の関数は以下のサイトからお借りしました。 晴耕雨読 | Python でモジュラ逆数を求める (modinv) https://tex2e.github.io/blog/crypto/modular-mul-invers…

ksnctf Q.32 simple auth

php のソースコードが見られる。 単純なログイン機構だが、脆弱性があるらしい。 30 分くらい試行錯誤してみたり、色々考えてみたが、全然わからん。 というわけで、かなり怪しい strcasecmp を調べる。 しばらく調べていると、このログイン機構、重要なのは ここらしい。 つまり、厳密でない比較。 要点 ` $_POST‘password’ ` これは、配列が入る可能性がある。 ここに配列を入れると、 これが null になるらしい。 そうなると、 の比較となるわけだが、これがなんと true となる。 は、オペランドを相互型変換して、比較をする。 は、型変換なしで比較する、というこ…

ksnctf Q.14

ksnctf Q.14 John これをヒント目的で見に来た人 John the ripper を調べなさい。 問題 問題ページには、なにやらログイン情報みたいなものがある。 ユーザー ID は user00 から user20 と、user99 だ。 ぱっとみログイン情報っぽいが、なんの情報かわからない。 よくよく見てみると、user99 のハッシュ文字列みたいなものが、よめるようになっている。 「Dictionary is here.」 とりあえず、この url を見てみる。 ( http にコロンが必要 ) すると、こんな感じで単語がひたすら並んでいる。 … 辞書攻撃かな。 なんだか大…

ksnctf Q.11

ksnctf Q.11 Riddle 難しかった。 IDA の使い方を覚えるのに時間がかかった。 FLAG の文字数まではわかったものの、その後進展できず。 write up からヒントをもらい、解き終えた。 重要だったのは、 入力を xor する処理 と 入力文字と FLAG を比較する処理 ctf みたいな、文字列を直接表示できないプログラムではよく使われる処理らしい。 感想 それにしても、pwn はやっぱり面白い。 そして、やっぱりめっちゃ難しい。 アセンブリから処理をイメージすることが難しい。 もうちょっと特訓を積みたい!