asu_paraの日常

日々感じたことをまとめて投稿するときに使います

自分が触れてきた技術とか

まあ、色々やってみたわけです。中途半端野郎じゃないかと思うかもだけどそんなにマイナーでもないと思うんだ。今日はざっくりと触れてきたこととかについて書こうと思う。全部じゃないよ。

 

17歳くらいの時にrubyに触れたのが最初だったと思う。その時は訳もわからず写経してたし楽しいとかはわかんなかった。でも情報系に進むきっかけになったからこれはでかい経験だったんだよな。

 

数年してまた技術やる波が戻ってきた。最初はRSA暗号pythonで実装するっていうのをやったと思う。スクリプト言語の良さを知って入力すればでてくるので計算とか扱うにはいいね!って思った。それでスクリプトをかく何かみたいなやつに魅力を覚えた。

 

最初はだからcryptoでCTF入門したんだけどだんだん難しい問題が解けなくなってきて嫌になった時にpwnの存在を先輩のおかげで知った。ゲームみたいで楽しいですよ的な言葉に惹かれてやったけど最初は知識がなくて「なんだこれ。よくわからないな」という感覚になってた。これも途中でやめるのかなっておもてたけど学校でコンピュータアーキテクチャとかをかなりちゃんとやったのもあって「知識を持っとくだけじゃ意味ないし活かしたいな」みたいなことを思ったのが実は1番のモチベ。やっていくうちになんとなくコツがわかってきてkusanokさんの本とか読んで典型的な攻略方法が洗練されているジャンルだなくらいは思えるようになった。revはよくわかんないんだけど分野的には近いからpwn同様、ビギナーズ数問くらいは解けるかもしれないし解けないかもしれないって感じ。初心者本数冊は完走してます。

 

ここでseccamp2021を受講したんだけどここで大きく方針が変わってきた。「Exploit系のことができればいいやー」って思ってDトラックとかCトラックとかを受講したんだけどなかなかリアルワールドの解析ってしんどいんだなみたいな感覚を持った。Ghidraとかその他ツール群を本格的に使いこなせたらめちゃくちゃ楽しいのかなーって指をくわえてたのを覚えてる。今ではCTFで簡易的な利用はするくらいには使えますけど当時初心者だったもんで...。(昔、5年前くらいのCTF本や参考解説ではIDAを使うのが主流だったと思うけど今はGhidraだよなあ) Dトラックでやった機械学習系もそれそのものに対する内容よりかは機械学習を実際に使って何かする(例:XSSの摘発とか) の方が面白いだろうっていう結論になった。

 

ここでわかったこととしては「自分は脅威解析は遊びでCTFの問題を解くくらいには好きかもだけど仕事にするのは違うな」ということでした。終了後、俺って何になろうかみたいなことを考えていたら秋にmini campというのがあってそこで「コンテナ」の内容のことをやったんですよね。

 

これすごいよくてこれでwebサービスの基盤とかに興味を持てた。資料めちゃくちゃ充実してたし今でも読んでます。実際、このレイヤはちょい低めだしrevとかの分野にも通じるところがある。

 

これで、webアプリケーションのことに興味持って自分で色々やり始めた。ぶっちゃけ、初手コンテナからwebに興味持つのってかなり珍しいと思う。

 

まあ、とりあえずもの作ってみましょうかってなって大昔にやってたhtmlとかcssをテンプレートにガシガシ書きながら感覚を戻す?をやったりフロントの機能をjsで書き、バックエンドを最初はFirebaseに丸投げしてたんだけど、過程で徐々にフレームワークの力を借りるべくVueを触ってみたり、バックエンドも一部の機能を切り離していきたいと考えてphpを少し学んでやって移植してみたりしました。今はバックエンド書くならgo言語を主流にしていこうとしています。会社のプロダクトがgoなんでね...。goをやっていき!

 

これで次はwebセキュリティーまわりが気になり始めました。web(CTF)に関する過去資料がネットにたくさんあるのでいろいろ読んでいっているわけですがいかんせん、攻撃の種類も情報量も多いなあwebはという感じ。CTFの問題もその場でできるかみたいなところが大きいです。これと決まったやりかたがあるのは少なくwebが本格的にできる人は相当な問題数をこなしてるなというのが所感ですが多分当たってます。(他の分野もたくさんといたもん勝ちだけどwebは特にそうだろうという話) CTFにおけるwebに関しては解釈をするのに必要な基本的な知識とよく出題される問題形式の簡単な解法くらいは一通り学習しているつもりです。

 

しかし、最近のwebサービスというのはモダンな技術、アーキテクチャが使われているため、CTFで出題されるような問題はほとんど対処済みで少し違うことや対策をリアルワールドでは求められます。代表的な例としてはクラウドとかですかね。

 

実際の開発現場ではどのようになっているかが気になったため、モダンな技術で爆速開発してる会社にjoinしてプロダクトを見させてもらって勉強をしています。まだ、右も左もわかんない感じですけどアプリケーションがたっているAWSやコンテナ周りのこと、プロダクトで使われているgoに対する理解やアーキテクチャドメインの理解など1つ1つ積み上げてやる。これでホワイトボックスの視点からバグや脆弱性、修正した方がいい項目に対してissue立てたり、小規模な機能の開発にjoinしたりできるようになっていくのが現在の目標です。

 

長くなった。

 

紆余曲折マンかもだけどたくさん触れないと自分がやりたいことなんてわかんないと思う。まあ、自分がたくさん触れるきっかけになったのは大学でかなり幅広く知識を入れさせてもらったのもあるな。一般的な学生は知識入れておしまいかもだけど自分は興味出たらちょっとでもいいからいじってみたい人なので、たくさんトリガーになった。今はセキュきゃん受講して1年立ったけど、あそこでやってたことと全く違うことやってるよ。でも寄り道悪くないけどあまり中途半端になりすぎるのもよくないしその辺のバランスって難しいね。

 

 

思い出せる限りこんなことやった

 脆弱性報告, xss

 FPGAで加算機/減算機作った

 学習でうんとかかんとか

 スクレイピングでうんとかかんとか

 ++++++;

   色々 すぐには思い出せん

 

 

終わり