SlideShare a Scribd company logo
1 of 102
Download to read offline
PWNの超⼊⾨
2018/3/25
@⼤和セキュリティ神戸
⽥中ザック (@yamatosecurity)
PWN(ポーン)とは?
• 元々「own」から来ている
• 「own」= 自分の物にする。ハッカースラングで「侵⼊、支配」等
• 例:

I owned/pwned him. (彼をハックした)

I/he/they got owned/pwned. (ハックされた!)

They’re owned/pwned bad. (あの会社は完全にハックされてる)

機密情報が全部流出され、バックドア等も置かれているニュアンス
• CTFではメモリ破壊系の脆弱性を悪用するバイナリ問題のジャンル
Pwnie Awards(ポニーアワード)
• https://pwnies.com/ Blackhatの非公式アワード
メモリ破壊系の脆弱性
• Buffer Overflow (Stack Overflow)
• Heap Overflow(ヒープオーバーフロー)
• Format String (書式⽂字列攻撃)
• Use After Free (UAF) (別名:Dangling Pointer)
• Write What Where (任意の場所に任意の値を書き込む)
• Type confusion (型の取り違え)
• Rowhammer等々
バイナリ/仮想アドレス空間の構成
上位メモリ
下位メモリ
「プロテクトモード」や

「ページング⽅式」等を

ご存知ない⽅は
wikipediaの記事を

読んで下さい
仮想アドレス空間の構成(32ビット)
Base/Frame Pointer (Intel 32bit: EBP、64bit: RBP、ARM: R11、THUMB: R7)

ベースポインターからのオフセットで関数のローカル変数を参照
(次の命令を指す。Intel 32bit: EIP、64bit: RIP、ARM等:PC

別名:Instruction Pointer (IP)、命令ポインター)
カーネルメモリ(上位メモリ)
ユーザ
モード
メモリ
Stack Pointer: スタックの先頭を指している。PUSH/POP命令に使う
スタック
• プロセスの基本的なデータ構造
• LIFO - Last In First Out (後⼊れ先出し)
• 関数が呼び出された時(call命令時)に、

呼び出した関数のベースポインター、戻り値、関数の引数、

関数のローカル変数をスタックに保存する
• ⼀時的にデータを保存する時に使われる
バッファーオーバーフロー
•ローカル変数のバッファーが溢れると

保存されたベースポインターや戻り値が

上書きされる
•関数がreturnする時に上書きされた

アドレスに⾶ばされる
•攻撃者のコード(シェルコード)を

AAAAのバッファーに置いて、

戻り値をそのバッファーのアドレスに

⾶ばしたら任意のコード実⾏が可能
•シェルコードをそのアーキテクチャの

機械語で書かないといけない
•最近のOSではスタックにあるデータを

実⾏できないので⼯夫が必要
下位メモリ
上位メモリ
CPUのレジスタ
• CPUが内蔵する記憶回路(16/32/64ビットで小さいけど⼀番早い!)
• 専用レジスタ:スタック、ベース、PC、ステータス等
• 汎用レジスタ:MSP430: r4-r15、ARM: r0-r12
• 汎用レジスタは値かメモリアドレスが格納されている
• MSP430:
• r0 = Program Counter (PC)
• r1 = Stack Pointer (SP)
• r2 = Status Register (SR)
• r3 = Constant Generation (CG)
SR (ステータスレジスタ)
• CPUが命令を実⾏後にフラグ(ビット)をセットする
• CF(キャリーフラグ):

ある桁での計算結果が、その桁で表すことのできる数を

超えたときに、キャリーとして1つ上の桁へ加えられる。

例:8ビットレジスタの場合:

255 + 9 = 264だけど255がmaxなので、

(264 & 255 = 8、CF = 1)。1 - 2 = 255、CF =1。
• ZF (ゼロフラグ):

算術演算命令の結果が0であった場合、真 (ZF=1)。

ADD、SUB等の演算命令。

論理演算命令の結果が0であった場合、真 (ZF=1)。

AND、OR等の論理演算命令
• NF (ネガティブフラグ):

算術演算命令の結果がネガティブの場合
関数 (Functions)
•与えられた⽂字や数値に対し、

定められた処理を⾏って結果を返す機能
•例:

int add(int x, int y)

{

int sum;

sum = x + y;

return(sum);

}
•add(2,3)
パラメータ (Parameters)
5がリターンされる。2と3が引数(Arguments)
ローカル変数 (Local Variables)
戻り値(別名:返り値、Return Value)
関数 (Functions)
•プログラムは普段main()関数から始まる
•int main()

{ 

int sum; 

sum = add(2,3);

printf(“Result is %d ", sum);

return 0;

}
add関数が終わったら

次の命令(printf)に

戻らないといけない。
そのため、何処かに

戻りアドレス (Return Address)を

保存しないといけない。
また、2と3の引数を

何処かに保存しないと。
関数 (Functions)
•引数、リターンアドレス、ローカル変数は

スタックに⼀時的に保存される!
•add(2,3);をアセンブリ⾔語にすると、

まず引数をスタックにPUSHしてからCALL add
•PUSH 3
•PUSH 2
•CALL add
スタック
3
2
SP
SP
CALL命令
•CALL命令は次の命令のアドレスをスタックに

保存(push)してから関数にJUMPする
•PUSH <次の命令アドレス>
•PC = 関数のアドレス
•SPがpush/pop命令で

自動的にトップに

移動される
スタック
3
2 SP
SP戻りアドレス
関数の構成 (アセンブリ)
エピローグ
コード
プロローグ
•プロローグ
•BPを保存して (push ebp)
•BP <= SP (mov esp, ebp)
•SPを増やす (sub esp, 10)

(ローカル変数のスペースを作る)
•エピローグ
•SP <= BP (mov ebp, esp)
•古いBPをスタックからBPに戻す (pop ebp)
•SPにある戻りアドレスに戻る (ret)
関数 (Functions)
スタック
フレーム
下位メモリ
上位メモリ
関数を呼び出す前に引数をPUSH
mainの
スタックフレーム
BP (上位メモリ)
SP (下位メモリ)
PUSH 3
PUSH 2
スタック

(mainの
ローカル変数等)
3 (addの引数)
2 (addの引数) SP
※スタックは実は下に拡張
CALL命令
スタック

(mainの
ローカル変数等)
3 (addの引数)
2 (addの引数)
SP戻りアドレス
CALL <関数>
まず戻りアドレスを保存
BP (MainのStack Frame)
プロローグ
main()

フレーム
3 (addの引数)
2 (addの引数)
SP
戻りアドレス
BP
mainのBP
1. PUSH BP
SP/BP
main()

フレーム
3 (addの引数)
2 (addの引数)
戻りアドレス
mainのBP
2. MOV SP, BP
main()

フレーム
3 (addの引数)
2 (addの引数)
戻りアドレス
mainのBP
addの変数
BP
SP
3. SUB SP, 10
エピローグ
main()

フレーム
3 (addの引数)
2 (addの引数)
戻りアドレス
mainのBP
addの変数
BP
SP
1. MOV BP, SP
main()

フレーム
3 (addの引数)
2 (addの引数)
戻りアドレス
mainのBP SP/

BP
main()

フレーム
3 (addの引数)
2 (addの引数)
戻りアドレス
2. POP BP
SP
BP
0.
エピローグ
main()

フレーム
3 (addの引数)
2 (addの引数)
戻りアドレス
3. RET
SP
BP main()

フレーム
3 (addの引数)
2 (addの引数) SP
BP
PC/IP = 戻りアドレス
アーキテクチャ
• ⼆種類
• CISC (Complex Instruction Set Computer)

(複雑命令セットコンピュータ) 例:Intel等

メリット:プログラミングが少し楽になる

デメリット:ハードウェアが複雑になるため、より電源を消費し、遅い
• RISC (Reduced Instruction Set Computer)

(縮小命令セットコンピュータ) 例:マイコン、ARM、MSP430等々

メリット:パフォーマンスがCISCより2~4倍速い。低消費電⼒。

デメリット:プログラムサイズが増える
アセンブリ⾔語のシンタックス
• ⼆種類
• Intel (Windows等)

<命令> <dst>(転送先), <src> (転送元) (オペランドの⽅向:←)
• AT&T (Linux GDB等)

<命令> <src> (転送元), <dst>(転送先) (オペランドの⽅向:→)

mov #0x2400, r15 (“0x2400”の2バイト(word)をr15にコピー)

mov.b #0x4b, 0x0(r15) (“0x4b”の1バイトをr15オフセット0にコピー)

mov.b #0x7a, 0x1(r15) (“0x4b”の1バイトをr15オフセット1にコピー)

mov.b @r15, r14 (r15にあるメモリアドレスにある値をr14にコピー)

mov &0x015c, r5 (0x015cのメモリアドレスにある値をr5にコピー)
エンディアン(バイト順)
• ⼆種類
• ビッグエンディアン (最上位ビット (MSB)が左。Solaris、PowerPC等)
• リトルエンディアン(最下位ビット (LSB)が左。Intel等)
重要なアセンブリ
•CALL: 関数を呼び出す。

PUSH PC+2(次の命令をスタックに保存)

PC = dst
•CLR = レジスタをクリア(reg = 0)
•CMP = CoMPare (dst - src、0の場合は⼀致)
•INC = INCrement (+1)
•INCD = Double INCrement (+2)
•JC = Jump if Carry set
•JEQ/JZ = Jump if EQual/Zero
•JMP = JuMP
•JN = Jump if Negative set
重要なアセンブリ
•JNC = Jump if Not Carry
•JNE/JNZ = Jump if Not Equal/Zero
•MOV = データをコピー
•NOP = 何もしない
•POP = SPのアドレスにあるデータを

レジスタにコピーし、SP = SP +2
•PUSH = SP = SP - 2、レジスタにある

データをSPにコピー
•RET = 関数からリターン

PC = @SP、SP = SP + 2
•SXT = Sign eXTension (8bitのMSBを16bitにextend)

例:00000000 10000000 → 11111111 10000000
11111111 00000000 → 00000000 00000000
•TST(.b) = CMP(.B) #0, xxx (0かどうかチェック)
重要なアセンブリ
•命令に「.b」が付いている場合は、

2バイト(16bit)ではなく、1バイト(8bit)の値に対して命令を実⾏する
•例:mov.b #0x0, -0x4(r4)

ヌルバイト(0x0)をr4のメモリアドレスオフセット-0x4にコピー

(r4 = 2444だったら、2440がヌルバイトで上書きされる。

2441は影響なし)
Microcorruption CTF
• https://microcorruption.com/ (Matasano (現在NCC Group) & Squareが提供)
• バイナリ下忍(初⼼者)のためのCTF
• ウェブブラウザだけでプレーできる!ツール等不要!
• MSP430のRISC、リトルエンディアン、Word Aligned(アドレスは偶数)
• 世界中の倉庫の電⼦錠をハックしていくというストーリー
• マニュアル:https://microcorruption.com/manual.pdf

(Cのサンプルコードあり。必ずRTFM!)
• その他のMSP430 Assemblyマニュアル:

http://www.ece.utep.edu/courses/web3376/Notes_files/ee3376-assembly.pdf

http://www.ece.uah.edu/~milenka/cpe323-10S/lectures/cpe323msp430_ISA.pdf
割り込み
• ソフトウェア割り込み (Interrupt):

マイコンの&0x0010にカーネルモードに⼊るためのcallgateがある。

割り込みを使って、コンソールからPWを⼊⼒したり、

メッセージを出⼒したりできる。

割り込みの種類はステータスレジスタのR2の上位バイトから渡される。
引数はスタックから渡される。
• ソフトウェア割り込み「0x7F」で電⼦錠を解除する
• INT 0x00: putchar (1バイトを出⼒)

割り込みの⼀覧
•INT 0x00: putchar (1バイトを出⼒)
•INT 0x01: getchar (1バイトを⼊⼒)
•INT 0x02: gets(dst_address, max_length)(複数のバイトを⼊⼒)(ヌルバイトで⽌まる)
•INT 0x10: DEP (データ実⾏防⽌)を有効にする
•INT 0x11: メモリページを実⾏可能か書込可能のどちらかにする
•INT 0x20: rand (16ビットの乱数⽣成)
•INT 0x7D: HSM-1に接続。⼀番目の引数は⼊⼒されたPW、

⼆番目はPWが⼀致した時のフラグのメモリアドレス
•INT 0x7E: HSM-2に接続。引数が⼊⼒されたPW
HSM
•Hardware Security Module
•Model 1
• 割り込み「0x7D」でパスワードをマイコンからHSMに送る
• パスワードが⼀致した場合は、メモリのある所のバイトをセットする
•Model 2
• よりセキュアなHSMで直接HSMから解除する
• 割り込み「0x7E」でパスワードをマイコンからHSMに送って

HSMにあるPWと⼀致した場合はHSMが直接解除する
CTFの正しいやり⽅
•※やり過ぎて、しんどくなって諦めたら意味無い!!ので

 頑張り過ぎないように!(笑)
•まず、⼀回問題に挑戦してみる!
•自分の限界まで来たら、頭を冷やしてもう⼀回挑戦するか、

ヒントを見る
•また限界まで来たら次のヒントや解説(write up)を見る
•Write upが無い場合は先輩などに聞く (ソーシャルハック)
•何より楽しむのが⼤事!!! 
•※グループでやった⽅が楽しいし、勉強になる!
0. Tutorial
•https://microcorruption.com/でアカウントを作成して、

Tutorialを⾔われる通りやって下さい
「⼤熱⾎! アセンブラ⼊⾨」 by 坂井 弘亮
その他のバイナリハッキングのコツ
• プロローグとエピローグの

コードをあまり気にしないで

その間のコードを解析する!
• バッファオーバフローの場合、

戻りアドレスが上書きされる

ので、「ret」にbreakpointを

付けて、spの値を確認したり

解析して下さい
• sかnでレジスタとスタックの

メモリダンプを見ながら解析
プロローグ
エピローグ
その他のバイナリハッキングのコツ
•A型、完璧主義者は絶対駄目!!!
•全部理解しようとしたらしんどいし、不可能!!
•まず問題を解ければ良い!
•余裕があれば、問題を解いてから

更に解析しても良い

※ストレスがたまらない程度にね!
1. New Orleans (10点)
• Bluetoothなんちゃらと

書いてあるけど無視して良い
• 取り敢えず

cでスタート

適当にパスワードを⼊⼒

sでステップ

パスワードを探して下さい
New Orleans
• PWを⼊⼒後、

check_passwordが

呼ばれる
• tst r15 (return valueを確認)

ZF=1の場合は

#4462: Access Granted

0の場合は、

次の命令で

「Invalid password」
• 他に面白い関数ある?
New Orleans
ヒント1
New Orleansヒント1
• ループで1バイト単位で

⼊⼒したPWがr14の

アドレスにあるPWと⼀致

しているかどうか確認している
• ハードコードされたPWが

分かったらsolveで解く!
New Orleans
ヒント2
New Orleansヒント2
• create_passwordの関数が

気になる!
• break create_passwordで

sしたらパスワードを

Memory Dumpで確認
New Orleansの答え
New Orleansの答え
パスワードが「Kz5+{g5」でござる
※プレーヤーによってPW、アドレス、カナリア等が違うのでコピペで解けない!!
2. Sydney (15点)
•「前のモデルはメモリからパスワード

を取得できる脆弱性の報告があった

ので、修正しました」
•取り敢えず適当にPWを⼊⼒し、

sで解析して下さい
Sydney
ヒント1
Sydney ヒント1
• cmp命令でパスワードの最初の

2バイトが0x5021であるかどうか

確認している・・
• ⼀致しない場合は、

44acに⾶んでr14とr15をゼロにする
• mainに戻った時にゼロフラグがセット

されているので、4452でAccess Grantedに

⾶ばないでInvalid Passwordで終了
Sydney
ヒント2
Sydney ヒント2
Little/Big Endianにご注意を!
Sydneyの答え
Sydney の答え
PW: 2150735d53472639
※プレヤーによって

フラグが異なる可能性がある
3. Hanoi (20点)
• ハードウェアセキュリティモジュール
「LockIT Pro HSM-1」に接続している
• https://microcorruption.com/manual.pdf
• Interrupt 0x7DでパスワードをHSMに送る
• パスワードが⼀致した場合はメモリのある所の

バイトがセットされる
Hanoi ヒント1
Hanoi ヒント1
•455aでパスワードが正しい

かどうかチェックしている
•HSM-1が&0x2410にパスワード

チェックのリターン値を

セットしているっぽい
Hanoi ヒント2
バッファーオーバーフロー!
Hanoi の答え
Hanoiの答え
88 x (17回)をPWに⼊れると

リターン値が上書きされて
ロックが解除される
4. Cusco (25点)
•また「LockIT Pro HSM-1」に接続している
•「長過ぎるパスワードに関する問題を修正した」
Cuscoのヒント1
またバッファーオーバーフロー!
Cuscoのヒント2
18-19バイト目で好きなアドレスに

PCを⾶ばすことができる。
何処に⾶ばしたらロックが解除される?
Cuscoの答え
• 4528のunlock_doorは?
• PW: 

414141414141414141414141414141412845

41 x 16回 + 2845
5. Reykjavik (35点)
•軍用の強度な暗号を利用している
•HWセキュリティモジュールに接続していない
•暗号化されているのでパスワードをメモリから読めない
Reykjavikヒント1
Reykjavikのヒント1
•パスワード確認コードは暗号化されている
•スタックから実⾏されるので、

上⼿く逆アセンブルできなくて見づらい
•パスワードを⼊⼒後に「s」で命令をチェック
Reykjavikヒント2
cmpを探して下さい
Reykjavikの答え
PW: hexで21af
6. Whitehorse (50点)
HSM-2に接続している
Whitehorseヒント1
Whitehorseのヒント1
バッファオーバーフローの問題
Whitehorseヒント2
Whitehorseのヒント2
使えるアドレス(解除してくれるアドレス)
が無いのでシェルコードを書く必要がある
Whitehorseヒント3
Whitehorseのヒント3
•使えるアドレス

(解除してくれるアドレス)が無いので

シェルコードを書く必要がある
•0x7eを呼び出す事は

できるけど役に立たない
•(HSM-2側で認証/解除を⾏っている)
Whitehorseの答え
Whitehorseの答え
•シェルコード:

3012 7f00 PUSH #x7f

b012 3245 call <INT>
•パスワードが3884から始まるので

PW: 30127f00b012324541414141414141418438

(3012 7f00 b012 3245 + (41 x 8) + 8438)
7. Johannesburg (20点)
•HSM-1に接続している
•「長過ぎるPWを拒否する」
Johannesburgのヒント
Johannesburgのヒント
•PWの長さをカナリアで確認している
Johannesburgの答え
Johannesburgの答え
•18バイト目が0x9cかどうかチェックしている

(カナリアが上書きされているかどうかチェック)
•PW: 9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c4644

(9c x 18) + 4644で4446のunlock_door関数に⾶ばす
8. Montevideo (50点)
•HSM-2に接続している
•「Shift Leftでセキュア開発している」
Montevideoヒント1
Montevideoのヒント1
•strcpyされているので、

ヌルバイトが使えない!つらい!
•使えたらWhitehorseのように

3012 7f00 push#0x7f

b012 4c45 call #0x454c <INT>

で簡単にできる・・
•ヌルバイトなしで使える命令ある?Assembly頑張って!
Montevideoヒント2
Montevideoのヒント2
•break 4460 <INT>
•sでINT 0x7eを解析
•どうやってINT 0x7fのシェルコードを作成?
•(ヌルバイト無しで・・)
Montevideoヒント3
Montevideoのヒント3
•INT 0x7fを解析したら

sr = ff00

call 0x10

できたら解除できる
•検証:(プログラムの何処でもbreakして)

let sr = ff00

let pc = 455c (call 0x10)

c

したら解除される
Montevideoヒント4
Montevideoのヒント4
•1つのやり⽅:

mov ????, r15 (バイト順に注意)

inc r15 (0xff00になるように)

mov r15, r2 (r2 = sr) 

call #0x0010 (call 0x10)
Montevideoヒント5
Montevideoのヒント5
• 3f40 feff mov #0xfffe, r15

1f53 inc r15

024f mov r15, r2 

b012 1000 call #0x0010
•最後にヌルバイトがあるので、

シェルコードを最後にする必要がある
ゴミ(AAAAAA・・・)
戻り値

改ざん シェルコード
Montevideoの答え
Montevideoの答え1
•ゴミデータ: A * 16
•戻り値改ざん:0x4402 (4400にヌルあるため)
•シェルコード(SC):3f40fffe1f53024fb0121000
•ゴミ(16B)+ 戻り値改ざん + ゴミ(2B)+ SC
•PW: 41414141414141414141414141414141

024442423f40fffe1f53024fb0121000
Montevideoの

他の解き⽅
ヌルの無いシェルコード作成(上級)
•Kali/DebianからgccのMSP430プラグインをインストール必要がある
•デフォルトのレポジトリに⼊っていないので⼀時的にdebian repoを追加
•leafpad /etc/apt/sources.listで以下の追加/保存:

deb http://deb.debian.org/debian stretch main

deb-src http://deb.debian.org/debian stretch main
•apt-get update
•apt-get install gcc-msp430 gdb-msp430
•debianレポジトリを削除:

leafpad /etc/apt/sources.list で上記のrepoを削除

rm /etc/apt/sources.list.d/nodesource.list (なぜかこれが作成されるので削除)
ヌルの無いシェルコード作成(上級)
• leafpad msp430-shellcode.cで以下のようなシェルコードを作成

main() {
asm(
"mov #0xf010, r4n” //r4 = 0xf010 (1111 0000 0001 0000)
"and #0x0fff, r4n” // & 0x0fff (0000 1111 1111 1111)
// r4 = (0000 0000 0001 0000) (= 0x10, 16)
"mov #0xff01, r2n” // r2 (SR) = 0xff01
"dec r2n” // r2 (SR) = 0xff00
"call r4n” // Call 0x10
);
}
•msp430-gcc -O0 -mmcu=msp430g2553 ./msp430-shellcode.c -o msp430-shellcode
ヌルの無いシェルコード作成(上級)
• msp430-objdump -d ./msp430-shellcode(でdisassemble)
• msp430-gdb ./msp430-shellcode(でも同じようにできる)

(gdb) disas /r main
ヌルの無いシェルコード作成(上級)
• なんと!こんなめんどくさいことをやらなくても、

サイトにMSP430アセンブラあったわ!
• https://microcorruption.com/assembler
Montevideoの答え(2)
•ゴミデータ: A * 16
•戻り値改ざん:0x4402 (4400にヌルあるため)
•シェルコード(SC):344010f034f0ff0f324001ff12838412
•ゴミ(16B)+ 戻り値改ざん + ゴミ(2B)+ SC
•PW: 41414141414141414141414141414141

02444242344010f034f0ff0f324001ff12838412
•ヌル無いけど、SCが12バイトから16バイトに増えた!
Montevideoの答え(3)
•ゴミデータ: A * 16
•戻り値改ざん:0x4460 (Call <INT>)
•シェルコード(とは⾔えないけど):7f (1バイト!)
•PW: 41414141414141414141414141414141

60447f
•Call <INT>したらSPが0x7fになるので、

ロックが解除される
9. Santa Cruz (50点)
•長過ぎるパスワードを

拒否する
•HSM-1に接続している
•ユーザ名も必要!
•もう資料作成疲れた∼
•皆さん、できる所まで頑張って楽しんで下さいね!
•(ネットの何処かに英語のwrite upがあるので、

限界まで来たらそれをご参考に∼)
•最後までできたら、結構強くなるはず!

More Related Content

What's hot

冬のLock free祭り safe
冬のLock free祭り safe冬のLock free祭り safe
冬のLock free祭り safe
Kumazaki Hiroki
 

What's hot (20)

セキュリティを楽しむ(CTFとbugbountyの始め方)
セキュリティを楽しむ(CTFとbugbountyの始め方)セキュリティを楽しむ(CTFとbugbountyの始め方)
セキュリティを楽しむ(CTFとbugbountyの始め方)
 
CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)
 
ctfで学ぼうリバースエンジニアリング
ctfで学ぼうリバースエンジニアリングctfで学ぼうリバースエンジニアリング
ctfで学ぼうリバースエンジニアリング
 
第二回CTF勉強会資料
第二回CTF勉強会資料第二回CTF勉強会資料
第二回CTF勉強会資料
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
いまさら聞けないselectあれこれ
いまさら聞けないselectあれこれいまさら聞けないselectあれこれ
いまさら聞けないselectあれこれ
 
型安全性入門
型安全性入門型安全性入門
型安全性入門
 
冬のLock free祭り safe
冬のLock free祭り safe冬のLock free祭り safe
冬のLock free祭り safe
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
Format string Attack
Format string AttackFormat string Attack
Format string Attack
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
分散システムの限界について知ろう
分散システムの限界について知ろう分散システムの限界について知ろう
分散システムの限界について知ろう
 
katagaitai CTF勉強会 #3 crypto
katagaitai CTF勉強会 #3 cryptokatagaitai CTF勉強会 #3 crypto
katagaitai CTF勉強会 #3 crypto
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
 
協調フィルタリング入門
協調フィルタリング入門協調フィルタリング入門
協調フィルタリング入門
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
 
katagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Cryptokatagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Crypto
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 

Similar to PWNの超入門 大和セキュリティ神戸 2018-03-25

Similar to PWNの超入門 大和セキュリティ神戸 2018-03-25 (6)

Buffer overflow
Buffer overflowBuffer overflow
Buffer overflow
 
初めてのCPUを作ってみた
初めてのCPUを作ってみた初めてのCPUを作ってみた
初めてのCPUを作ってみた
 
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
 
Richard high performance fuzzing ja
Richard  high performance fuzzing jaRichard  high performance fuzzing ja
Richard high performance fuzzing ja
 
Deep learning Libs @twm
Deep learning Libs @twmDeep learning Libs @twm
Deep learning Libs @twm
 
20151228_マイナンバー対応、情報漏洩対策にアクセスコントロールとカラムベースのデータ暗号化ソリューション by 株式会社インサイトテクノロジー 森田俊哉
20151228_マイナンバー対応、情報漏洩対策にアクセスコントロールとカラムベースのデータ暗号化ソリューション by 株式会社インサイトテクノロジー 森田俊哉20151228_マイナンバー対応、情報漏洩対策にアクセスコントロールとカラムベースのデータ暗号化ソリューション by 株式会社インサイトテクノロジー 森田俊哉
20151228_マイナンバー対応、情報漏洩対策にアクセスコントロールとカラムベースのデータ暗号化ソリューション by 株式会社インサイトテクノロジー 森田俊哉
 

More from Isaac Mathis

More from Isaac Mathis (7)

Mob security キャリアアドバイスとライフハック
Mob security キャリアアドバイスとライフハックMob security キャリアアドバイスとライフハック
Mob security キャリアアドバイスとライフハック
 
2019 12-14 DIY WIDS IoTSecJP Version 6.0
2019 12-14 DIY WIDS IoTSecJP Version 6.02019 12-14 DIY WIDS IoTSecJP Version 6.0
2019 12-14 DIY WIDS IoTSecJP Version 6.0
 
近年急増のサイバー攻撃の傾向(2018/5)
近年急増のサイバー攻撃の傾向(2018/5)近年急増のサイバー攻撃の傾向(2018/5)
近年急増のサイバー攻撃の傾向(2018/5)
 
“Stay Right”ペンテスト体験:SANS Holiday Hack Challenge 2017の解説 & Walkthrough
“Stay Right”ペンテスト体験:SANS Holiday Hack Challenge 2017の解説 & Walkthrough“Stay Right”ペンテスト体験:SANS Holiday Hack Challenge 2017の解説 & Walkthrough
“Stay Right”ペンテスト体験:SANS Holiday Hack Challenge 2017の解説 & Walkthrough
 
DDEを悪用する Macroless Office Document Exploits
DDEを悪用する Macroless Office Document ExploitsDDEを悪用する Macroless Office Document Exploits
DDEを悪用する Macroless Office Document Exploits
 
Meltdown/Spectreの脆弱性、リスク、対策
Meltdown/Spectreの脆弱性、リスク、対策Meltdown/Spectreの脆弱性、リスク、対策
Meltdown/Spectreの脆弱性、リスク、対策
 
SANS Holiday Hack 2017 (非公式ガイド)
SANS Holiday Hack 2017 (非公式ガイド)SANS Holiday Hack 2017 (非公式ガイド)
SANS Holiday Hack 2017 (非公式ガイド)
 

Recently uploaded

研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
atsushi061452
 

Recently uploaded (16)

5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
 
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
 
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
 
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルLoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
 
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
 
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
 
Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )
 
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
 
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
 
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
 
20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf
 
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltd
 
情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイント
 
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
 
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
 

PWNの超入門 大和セキュリティ神戸 2018-03-25