More Related Content
Similar to ナウいAndroidセキュリティ
Similar to ナウいAndroidセキュリティ (9)
More from Hiromu Yakura (14)
ナウいAndroidセキュリティ
- 20. Return-to-libc Attack
• a()からb(int i, int j)を呼び出す
ローカル変数
b(int i, int j) リターンアドレス
int i, int j
呼び出しの引数
ローカル変数
a() リターンアドレス
呼び出しの引数
- 21. Return-to-libc Attack
• 引数とリターンアドレスがスタックに
ローカル変数
b(int i, int j) リターンアドレス 戻れる
int i, int j
呼び出しの引数
ローカル変数 ように
a() リターンアドレス
呼び出しの引数
- 22. Return-to-libc Attack
• ここでバッファオーバーフロー
ローカル変数
b(int i, int j) リターンアドレス
オーバーフロー
呼び出しの引数
ローカル変数
a() リターンアドレス
呼び出しの引数
- 23. Return-to-libc Attack
• ここでバッファオーバーフロー
ローカル変数
b(int i, int j) オーバーフロー
呼び出したい関数
リターンアドレス
呼び出しの引数
ローカル変数
a() リターンアドレス
呼び出しの引数
- 24. Return-to-libc Attack
• ここでバッファオーバーフロー
ローカル変数
b(int i, int j) オーバーフロー
system()
呼び出したい関数
リターンアドレス libc.so
“ls”
呼び出しの引数
ローカル変数 system(“ls”);
a() リターンアドレス
呼び出しの引数
- 25. ASLRではこうなるlibc.so
• ASLRを有効にすると
ローカル変数
b(int i, int j) オーバーフロー
system()
呼び出したい関数
リターンアドレス
“ls”
呼び出しの引数
ローカル変数 system(“ls”);
a() リターンアドレス
呼び出しの引数
- 26. ASLRではこうなる
• ASLRを有効にすると
ローカル変数
b(int i, int j) オーバーフロー
system()
呼び出したい関数
リターンアドレス
“ls”
呼び出しの引数
ローカル変数 system(“ls”);
a() リターンアドレス
呼び出しの引数
libc.so
- 27. ASLRではこうなる
• ASLRを有効にすると
libc.so
ローカル変数
b(int i, int j) オーバーフロー
system()
呼び出したい関数
リターンアドレス
“ls”
呼び出しの引数
ローカル変数 system(“ls”);
a() リターンアドレス
呼び出しの引数
- 28. ASLRではこうなる
• ASLRを有効にすると
ローカル変数
b(int i, int j) オーバーフロー
system()
呼び出したい関数
リターンアドレス
“ls”
呼び出しの引数
ローカル変数 system(“ls”);
a() リターンアドレス
libc.so 呼び出しの引数
- 61. スピード
Default SEAndroid SEAndroid (6months ago)
All 2574 2091 1874
CPU 5561 5525 5374
Memory 1804 1716 1584
I/O 3533 1050 998
2D 346 247 190
3D 1526 1917 1224
Editor's Notes
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n