CTF for Beginnersをやってみた
CTF forCTF for Beginnersの自分のやったことを今更ながら書いてみる。
最初に解いたのは、miscのWelcomeってやつ。CTF4B毎度おなじみのiRCにフラグが置いてあるやつですね。これはすぐ解けそう。
次に手をつけたのは、WebのRamenってやつ。URLを踏むとModern Ramenという名前のページが出てくる。とりあえず全体を眺めたら検索できる場所があったので、まあこれはSQLインジェクションだろうなと思いながら、シングルクォートを入れると
Fatal error: Uncaught Error: Call to a member function fetchAll() on boolean in /var/www/web/public/index.php:11 Stack trace: #0 {main} thrown in /var/www/web/public/index.php on line 11
と出てくるので、それであるとわかる。そこで、まずカラム数のチェックのために、
' UNION SELECT null, null, null ,null;
と挿入すると、上と同じエラーが発生する。そこでnullの数を減らしていくと、
UNION SELECT null, null;
でエラーが発生しなくなったので、カラム数が2つであるとわかる(もともと出ている店員の情報を見たら自明だった気もする)。あとは少しヤンキーではあるが、
' UNION SELECT flag, flag FROM flag --
でフラグゲット。本当はテーブル名も取得すべきだったけど、INFORMATIONなんちゃらって入力するのが面倒だったのはナイショの話。
次に手をつけたのは、Katsudonってやつ。フラグは以下にあります。というURLがあったので、まずそこに移動する。すると、謎の文字列が出てきたのでとりあえずbase64でデコードしてみたら、解けてしまった。本当はこれは想定解ではないらしく、あとで問題が追加された。
次に手をつけたのは、ReversingのSeccompareってやつ。Linuxの実行ファイルを渡されるが、自分はOS Xなので動かさずにgobjdump -Sでバイナリ解析をする。
mainをとりあえず見ていると、上のような部分が見つかる。これは1バイトずつスタックにmoveして、strcmpをしているのだとわかる。そこで、Cyberchefを使って元に戻すとフラグをゲット。これぐらいなら自分でもバイナリ解析できた。
次に手をつけたのは、CryptoのSo tiredっていうやつ。なんも考えずに開こうとしたら、その時にファイルのサイズが異常に大きいことに気付く。ともあれ、とりあえず開くと、一番最後に== という文字があることに気付く。そこでbase64であるとわかりデコードする。すると、78 9cという文字がヘッダーにあることがわかる。それでググると、zlibであることがわかるので展開する。するとまたbase64が出てくるので、これが続くと思い、ctf4b という文字が出てくるまでループさせるとフラグをゲットできた。
COBOLを書いてみた
就活やら卒論やらで忙しすぎてCTFとかやる時間が全然なかったけど、社会人になったので、仕事終わってからなら時間があるので少しずつやっていきたい。
会社でたまにCOBOLを見る機会があるらしいので、ちょっとCOBOLを書いてみた。導入はどこのサイト見ても書いてあるので、そこは割愛する。というわけで書いてみた。hello worldのプログラムもその辺にプログラム自体は転がってるので、割愛するが、個人的に躓いたことを書いておく。ちなみに、記述方法には正書法と自由書式というものがあり、正書法が昔からの書き方、自由書式がそのあと導入された書き方である。なので、ここからは正書法での話がメインとなる。
まずコーディング制約として、前7文字はプログラムを書けない。なぜなら、前6文字は行番号が書かれ(空白でも良い)、7行目はその行の区分コード(空白ならプログラム、アスタリスクならコメントなど)が書かれるからである。これは、昔プログラムをコーディングシートみたいなものに手書きをしていたからで、1行単位でパンチカードに転写していたからである。自由書式ではそれらはもう気にしなくて良いので1文字目からプログラムを書くことができる。
次に各行の末尾にはピリオドをつける。これがないと多分コンパイラが困るからだと思われる。if文だとそれ周りでバグを踏みそうみたいな記事を見かけてたので、いろいろ面倒くさそう(?)
実際にもうちょい書いてからわかったことをまとめようと思う。
ksnctf #18 Use flash drive
問題
https://ksnctf.sweetduet.info/problem/18
考えたこと
まず、USBうんぬんというタイトルから、フォレンジック問題だろうという予想をする。フォレンジック問題なので、まあAutopsyか、The Sleuth Kitあたりでごちゃごちゃやればいいかなと思った。まずはzipファイルがあるので、それをダウンロードして展開する。それを解凍すると、drive.imgとかいうファイルが出てくる。imgだからまあ画像ファイルだろうなと思いながらfileコマンドで確認すると、
x86 boot sector, code offset 0x52, OEM-ID "NTFS ", sectors/cluster 8, reserved sectors 0, Media descriptor 0xf8, heads 8, hidden sectors 1, dos < 4.0 BootSector (0x80)
と返ってきた。x86 boot sectorというところから、これがタイトルのUSBの意味かと理解する。ブートセクターは簡単に言うと、HDDやフロッピーなどの補助記憶装置のセクターの一種である。とりあえず中身をみようと思ってflsコマンドを実行する。flsコマンドとは、ディスクイメージの中にあるファイルとかの一覧を出してくれるコマンドである。すると、Liberty Leading the People.jpg といった名前のファイルが7種類あることが見つかる。そこでicatコマンドで中身をみると、
icat drive.img 36-128-4
とやったところで、FLA という文字が出てきたので、これかと思って残りも全てicatして出てきた文字列をつなぎ合わせるとフラグが通った。
おまけというかついで
ksnctfのフォレンジック問題はこれぐらいしかないきがする。FTK Imagerとか使っても解けそう?
セキュリティ・ミニキャンプ in 三重2018に参加してきた
はじめに
10/6(土)に鈴鹿高専のイノベーション交流プラザで開催されたセキュキャン三重に参加した。せっかく参加したのでその備忘録としておく。
参加するまで
参加申し込みのためにいくつか質問事項があったので、それの記入をした。全国大会と違ってめちゃくちゃ難しい問題は一切なく、応募理由や学んだことを何に役立てたいか、知識として持っているフォレンジックツールなどの質問があり、最後に調子が悪いSDカードを渡されたらどうするかといった問題があった。最後の問題に関しては、内心はバックアップだけとって新しいの買えよと思ったが、さすがにそんなことを書くわけにいかないので、それっぽいことを適当に書いて、あとはがんばりまーすみたいなことを書いた。すると、締め切りから1週間しないうちに当選のメールがきたので一安心した。セキュキャン2, 3日前に事前課題としてAutopsyのインストールという課題が出た。Autopsyとは、直訳すると検死と言う意味で、The Sleuth Kitというフォレンジックに有用なツールをGUIで使えるようにしたものである。
この課題が思いの外難しく、金曜日に1日かかっても終わらなかった。ソースをGitHubからcloneして書かれている通りにビルドをしていたが、ビルドが無限に失敗し続けていた。途中で講師の人から、MacやLinuxユーザーは仮想マシンをぶち込んでWindows上で動かしたほうが早いかもよという警告が来た。
Autopsyのインストールに無限に失敗している
— いでみつ (@45yw) October 5, 2018
結局1日かかってわからんかった
— いでみつ (@45yw) October 5, 2018
出鼻をくじかれた感じでどんよりしながら会場に向かった。
当日の様子
朝7時の起床試験に合格し、高専祭に行ったこともあったことからある程度行き方は把握しており、無事会場に着いた。早く着きすぎたぐらいである。
高専生です (@ 鈴鹿工業高等専門学校 in 鈴鹿市, 三重県) https://t.co/T9yDG53Epg
— いでみつ (@45yw) October 5, 2018
会場に着いてから、初めてAutospyをソースコードからビルドするのは闇ということを知り、普通にダウンロードしたら一瞬でインストールできた。普通に大泣きした。
本日 10/6 鈴鹿工業高等専門学校にて「セキュリティ・ミニキャンプ in 三重 2018」が開催されます。専門講座は『サイバー犯罪捜査の現場』『ディスクフォレンジック解析入門』の二本立てです。 #seccamp pic.twitter.com/qcVwYADpCf
— セキュリティ・キャンプ (@security_camp) October 6, 2018
オープニングトークは佳山こうせつさんのお話で、「動かす!考える!背中を見る!」のスライドだった。小耳に挟んだことはあったけど、本当にそのスライドがあって実際に聞いたらいい話だった。F1と日にちが被っていたこともあり、それについても触れていた。
セキュリティ・ミニキャンプ in 三重 2018 は協議会講師育成グループ 主査 佳山こうせつさんによるオープニングから始まりました。講座の前に今日一日の流れや、セキュリティを学ぶ上で大切な倫理について学んでいきます。 #seecamp pic.twitter.com/hK5CuF4wQD
— セキュリティ・キャンプ (@security_camp) October 6, 2018
— いでみつ (@45yw) October 6, 2018
午前は三重県警の人による講義で、過去に大学で情報工学特別講義という授業の時に県警の人が来て話をしてくれたが、それと似た部分も多少はあった。しかし、今回は実際に被害者から相談を受け、聞き取りをするというより実務に近い形のことを行った。鈴鹿静香さんが伊勢のび太さんにアカウントを乗っ取られて困っているという相談だった。家宅捜査など色々シュールで非常に楽しく学ぶことができた。
午前はそれで終わり、昼食のための昼休憩に入った。
昼飯部門 #seccamp pic.twitter.com/4iFXmI11TW
— いでみつ (@45yw) October 6, 2018
席には他の参加者6人と、佳山こうせつさん、そしてはいひるさんだった。いろんなお話が聞けてよかった(語彙力)。
午後は、フォレンジック解析入門ということで、座学ではなく実際にAutopsyを使って解析をするという講義だった。 昨年のセキュキャン全国大会の卒業生の人が導入として、デジタルフォレンジックとは何かという話などをしてくれ、その人が実際に使っていたディスクファイルから情報を読み取るという作業をした。
ディスクフォレンジックについて講義を受けた後に、実際にフォレンジックツールであるAutopsyを使ってディスクファイルに隠された情報を見ていきます。チームで協力して、どれだけ情報を抜き出せるか競っています。 #seccamp pic.twitter.com/tXt3FxCCKr
— セキュリティ・キャンプ (@security_camp) October 6, 2018
実際に覗いてみると、ヘッダからファイルの種類がわかるといった話はもちろん、使用していた端末情報やアプリなど色々わかり、この人はこういうことをしていたんだなということがわかるようになっていた。CTFでフォレンジックは難しすぎて避けていたが、少しautopsyの使い方がわかったので、解ける問題があるといいなと思った。
今回、セキュキャンに初めて参加したが、あまり技術のない自分でもわかりやすく、そして楽しく学べたので、自分の技術力に自信がない人もぜひ参加して欲しいと思った。また、多くの人の協力を得て自分たちは無料で参加できているので、周りの環境に感謝したいと思った。最後に、三重県でもっとこういう勉強会的なのやって欲しいな..
卒研
無事4年生になれたので、卒研のテーマを決めないといけないのだが、ぼんやりとしか決まっていないのでもっと具象化しないといけなさそう。GW明けまでにはおおまかに決めたいものだ。
Macがカーネルパニック起こした
僕のMacBookProRetina 13-inch, Early2015が突然起動しなくなった。いろいろ調べてみたら、どうやら起動時のカーネルパニックらしいことがわかった。そしてその修理をしたので、忘備録代わりにここに記す。
カーネルパニックとは、OSのカーネル部分において、何らかの理由で致命的なエラーが発生し、安全に復旧することができなくなった状態のことである(以下Weblio参考)。kernelについては以下を参考にしてほしい。
このカーネルパニックについては、もともと存在はしていたものの、OS Xのバージョン: 10.11.6 El Capitanでは最近報告されている現象らしい。原因としては、OS Xにもともと入っているセキュリティソフトと、外部から入れたウイルスバスターなどのセキュリティソフトが相性が悪いことらしい。自分のは、OS Xのセキュリティソフトが最新バージョンで、外部のセキュリティソフトが更新されていない状態になってい他ので起こったらしい。そこでMacをセーフモードで起動し、外部のセキュリティソフトを更新したら無事に直り起動するようになった。
最後に、Appleのサポートのお姉さんは優しい。
akictf #4 directories
問題
https://ctf.katsudon.org/problem/4
考えたこと
まずファイルをダウンロードすると、zipファイルが手に入る。一応fileコマンドで確認しても実際にそうだった。unzipコマンドで解凍すると、q4というディレクトリと、それの下にいろんなファイルが展開される。中にflag.txtがあったので、それを見てみると、The flag is directory name beginning with 's'. Not found? Umm... と言われる。もう一度展開したファイルの一覧を見ると、.DS_Store というものがあることに気付いた。これは、隠しファイルと知っていたので、catコマンドを実行したらsから始まるものがあったので、それを入力したら通った。
おまけというかついで
unzipするまえにlとかtオプションで中身を確認するくせがついたけど、毎回それをしている意味があるのかなって若干思っている.. ZIP is zipが解けない...