サイバーセキュリティや人工知能(機械学習等)を中心に、最新技術を研究しています。
[目次]
Part 0: イントロダクション
CTF とは / CTF への参加 / 気をつけること / 法律面 / CTF やってみよう
Part 1: バイナリ解析
[ステップ1] バイナリ解析とは
[ステップ2] バイナリ解析環境の構築
[ステップ3] バイナリ解析入門
[ステップ4] バイナリ解析に関するTIPS
Part 2: pwn
[ステップ1] pwn とは
[ステップ2] 下調べ
[ステップ3] 脆弱性を探す
[ステップ4] エクスプロイト
[ステップ5] pwn! pwn! pwn!
Part 3: ネットワーク
[ステップ1] CTF におけるネットワーク分野を知る
[ステップ2] プロトコルとパケット
[ステップ3] パケットの解析
[ステップ4] パケットの送受信
Part 4: Web 問題
[ステップ1] Web 問題の特徴
[ステップ2] 任意コード実行系の脆弱性
[ステップ3] 各種脆弱性の利用
[ステップ4] シェルをとった後の手法
Part 5: SQL インジェクション
[ステップ1] SQL インジェクションとは
[ステップ2] 攻撃その前に
[ステップ3] 攻撃してみよう
[ステップ4] 発展
[書評]
CTF の入門サイト CpawCTF の「〜CTFとは〜(http://sandbox.spica.bz/cpaw_ctf/about_ctf.html)」によると、
CTF は
(1)Crypto 暗号
(2)Web Web
(3)Reversing Reverse Engineering
(4)Pwn Pwn
(5)Forensic 鑑識
(6)Network ネットワーク
(7)PPC Professional Programming and Coding
(8)Steganography 音声や画像などのデータに秘密のメッセージを埋め込む技術
(9)Recon ネットストーキング
(10)Trivia クイズ
(11)Misc
の11種類に分類されて出題されるとあります。
本書ではこの11種類から、CTFの主要エーマとも言える
Reversing
Pwn
Network
Web
が扱われています。
CTFの実践的な入門書としては、他に類書が少ないこともあって評価できる内容ですが、誤植の多さが気になります。
また、解説に終始して、問題サンプルがほとんどないのも残念でなりません。
最終章に( pwn の一環として?)SQL インジェクションが単独でとりあげられていて、CTF という枠を超えて参考になる内容でした。
サポートサイト
https://book.mynavi.jp/supportsite/detail/9784839956486.html
Amazon
楽天ブックス
[読書メモ+正誤情報]
p.39 最終行
誤:「に詳しく書かれています。」
正:(不明)
[参考情報]
https://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%B3%E3%83%87%E3%82%A3%E3%82%A2%E3%83%B3
p.52 10行目
誤:「レジスタ値の変更するときは、」
正:「レジスタ値を変更するときは、」
・Intelの命令セット・リファレンス
×:http://www.intel.co.jp/content/www/jp/ja/developer/download.html/
『IA-32 インテル® アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル』
上巻:基本アーキテクチャ (資料番号 253665-013J) http://www.intel.co.jp/content/dam/www/public/ijkk/jp/ja/documents/developer/IA32_Arh_Dev_Man_Vol1_Online_i.pdf
中巻 A:命令セット・リファレンス A-M (資料番号 253666-013J) http://www.intel.co.jp/content/dam/www/public/ijkk/jp/ja/documents/developer/IA32_Arh_Dev_Man_Vol2A_i.pdf
中巻 B:命令セット・リファレンス N-Z (資料番号 253667-013J) http://www.intel.co.jp/content/dam/www/public/ijkk/jp/ja/documents/developer/IA32_Arh_Dev_Man_Vol2B_i.pdf
下巻:システム・プログラミング・ガイド(資料番号 253668-013J) http://www.intel.com/content/dam/www/public/ijkk/jp/ja/documents/developer/IA32_Arh_Dev_Man_Vol3_i.pdf
p.67 1行目
誤:「push s r c」
正:「push src」
p.67 9行目
誤:「減産」
正:「減算」
p.72 上から3つ目のリスト
誤:loc_1:
xor ecx,ecx
正: xor ecx,ecx
loc_1:
p.74 8行目
誤:「実は、関数呼び出す際に、」
正:「実は、関数を呼び出す際に、」
p.74 Func1 リスト中
誤:「call Func」
正:「call Func2」
p.80 下から13行目
誤:「見かけたら無理をセずに、」
正:「見かけたら無理をせずに、」
p.82 上から17行目
誤:「4.1 脱ビギナーに向けたIDA Proの使い方」
正:「Column 脱ビギナーに向けたIDA Proの使い方」
p.84 上から11行目
「バイナリ問題を解くためのプログラミング技法」
配布されていない
checksec.sh
https://github.com/slimm609/checksec.sh
peda
https://github.com/longld/peda
https://github.com/zachriggle/peda
p.91 peda の便利コマンド
誤:「pdissassemble(pdisas)」
正:「pdissassemble(pdisas)」
rp++
https://github.com/0vercl0k/rp
socat
http://www.dest-unreach.org/socat/
pwntools
http://pwntools.com/
検証プログラムに入力を与える際に、p.99 では「python -c 'print("文字列")' | ./bof 」のように python を使うのに、p.104 では「echo -e '文字列'」 | ./bof2 」のように echo を使うのか?
Hopper : The OS X and Linux Disassembler
http://www.hopperapp.com/
p.117 下から2行目
誤:「ステップ4」
正:「ステップ5」
p.135 下から6行目
誤:「ソケット通信を利用いて」
正:「ソケット通信を利用して」
p.140 下から1行目と3行目
誤:「赤の太枠で囲われた部分」
正:「太枠で囲われた部分」
p.142 上から8行目
誤:「始まりおり」
正:「始まっており」
pcapfix( Windows版 )
https://f00l.de/pcapfix/
https://github.com/Rup0rt/pcapfix/tree/devel
editcap
https://www.wireshark.org/docs/man-pages/editcap.html
Wireshark
https://www.wireshark.org/
p.151 上から3行目
誤:「次の3点に着目をして」
正:「次の4点に着目をして」
p.151 上から12行目
誤:「Coversations」
正:「Conversations」
p.163 最下行
誤:「を使うことが 」
正:「を選択します。」
Scapy
http://www.secdev.org/projects/scapy/
※本書の記載ではバージョンは「2.3.1」だが、Kali Linux に入っているバージョンは、「2.2.0」になっている。
Kali Linux : mnt/hgfs/temp で、ホスト側(Windows7)の c:\temp と共有可能
p.174 上から3行目
誤:「ICMP」
正:「IP」
Network Miner
http://www.netresec.com/?page=NetworkMiner
有償版は、$700 USD。
p.210 コード例
誤:「$_POST[...]」
正:「$_GET[...]」
p.211 下から13行目
誤:「それをによって何が可能」
正:「それによって何が可能」
p.214 上から2行目と3行目
不要
記述に際しては、細心の注意をしたつもりですが、間違いやご指摘がありましたら、こちらからお知らせいただけると幸いです。