zoomzoomzoom

解決方法の共有に主眼を置くブログ・他雑談

CTF 勉強方法 方針 目標

CTFを楽しみたい。理由:セキュリティに詳しくなりたいから。

 

ということで、CTFで戦うための技術を身に着けるためにどうやって勉強していくかを考えるための記事。

 

期間:1年

目標:CTFの全分野でwriteupを見て何をやっているかを理解し、再現することができる。

 

目標達成のための方法(ざっくり):

①本で勉強する

②師匠を作る

③サイトで勉強する

 

①について

・セキュリティコンテストチャレンジブック(以降:CTF本)

・ハッキング(以降:Hな本)

この2冊の内容を頭に叩き込んで実践。

 

②について

オンラインで探す。できればチームに入れてもらう。(社会人かつ初心者だけど入れてもらえるところないかな)

@nikoniko_entreTwitterをやっているので、もし入れていただける方いればお声掛けいただけないかなー(他力本願寺

 

③について

hority-ctf.blogspot.jp

 

こういったサイトの記事を参考にして、勉強していく。

 

 

目標達成のための方法(具体的・直近):

①CTF本の内容を頭に入れる。

→何のためにどうやって何をやるのか、を頭に入れるために本を10回読む

→→具体的に手を動かして再現できるようにする。

 

②コーディングの力を付ける。

プログラミングコンテスト攻略のためのアルゴリズムとデータ構造、という本で、

「こういうことがしたいな」と思った時にそれをコードで書き表せる力を培う。

C/C++/Python/Java/アセンブラ の基礎的な力を付ける。

 

③師匠を探す

上記①と②を並行しながら。2月中旬までに見つけたいなあ。

 

 

 

端末操作 ubuntu ショートカット

便利ショートカット見つけたから書く。

なお

Cはcontrolキー

SはShiftキー

AはAltキー

+ は同時押し

と読み替えてください。

 

C+A+t 新しい端末起動

C+S+t (端末内で)新しいタブ起動

A+1だのA+2だの タブの切り替え

C+d 現在のタブ削除

 

その他:

C+A長押し→(離してから)→左右矢印キー  タスクを自由に選べるよモード

シェルスクリプト高速開発手法入門 CMS

上田隆一さんというシェル芸の達人の本で修行をしている。

 

タイトルの本を購入させていただいた。

修行の最中、躓いたところと解決方法を共有する。

なお、躓いた事象のみ記述してあることもあるのであしからず。

 

コマンド自作:

pwd が ~/bashcmsディレクトリの状況で

pushコマンド(ソース下記)を自作した後、~/bashcms/binに保存。

実行しようとして、ローカル環境で./bin/push を実行。

 

pushコマンド:

1#!/bin/bash
2
3 pagedir=$(dirname $0)/../pages
4 remote=160.16.88.188
5
6 rsync -av --delete --exclude ',*' "$pagedir/" "$remote:/var/www/bashcms/pages/"

 

...するとエラーメッセージとして下記が表示される。

bash: ./bin/push: /bin/bash: 誤ったインタプリタです: 許可がありません

 

解決策模索中。

bashがうまく動いてくれてないのかとも思ったが、cd とかディレクトリ移動ちゃんとできているし、

一度もchshとかしていない。

 

 

解決した。

/bin/bashが怪しかったので、ディレクトリ権限を見てみると、閲覧すらできないようになっていた。

 chmod 777で権限変更してやると、ディレクトリの中身が見れるようになった。

そして件の./bin/pushも実行できた。

 

どうやら、binディレクトリを誤ってもう一個作ってしまって消してという作業があったためか、デフォルトのbinディレクトリの権限が変更されていて、自作したpushコマンドの一行目のシバンがうまく機能できなくなっていたようだ。 と自分の中では納得した。

 

追記(つまり新たな問題の発生)

template.6.htmlというのを作るところまで進めた。

URLをブラウザに打ち込んで自分が作成したサイトを眺めるのはいいものだ。

しかし、文字化けしているぞ。

 

<body>

<header>

ここが全部文字化け

</header>

</body>

 

特定のタグで囲まれた箇所だけが文字化けってありえるのか。。。調査中。

apache2 設定 ファイル どこ

LAMPを使ってserver運用をしたいと思い、いろいろ調べた。

そのつまづきメモ。

すごく参考にさせていただいたサイト。

http://koonz.blog.fc2.com/blog-entry-511.html

 

Server version: Apache/2.4.18 (Ubuntu)

 

ドキュメントルートの設定 2つやんなきゃダメぽい:

~etc/apache2/apache2.conf

ここのDirectoryってところを変更

 

~/etc/apache2/sites-available/000-default.conf

ここのDocumentRootというところを変更

 

編集を終えたら

sudo service apache2 restart

をするといいらしい。

 

=========================

デフォルトのドキュメントルートについて引っかかった話。

こんなこと引っかかるの私だけかもしれませんが、

ドキュメントルート(WEBサーバーの最上位ディレクトリ)は、var/www/"ここ!" に初期設定されています。

 

何が言いたいかというと、更新がないサイトでは、下記の様なことが書かれていて、ちょっと躓くのです。。。

”よし!apache2のインストール終わったね!なんでもいいからブラウザ立ち上げてURL欄にlocalhostってうってみようか!うん、it worksって出たよね。じゃあ、こんどは設定が見れるかどうか、phptest.phpっていうファイル作って、phpinfo();が動くかどうか確認してみよっか!ファイルの置き場所は、/var/wwwだよ!動いたよね!やったね!”

 

.....ドキュメントルート上にないのでforbiddenになります。

私はなりました。

======================

 

もうひとつ引っかかったことがあります。

それは、上記のディレクトリ設定の際、

home/ユーザー名/wwwが推奨されていたので、

"オッケー。homeディレクトリの下に新たにディレクトリ適当な名前で作ってその下に更にwww作ればいいんでしょ?らくっしょー!じゃあ今回作るのはtestapache2manっていうディレクトリ名にしよっと!つまりhome/testapache2man/wwwねー。はいできた!"

とやったのですが、それではforbiddenになりました。

 

forbiddenとなった原因は、私の現在の知識ではわからないのですが、その後、2つのファイルのディレクトリ設定のところを

home/現在このlinuxで使用している、"存在している"ユーザー名/www  に変更したところうまくいったので、おそらく、単にフォルダを作るだけではダメで、ユーザーを作ってあげなきゃいけないんじゃないかなと。

シェル芸 sed 使い方

シェル芸の練習をしています。

 

https://blog.ueda.asia/というところで、問題集的なカテゴリがありましたので、

そこで勉強させていただいております。

 

問題集→https://blog.ueda.asia/?page_id=684

 

で、第五回の4問目の解答で

 

curl http://www.yahoo.co.jp|sed 's@</[^/][^/]*>@&\n@g'

 

という部分があるんですが、

 

</[^/][^/]*> の表現の部分、それぞれの文字がどういう意味を持っているのかイマイチわかりません。わかる方いたら教えていただけると嬉しいです。

 

文字 : 自分の理解 

< : "<"という文字

/ (ひとつ目): ??????

[ (ひとつ目):

^ (ひとつ目): 次にくる文字を含む、という意味

/ (ふたつ目): ??????

] (ひとつ目):

[ (ふたつ目):

^(ひとつ目) : 次に来る文字を含む、という意味

/ (みっつ目):   ???????

] (ふたつ目): 

* :

> : ">"という文字

 

 

よろしくお願いします。

 

追記(20161214 19:39)

理解した。

勘違いしていたところ: ^ の使い方。

^は2通りの機能がある。

1.先頭から始まる

2.( [] の中で使って)〜を含まない

今回は2.の方の機能を使う。

 

文字 : 機能の理解 

< : "<"という文字

/ (ひとつ目): "/" という文字

ここまでで、 </ という文字列を表現する

 

[ (ひとつ目):   "[" という文字

^ (ひとつ目): 次にくる文字を含む、という意味

/ (ふたつ目): "/" という文字

] (ひとつ目): "]"という文字

ここまでで、 /を含まない何かの文字 という意味。

 

[(ふたつ目): "[" という文字

^(ひとつ目) : 次に来る文字を含む、という意味

/ (みっつ目):   "/" という文字

] (ふたつ目):  "]"という文字

ここまでで、 /を含まない何かの文字 という意味。

 

* : 繰り返し文字

> : ">"という文字

 

要約すると、

</ "/"以外なら何でもいい1 "/"以外なら何でもいい2の繰り返し >

ということを表したかった!!

ubuntu 16.04.01 LTS suspend lid 動かない

letsnote CF-SX1で

ubuntu 16.04.01 LTSを使用していて、

蓋を閉めた場合に、suspendするが、

蓋を開けた時、suspendから復帰しない(厳密には画面がsuspend前の状態で表示されるが、カーソルやキー操作を受け付けない)ので、その解決のプロセスを共有。

なお、執筆時点(2016年12月12日2:25)で未解決。

 

参照:

dell - With Ubuntu 16.04 laptop doesn't suspend when lid is closed - Ask Ubuntu

 

試してみた。

 

蓋を閉めて、正常に2回復帰した。

しかし、それ以降は、閉める度に異常発生。

なお、terminalから

sudo pm-suspend

 とコマンドしてサスペンドすると異常が発生しないという記事も散見されたが、

これは効果がなかった。

 

解決のために他にすること:

1.カーソルやキー操作を受け付けるソースコードに異常がないか確認する

2.同じ現象で困っている方の投稿をもう少し探す。

3.しゃっくりをとめる。

mysql cannot login mysqld.sock

mysqlにログインできないのでその解決に至るまでのプロセスを共有。

解決方法がわかる方、どしどし教えてください。

なお、執筆時点(2016/12/12 1:41)で未解決。

 

osはubuntu 16.04.01 LTS

以下端末操作。

 

mysqlのバージョン

mysql --version

mysql Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using EditLine wrapper

 

mysql -u root -p

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

 

ls -al /var/run/mysqld

合計 0
drwxr-xr-x 2 mysql mysql 40 12月 12 01:50 .
drwxr-xr-x 36 root root 1200 12月 12 01:50 ..

 

sudo touch /var/run/mysqld/mysqld.sock

ls /var/run/mysqld/

mysqld.sock

 

この状態でもう一回loginを試みる。

mysql -u root -p

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

 

ん?mysqld.sockは作成されたことを確認済みのはず・・・。

ls /var/run/mysqld/

 

。。。何も出てきません。

なお、上記したようにrootディレクトリから.sockの作成はできるようですが、

cd /var/run/mysqld

してから

touch mysqld.sock

touch: 'mysqld.sock' に touch できません: そのようなファイルやディレクトリはありません

と表示されて弾かれてしまいます。

 

また、ディレクトリのパーミッション権限を変更してみました。

sudo chmod 777 /var/run/mysqld

ls -al /var/run/mysqld

drwxrwxrwx 2 mysql mysql 40 12月 12 02:00 .
drwxr-xr-x 36 root root 1200 12月 12 02:00 ..

 

sudo touch /var/run/mysqld/mysqld.sock

ls -al /var/run/mysqld
合計 0
drwxr-xr-x 2 mysql mysql 60 12月 12 02:02 .
drwxr-xr-x 36 root root 1200 12月 12 02:02 ..
-rw-r--r-- 1 root root 0 12月 12 02:02 mysqld.sock

 

mysql -u root -p

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

 

ls -al /var/run/mysqld
合計 0
drwxr-xr-x 2 mysql mysql 40 12月 12 02:03 .
drwxr-xr-x 36 root root 1200 12月 12 02:03 ..

 

どうやらログインを試みると手動で作ったmysqld.sockは削除されてしまう模様。

一体どうすればいいのやら。

 

解決のために他にやること:

1.mysqlを作成する設定ファイルを見つけ出す

2.rootのパーミッションが変更されないのが気になるのでrootパーミッションについて調べる

3.しゃっくりをとめる