picoGym by picoCTF [Web]が意外と面白いので布教します part2

今回もweb問を3つ解いたので書き記しておきます。

4. Scavenger Hunt

There is some interesting information hidden around this site http[:]//mercury[.]picoctf[.]net[:]44070/[.] Can you find it?


ということで、フラグがこのサイトのどこかに隠されていることは確定しました。きっとコメントアウトとか隠しファイルから探す感じでしょう。
まずはurlの前にview-sourceを付与してソースを見ます。flag(part1)がhtmlにコメントアウトされてました。
じゃんじゃか見ていきます。cssにもflag(part2)がコメントアウトされてました。
myjs.jsファイルには

/ How can I keep Google from indexing my website? /


コメントアウトされてます。
基本的にgoogleで検索されないようにするにはrobots.txtで指定したり、隠しファイルに記述するようにします。ということでrobots.txtを見ます。
robots.txtにflag(part3)がありました。

I think this is an apache server... can you Access the next flag?


apache serverだと教えてくれているのでapache特有の隠しファイルにありそうですね。ということで.htaccessを覗いてみます。flag(part4)がありました。

I love making websites on my Mac, I can Store a lot of information there.


Macで開発するのが好きということで、Mac関連の隠しファイルとかかな(初耳)・・・と思い調べてみると、.DS_StoreというMacOS特有のファイルが存在するみたいです。フォルダやファイルに関するmeta情報が格納されているようです。flag(part5)がありました。これで終わりなのでpart1 ~ part5を繋げて、flag提出します。DONE!!!
隠しファイルは非表示にするように設定しましょう・・・。

5. Some Assembly Required 1

うわーアセンブリだぁと思いつつ、リンク先を開く。
入力フォームがあるので適当に文字を送る。
Incorrect, 挙動を確認したいので burpを開いて通信を見てみるも、JSONでやり取りしてるし情報も特徴量が少なすぎて解法に困る。
とりあえずjsファイルが覗けるので見てみると難読化されてたので整形した。

lab.syncer.jp


ゴリゴリアセンブリで書かれてて意地悪だなと思いましたw
どうやら関数を呼び出すタイミングでwasm(Web Assembley)の関数を使っているみたい。


ここでcheck_flgという関数を発見。このWeb Assembleyのcheck_flg関数の中にフラグが入っていました。

6. login

SQLインジェクションXSSか。。。と思いログイン機能の挙動を確認。
まあ普通の挙動だなと思いつつ、SQLを叩いてみる。SQL関連のエラーを吐かないので、SQLインジェクションではないのかな~と思いソースを見てみることに。
まさかのjsでログイン機能を動かしていて、しかもソースの中にbase64エンコードしたpasswordと一致するかの処理が書かれていたのでこれをデコードしてフラグ入手。
クライアントサイドでログインチェックしちゃダメとあれほど・・・

さいごに

今回も3つWeb問のWriteup書きました。
自分の思考回路(Flag獲得までの過程)を書くとどうしても読みづらい文章になってしまうので改善していきたい。
もっと簡潔に書いた方がいいかもしれない。それでは!!!

picoGym by picoCTF [Web]が意外と面白いので布教します

暇だったのでpicoGym[Web]を上から3問解いた。

そもそもpicoGymというのはpicoCTFの過去問がまとめられてる常設CTFです。
過去問というだけあって復習をして自分の成長度合いを測れるのが良いですね。

早速、Writeup書いていきます

1.GET aHEAD

サイトを覗くとsubmitボタンが二つ。どちらもindex.phpにchoose Red[GET]とchoose Blue[POST]というvalueで送信されている模様。
とりあえずGETメソッドで色々な色を指定して送信するもはずれ。:(
POSTメソッドいじっても全然ダメ。。。え、なにこれどうすれば。。。
GET aHEADという問題なのでHEADメソッドで送信してみる。
レスポンスヘッダの中身が変わったので見てみるとフラグが入ってました。
レスポンスヘッダをGETとHEADで変えられるのは初めて知りました。。。()

2.Cookies

クッキー情報に関するものだな~?とニマニマしながらフォームにhogehogeと入力してみる。全然correctしない。
placeholder通りにsnickerdoodleと入力するとcorrectした。だがflagに関する情報はない。とりあえずレスポンスを見てみるとcookieのnameが-1から0に変わっていた。画面にはI love snickerdoodle cookies!と表示されている。
ほう、cookieのnameを変えて見るか。という感じでcookieのnameにを1にして送ってやるとi love chocolate chip cookies!と表示されるし、クッキーの名前ごとにcookieのnameが変わってるのでは?と仮説を立てる。
とりあえずpythonでrequestsモジュールを使ってcookieのnameをインクリメントしながら/checkにGETメソッドで送信する。レスポンスが膨大だ。。。
レスポンスが膨大なので、picoCTFという文字列が含まれていたら出力するようにプログラムを修正。
レスポンスにフラグが入ってました。やはりクッキーの名前をcookieのname(連番)で管理していて、その中にflagを混ぜていたみたいですね。

3.Insp3ct0r

なんだこりゃ。という感じで始まりましたが、WhatとHowというタグで表示が変わるというjsが組み込まれている感じです。
jsの脆弱性を突く感じかな。。。とview-source:でソースコードを見ると、ソースコード内に1/3 part of flagとか 2/3 part of flag 3/3 part of flagとかあったのでこれを組みあわせてフラグ入手です。初心者に易しすぎる~と思いつつ。
htmlとcssとjsに散らばってます。まさか、ブロックチェーンを示唆しているのか!?(そんなわけがない)などと一人で盛り上がりました。

さいごに

今回はひとまずこんなところで終わりましょう。また後日、web問の続きをwriteupに上げようかな~と思います。
picoCTFは初心者にも易しい問題がたくさんあるのでぜひ!!
それでは!!!!

CompTIA CySA+に合格した

CompTIA CySA+とは

CompTIA Cybersecurity Analyst(CySA+)は、国際的に認知されているベンダーニュートラルの認定資格です。 CompTIA CySA+を取得することで、ネットワークとデバイスのビヘイビア分析と継続的なセキュリティモニタリングからサイバーセキュリティの脅威を検出、防止、対処するスキルを証明します。


ITSSだとレベル3ですね。IPA応用情報技術者試験と同レベルです。

使用した教材

Udemy, TACのテキスト・問題集。

筆者のレベル感

セキュリティ系の資格だと、RISS, SG, SEA/Jを持っています。
WEBアプリの開発を上流から下流まで出来ます。

勉強時間

期間は1か月。
模試に5時間。
テキストやUdemyの講義に30時間。

とにかくすべての問題に目を通そうという意識で模試を行いました。そして知らない単語をOneNoteにメモりました。

勉強法

MicrosoftOneNote使いました。知らない単語をひたすらメモって、隙間時間に覚える。という具合です。
模試は通学時間や休日に行いました。

試験のレベル感

パフォーマンスベーステストがちょっと難しいですけど、それ以外は4択なので意外と簡単だと思います。
問題の内容に関してはNDA(秘密保持契約)があるので書けませんが、TACの模試に出た単語を全て覚えて、+αでテキスト3周くらいすれば150%受かります。

さいごに

正直、勉強時間を全然確保できなくてやべーと思いつつ受けましたが、何とか受かりました。
今年は上位資格のCompTIA CASP+を取得しようと思います。
どちらの資格も、アナリストを目指す方には是非受けていただきたいです!!
それでは!!!

Google Lensって知ってますか?

この写真、何か見たことあるけど、なんだっけな・・・・

そんな時に使うのがGoogle Lensです。
自分はOSINT CTFに使ったり、Twitterに流れてきた飯テロが良いなと思ったらGoogle Lensにかけてます。

Google Lensとは

目の前にあるものの情報を調べることができる機能です。
スマホのカメラに被写体を写すことで、類似する画像や関連するコンテンツをインターネット上から探し出して、結果を表示します。
そのほかにも翻訳機能やテキストを認識する機能もあります!

使用例


こんな感じで気になったりする人、居ますよね。



Google Lensで検索すると一瞬で特定できちゃいます!(変なことには使わないでね(*^^)v)

さいごに

意外と知らない人がチラホラと散見されるのでブログに残しました。
良い特定厨ライフをお過ごしください。
それでは!!!

めちゃくちゃ美味いナポカツを食べてきた

スパカツとは

北海道釧路市の郷土料理。熱した鉄板皿にスパゲッティ、カツ、ミートソースを乗せた料理。 by wiki
釧路でも食べたことありますが、札幌ではあまり見かけないです。
スパカツについて書きましたが、タイトルの通り、食べたのはナポカツです。スパカツの派生みたいな感じでした。

実際どうだったか

めちゃくちゃ美味しかったです。トンカツはすごく柔らかくて、スパゲティはもちもち、少し太い麺でした。味自体は、ナポリタン風でした。
鉄板に乗っているので、食べ終わるまで熱いのも魅力的ですよ!そして、すごくボリューミーでした。(スープは無料!!)

ナポカツ

さいごに

そのほかにもメニューがあるので是非お友達と行ってみてくださいね。
今回ご紹介したお店は【CAFE&BAR めりめろ】でした~
それでは!!

お店のメニュー

pythonでTwitterスクレイピングして脅威インテリジェンスを集める

情報のキャッチアップ力を上げたい


そう思い立った時、最初はTwitterで垢を作成して著名人や情報を流してくれる方をフォローして回っていましたが、これだとずっとTLを見ていないと情報が入ってこないので億劫でした。
そこでスクレピングちゃんの出番DA!と気づきました。

スクレイピングとは

Webデータ収集のこと。
圧倒的な情報収集のスピード、自動でファイル出力もできるし、話のネタの収集とトレンドの収集も出来て時間の効率化がえげつないです。
実現方法はいくつかあるのですが、今回はTwitter APIを利用したpythonのプログラムを作成して利用します。

今回のプログラムの特徴

リツイートの除外。できるだけユニークなデータが欲しい。
URLが載っているツイートの収集。情報のソースを確かめたい。
idを保持して情報のフレッシュさの維持。時間の重複による同じデータの収集を避けたい。

実際のプログラム

Google Colaboratoryで書きました。パッケージの管理とか環境構築いらないので。。。らくちん

import tweepy
import json
import numpy as np
import pandas as pd

# APIを使用するための認証情報
consumer_key = "YOURS"
consumer_key_secret = "YOURS"

access_token = "YOURS"
access_token_secret = "YOURS"

"tweepyによるTwitter APIを使用するための認証のセットアップ"
auth = tweepy.OAuthHandler(consumer_key, consumer_key_secret)
auth.set_access_token(access_token, access_token_secret)

# パラメータwait_on_rate_limitを有効化して、APIの問い合わせ回数の上限に達した場合は必要時間だけ待機
api = tweepy.API(
    auth,
    parser = tweepy.parsers.JSONParser(),
    wait_on_rate_limit = True,
    wait_on_rate_limit_notify = True
)

#検索ワードとしてexploitとhttpを使用してリツイートは対象外
search_term = "exploit http -filter:retweets"

#一番古いツイートidを保存する変数
oldest_tweet = None

# 回収したツイートの一覧を格納するためのリスト
TempDict = []

# 回収したツイート数のカウンター
counter = 0

# 10回ループして合計1000件のツイートを対象にする
for x in range(10):
  # 最新のツイートから100件を抽出しテキストをすべて収集する
  public_tweets = api.search(search_term,
                             count=100,
                             result_type = "recent",
                             tweet_mode = "extended",
                             max_id = oldest_tweet)
# 条件に一致するツイートの収集
for tweet in public_tweets["statuses"]:
  # 引用リツイートも除外
  if not 'quoted_status' in tweet:
    TempDict.append(tweet)

    # カウンターに1を追加
    counter += 1
  
  # 検索結果の一番古いツイートidを代入して次の検索結果はこの一番古いidより古いものにする
  oldest_tweet = tweet["id"]

print("Tweet {}件収集しました".format(counter))

これをDataFrameにしてURLの列からソースへアクセスします。暇なときにこうやって眺めると面白そうなサイトがいくつも拾えるので滅茶苦茶面白いです。

data = pd.DataFrame(
    data = [tweet['full_text'] for tweet in TempDict],
    columns = ['TweetText']
)

import re
URLPATTERN = r'(https?://\S+)'

data['URL'] = data["TweetText"].str.extract(URLPATTERN, expand=False).str.strip()

スクレイピング結果の一部

最後に

今回はDataFrameにする方法や環境構築(APIの取得法など)を省きましたが、簡単なので調べてやってみてください。
今は簡単なスクレイピングをしてますが、もっと複雑なデータ収集法も覚えて情報の精度を上げていきたい!それでは!

Notionでネスペの勉強管理してみた

資格試験の勉強、デジタル化したい

普段は筆箱とノート、教本の3点セットで資格試験の勉強してましたが、ペン買いに行くのとかめんどくさくて・・・。
そこで、Notionを使って進捗管理兼ノートを作ろうと思いました。(デバイス1つで出先でも勉強できる!)

Notionを選んだ理由

それは、NotionがUIと多機能、両方の面で優れているからです。
ノートといえばOneNoteとかTruNoteとか、Ipad使ってみるとかあると思うし、進捗管理ではGoogle ToDoとかMicrosoft ToDoとかあると思うんですけどね。
進捗管理とノートを一緒にしたいなと思ったし、見た目もNotionの方が映えるので楽しいんですよね。

実際にどんな感じか

滅茶苦茶良いです。
Google Calendarと同期して日常のスケジュール管理もできるし試験までのカウントダウンや模試の回数カウントもできて、モチベーションアップに繋がります。
もちろん、その下には教本の章別にノートをとることのできるTableも用意してあるので進捗管理とノートが1画面で全て完結してます。素晴らしい。
まさにUIと多機能、両方の面で優れています。

Notionの画面

最後に

まだまだビギナーなのでこれからもっとNotionの有難みを感じられるはず・・・。
Notionには優秀な機能がもっともっとあります。自分だけの最高のノートを作ってみてください!
それでは!