ksnctf Q.12

kusanoCTF Q.12 Hypertext Preprocessor 問題には url が掲載されている。 url を開くと、時間が表示されたサイトが開かれる。 なんかホラーサイトみたいな見た目で、放置したらドッキリ系のアニメーションが起こりそうな雰囲気があるが、とりあえずディベロッパーツールを開く。 特に js とかはなさそう。 ここで、url の末尾のファイル拡張子が php であることに気づく。 そういえば、つい最近 PHP でもっとも悪用された脆弱性というものを見たなと思い出した。 非常に簡単に任意コマンドが実行できてしまう脆弱性だ。 詳細については下の動画がある https:…

ksnctf Q.13

ksnctf Q.13 Proverb 問題には ssh 先のアドレスとパスワードが載っている。 「pwn かな」となんとなく思いながらサーバーにアクセスする。 サーバーに入り、とりあえず ls -la。 readme.txt と、他に flag.txt proverb.txt proverb の 4 つファイルがあった。 調べる ここで、これらのファイル全て、write 権限が無いことに気づく。 ディレクトリにも書き込み権限はない。 さらに read 権限も厳しくついているため、gdb  や hexdump で proverb を見れない。 さっぱりわからず、とりあえず proverb …

ksnctf Q.9

Ksnctf Q.9 Digest is secure! Digest 認証の問題。 問題ページに pcap が配布されているので、とりまダウンロードして悠々と WireShark で開く。 ぱっと見で、Digest 認証を通過して、二つのページを取得している模様。 Wireshark はすごくて、この pcap ファイルから html ファイルを生成することができる。 そうすると、3 つのファイルか吐き出された。 うち二つは 401 と、その後の 200 の普通の html ファイルで、もう一つが htdigest というファイルだった。 とりあえず 200 の html ファイルを開く。…

ksnctf Q.7

program.cpp というファイルが配布されている。 このファイルは空白とタブがごちゃまぜになった cpp プログラムに見える。 例に違わず僕のこれは cpp だと確信していたため、このプログラムをみて思った。 「くそ汚いな」 とはいっても、cpp は普通に実行できるはずだ。 そこで gcc でコンパイルして実行してみる。 $ ./a.out FROGThisiswrong:( ムカつく顔である。 いま思えばこの顔に全てを狂わされたのかもしれない。 この文字列の形式から FLAG の文字列に似ているため、ひたすら cpp デバッグした。 しかし、お察しの通り.cpp はフェイクだ。 僕は…

cpawCTFを解いた

cpawCTF を解きました。 https://ctf.cpaw.site/index.php 常設 CTF で、入門・初心者におすすめされるものとして有名な cpawCTF を解いた。 内容は簡単なものが多く、かなり楽しかったです。 CTF やったことない人は、確かに cpawCTF から入るべきだね.. (その人の技術力によるけど) CTF はやったことない状態で、全部解くのに合計で 12 時間くらいかかった。 (そのうち 6 時間は Level 3 の数学の問題で溶かした…数弱すぎる) 問題を解くと得点がもらえ、得点と達成順(?)でランキングがつく。特典は Max で 1890 点。 …

ksnctf Q.4

write up 見ずに頑張ろうと思ってまる 24 時間くらい費やしたけど、どうにも行き詰まり、最終的に、解答方針を見ることになってしまった。 最終的な方針 https://www.slideshare.net/tecsk07/20191005lt slideshare で公開されていた write up を参考にした。 objdump して、fopen を使っている。しかし、esp+418 が 1 になっている限りたどり着かないようになっている。 そこで、ここの処理をまるまる fopen の処理のところまで飛ばしてしまおうというわけ。 具体的には、フォーマット文字列攻撃を使って GOT を…

ksnctf Q.5

70pt だし、そんな難しくないでしょと思いながら挑戦。 最初、onion を意識しすぎて、Tor について調べまくってた。 当然有益な情報は得られない。 そこで、文字列をよく観察してみると、ascii の範囲ないであることに気付く。 色々調べていると、base64 って ascii の a~z + / = で構成さえてるらしいと知る。 試しに decode してみる。 一見変化していないように見えるが、調べてみるとちょいちょい変化している。 「これは…?」と思いながら何度もデコードしまくる。 そうすると、明らかに雰囲気の違う文字列が出現。 ちゃんと変換できている自信がなかったため、pyth…

ksnctf Q.6

これはログインまでいったものの、そこからが行き詰まったため、write up を見た。 そして、自分でまとめ直してみようとおもう。 これは、SQL インジェクションの問題だが、ただ と打てばよいものではない。 ブラインド SQL インジェクションという手法を使う。 これは、直接 SQL 実行結果をみることはできずとも、クエリを実行した後の様子を観察することで情報を取得するもの。 今回の問題ではまさに SQL の実行結果をみることはできない。 しかし、ログインできたかどうかがわかる。 この「ログインできたかどうか」を使って、FLAG の奪取を目指す。 今回普通に SQL インジェクションでロ…

ksnctf Q.3

ksnctf Q.3 色々調べてみると、にゃるこさんのコードが js としてちゃんと機能していることが分かった。 最初は1からコードを見やすい形に直して理解しようとしたが、めんどくさくなり別のやり方を模索。 そうしているうちに、かんまで一行区切りだということに気付いたため、コードをカンマ区切りで改行し、 各行を実行して様子を調べることにした。(chrome のディベロッパーツールを使用) そうすると、ひときわ長い行があり、それを実行すると utf-8 の文字列であることが分かった。 \u0030 みたいなやつ。これを変換機にかけると見やすい js が出現。 これを読みといていく。 全体のコー…