にゃーんとか言ったことなし

コンテンツは特にないです。

卒研

無事4年生になれたので、卒研のテーマを決めないといけないのだが、ぼんやりとしか決まっていないのでもっと具象化しないといけなさそう。GW明けまでにはおおまかに決めたいものだ。

Macがカーネルパニック起こした

僕のMacBookProRetina 13-inch, Early2015が突然起動しなくなった。いろいろ調べてみたら、どうやら起動時のカーネルパニックらしいことがわかった。そしてその修理をしたので、忘備録代わりにここに記す。

 

カーネルパニックとは、OSのカーネル部分において、何らかの理由で致命的なエラーが発生し、安全に復旧することができなくなった状態のことである(以下Weblio参考)。kernelについては以下を参考にしてほしい。

カーネル - Wikipedia

www.weblio.jp

このカーネルパニックについては、もともと存在はしていたものの、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が解けない...

akictf #10 easy_crackme

問題

https://ctf.katsudon.org/problem/10

 

考えたこと

bin問題なので、まあバイナリ解析だろうという予想は簡単につくが一応fileコマンドで確認すると、予想通りそれだった。実行権限xがなかったので、それを追加してあげて適当に動かしたら、Usage: ./q10 flag って言われたので、コマンドライン引数がいるらしい。まあ適当にflagとか与えたらさすがに動かなかったので、objdumpしてあげた。すると、 call 8048358 <strcmp@plt>という記述がったので、何と何を比較しているか調べてあげれば良い。そこで、ltraceで適当な引数を与えてあげて様子をみた。すると、何と比較しているかはわかったので、それをそのままいれたらうまくいかなくて???ってなった。ちょっと考えたけどマルチバイト文字じゃねと気付いたので、エンコードしてあげたら、correctとでたがそれ以外何も出なくてえ?ってなった。またちょっと悩んだけど、loopでもx-flagそのままぶちこんだら通ったしそのままぶち込んだらいいのかなと思ってぶち込んだら通った。

 

おまけというかつい

バイナリ解析を実は全然やったことがなかったので、頑張ってアセンブラを調べながらやっていたけど、バイナリ解析の入門資料みたいなのは少ないなあと思った。今回はハリネズミ本に少しお世話になった。

 

 

 

 

akictf #12 ASCII Art

問題

https://ctf.katsudon.org/problem/12

 

考えたこと

akictfの作者であるaliym氏がPerl使いであることと、自分がたまたま知っていたperlのモジュールでText::AAlibっていうのがあるので、まあそれかなと思って投げつけたら、なんかちょこっとエラーでたけど答えは見れた。

 

おまけというかついで

ksnctfの25番でreservedという問題があるけど、それはPerl予約語が並べられていて、それだけで動くのではえ〜って感じだった。他の言語でもそういうのあるのかな..

 

 

ksnctf #36 Are you ESPer?

問題

http://ksnctf.sweetduet.info/problem/36

 

考えたこと

リンク踏んだらぶっ壊れたファイルみたいなのでてきたけど、よくみたら一番最初にELF(Executable and Linking Format)とか書いてあったから、これは実行ファイルであるとわかる。とりあえずダウンロードしてncコマンド殴ると、数字をあてるゲームが始まる。乱数かなっておもって適当にコード書いて流し込んだら弾かれて???ってなった。困って別問題やってたときに、向こうのサーバーと時間差があることを知った。そこで、srandの初期化の時間を無効のサーバーに合わせてあげて、パイプラインで実行結果を流してあげたらフラグをとれた。

 

おまけというかついで

rand関数は、初期設定を行わない場合、常に同じランダムパターンを返すことになっていて、これでは乱数の意味をなさないので、srand関数を用いて初期化の時刻を自分で設定してやる。何気なくsrand(time(NULL));とか書いてたけど、改めてちゃんと理解した。

 

akictf #6 Game#1

問題

http://ctf.katsudon.org/problem/6

 

考えたこと

URLを踏むとJankenと書かれたページが出てくる。とりあえず普通にやってみたら、何を出しても負けになり、すぐにmoneyがなくなる。なんだこいつと思ったけど、10ってとこかRankingを変えてやればいいんじゃねと思い、Chromeデベロッパーツールで編集をする。ザーッと見てやると、その中に

<input type="hidden" id="h" value="d3d9446802a44259755d38e6d163e820">

というHTML文がある。valueの中身がどういうものかよくわからなかったので、そのままググってやるとこれがMD5エンコードされた10であるとわかった。ならこれと上の10っていう数字を書き換えたらいいんだなと思ってRankingの1位の数字(一千万)より大きい数字にしてRegisterボタンを押してやったらフラグをゲットできた。

 

おまけというかついで

curlコマンドでごにょごにょしてもできると思うけど、curlコマンドがいまいちよくわかってないのでアレ() デベロッパーツールは強いなあと思いました(こなみかん