いろんなまとめ

IT技術系のことを気が向くままに書いていきます。勉強会の感想とか

CTF for Beginners in 長野 Write up

 

CTF for Beginners in 長野 CTF Write up

2017/05/27(土) 株式会社電算にてCTF for Beginersが開催され、参加してきました!

もっとも驚いたのは、運営のほとんどの方が学生だったこと。

院試を控えていたり、卒論発表を控えながらも準備をしてくださったそうです。

 

圧倒的感謝!

 

さて、本題。

CTFのWriteupを思い出せる限り書いていきます。

 

1.練習問題

問題を開くとフラグが表示され、送ればOK。

まぁ、接続確認って感じです。

 

2.てけいさん for ビギナーズ

100問の簡単な計算を行います。

間違えるとカウントが0に戻るので大変でした。

解説で即興のプログラミングできるか確認する問題だったとのこと。

確かにてけいさんで2000問とか来たらやってらんないですね。

3.for100

もらったパケットをwiresharkで開くとこんな感じ

f:id:Neko_no_me:20170530233417p:plain

 

何となしにhttpでフィルタリングしてみる。

なんか「flag(n).html」がいっぱいある。。。

f:id:Neko_no_me:20170530233218p:plain

一つ一つのTCPStreamを確認するとフラグが取れる。

f:id:Neko_no_me:20170530233221p:plain

 

4.for200

与えられたパケットwiresharkで開いて「http」でフィルタリングすると、「hidden.zip」とかいう怪しいファイルを発見。

Export Objectsでzipファイルを取得してみる。

f:id:Neko_no_me:20170530235111p:plain

unzipしてみるけど、zipファイルが壊れているとのこと。

f:id:Neko_no_me:20170530235118p:plain

 

、、、結論から言うと解けませんでした。

CTF後の解説によると、このzipファイルにパスワードがかかっており、そのパスワードを探すらしいです。

zipファイルの取得の仕方を間違えたのかもしれないので、この後いろいろ試してみようと思う。

5.for300

与えられたzipをunzipしようとするとエラーが出るので、binwalkで展開してみる。

展開すると「0.zip」、「3.bin」の二つのファイルが展開される。

stringsコマンドで3.binを見てみると「sercret.docx」という怪しいファイルが見える。。。

f:id:Neko_no_me:20170531000728p:plain

ここから先がどうにもできず、フラグを取れませんでした。

 

6.bin100

与えられたファイルを実行してみると、フラグは取れないよーと言われた。

f:id:Neko_no_me:20170531001101p:plain

とりあえずstringsコマンドで見てみる。

そしたら、あっさりフラグが見つかりました。

f:id:Neko_no_me:20170531001105p:plain

7.bin200

 Flagは「ctf4b{<Stage1>_<Stage2>}」とのこと。

まぁ、アセンブリを呼んできましょう。

f:id:Neko_no_me:20170531001453p:plain

、、、だけなんですが、勉強不足もあり正解のフラグが取得できませんでした。

 

8.bin200_2

与えられたファイルを実行しても、fileコマンドで確認してもなかなか糸口が見つけられませんでした。

資料を確認してやり直してみます。

f:id:Neko_no_me:20170531002434p:plain

9.bin300

与えられたファイルを実行してみると、Flagの入力を求められます。

しかし、時間がなかったためこの問題はほとんど手付かずでした。。。

f:id:Neko_no_me:20170531002735p:plain

10.web100

どんな問題だったか忘れてしまいましたが、解けました。

11.web200

これもどんな問題だったか忘れてしましたが、解けました。

12.web300

ディレクトリトラバーサルとSQLInjectionの合わせ技。

ディレクトリトラバーサルでlogin.phpの中身を見るところまではできたのですが、インジェクションがうまくいきませんでした。

最終的にSQLInjectionを行うSql文は以下の通り、、、だった気がする。

 

「SELECT username, password FROM users WHERE username= ('{$_GET["username"]}') AND password = ('{$_GET["password"]}')」

 

「()」があるのでつじつまが合うようにしてあげればOK。

 

まとめ

以上が自分ができたところまでのWriteupになります。

 

非常に充実した時間を過ごすことが出来ました。

今後もCTFを続けていこうというモチベーションを上げることが出来ました。

最後に、運営の皆様お疲れさまでした!