緩衝區溢位
講者 : 邱妍瑛
日期:2019 / 12 / 1
大綱
- 緩衝區溢位簡介
- Lab - 簡單的實作
- 延伸介紹
- 參考資料
Outline
Buffer overflow
緩衝區溢位簡介
緩衝區溢位簡介
是針對程式設計缺陷,
向程式輸入超過了處理限制的範圍的資料,
導致相鄰存儲器位置被覆蓋,
從而破壞程式執行或趁著中斷之際取得系統控制權。
U | S | E | R | N | A | M | E |
---|
1 | 2 |
---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
緩衝區 (8byte)
溢位
8 | 9 |
Buffer overflow
Lab - 簡單的實作
寫程式囉
使用 C 語言:
#include <stdio.h>
void Name()
{
char name[10];
printf("What's your name?\n");
gets(name);
printf("Hey %s, how are you?\n", name);
}
int main()
{
Name();
return 0;
}
Step 1
安裝 gcc (Mac)
請按這個連結前往 homebrew,
照官網步驟安裝好後,在終端機輸入:
Step 2
$ brew install gcc
$ gcc --version
$ whereis gcc
確認是否安裝 gcc :
安裝 gcc (Windows)
請按這個連結前往 minGW,
安裝後更改環境變數為你的 minGW 的路徑
Step 2
$ gcc --v
確認是否安裝 gcc :
找到 PATH 的方式可參考這裡。
真的不懂可以參考這個影片的 14:40 秒左右https://www.bilibili.com/video/av75301720/
用 gcc 編譯
Step 3
$ gcc overflow.c -o overflow -fno-stack-protector
打開終端機並輸入 :
overflow.c 是你剛剛的檔案名稱
Step 3
$ gcc overflow.c -o overflow -fno-stack-protector
意思是「不啟用堆棧保護器」。
-fno-stack-protector
用於設置編譯後的檔案名稱。
-o
$ gcc -o overflow overflow.c -fno-stack-protector
執行程式
Step 4
$ ./overflow //mac
$ overflow //windows
What is your name?
>>>Erica
Hey Erica, how are you?
如果我們的輸入少於10個字元:
Step 4
What is your name?
>>>EricaOneAAAAAAAAAA
Hey EricaOneAAAAAAAAAA, how are you?
segmentation fault
如果我們的輸入大於10個字元:
這表示我們成功使用「緩衝區溢位」使程式中斷。
segmentation fault
Buffer overflow
延伸介紹
如果刪除此命令,重新編譯並執行,應該會失敗。
fno-stack-protector
當輸入少於 10 個字元
▼ Stack
為什麽會 「segmentation fault」?
name[1] ... name[10] |
rdp |
ret of Name |
當輸入比 10 個字元多
▼ Stack
name[1] ... name[10] |
rdp |
ret of Name |
Erica
OneAA
AAAAAAAA
Buffer overflow
參考資料
-
Buffer overflow From Wikipedia. 2019/11/10 Retrieved from: https://reurl.cc/b6N9Yo
-
緩衝區溢位攻擊之一(Buffer Overflow) 。2019/11/10. Retrieved from: https://reurl.cc/9zb4vd
- Buffer Overflow. 2019/11/10. Retrieved from: https://reurl.cc/jdmDyp
- 在 Windows 10 中安裝 MinGW 及設定環境變數。2019/11/10. Retrieved from: https://reurl.cc/jdmvvm
- GCC 下載安裝與基本使用教學。2019/11/10. Retrieved from: https://reurl.cc/zyK660
-
攻擊行為-緩衝區溢位 Buffer Overflow。2019/11/10. Retrieved from: https://reurl.cc/Ylk0VX
Buffer overflow
Thanks for listening.
緩衝區溢位
By oneone
緩衝區溢位
SIRLA - This 15 speech
- 66