---
# System prepended metadata

title: 電腦攻擊與防禦LAB作業

---

# 電腦攻擊與防禦LAB作業
#### 510558006 林庭亘、510558017 楊杰峰、5118558023 簡君育
 
 
作業要求
===
![](https://hackmd.io/_uploads/r1SjPDy8n.png)

實作環境
===
- 虛擬機:virtualbox 6.1
- 作業系統:ubuntu 20.04 x64
# 前置作業
安裝好作業系統後，先執行各項更新作業
`sudo apt-get install gcc`
`sudo apt-get install libncurses5-dev`
`sudo apt-get update`
`apt-get install –y chrpath gawk texinfo libsdl1.2-dev whiptail diffstat cpio libssl-dev`


實作過程
===
1. 先寫一個簡單的buffer overflow 程式，我們用C去寫
![](https://hackmd.io/_uploads/rk14ADyUn.png)

2. 進入root權限，再利用 `gcc -fno-stack-protector buffer.c`指令去編譯**buffer.c**檔案
![](https://hackmd.io/_uploads/B1nVedkUn.png)


3. 利用 `file a.out` 確認我們作業是64-bits，執行 `./a.out` ，開始嘗試要幾個字才會出現buffer overflow錯誤
![](https://hackmd.io/_uploads/rJxIMu1Ln.png)


4. 發現需要**11組asd**才會觸發**buffer overflow錯誤**
![](https://hackmd.io/_uploads/SyCfX_yLh.png)

5. 進入gdb a.out觀看詳細執行過程，可發現**當262個A搭配4個B時**，執行結果如圖，已可以發現所在位址，有**我們輸入的'B'，也就是42**
![](https://hackmd.io/_uploads/ryFJNcJLh.png)

6. 轉換成**二進制碼**，替換上攻擊的**shell code(/bin/sh)**，執行結果如圖
![](https://hackmd.io/_uploads/BJ5JIc1Uh.png)
**進入/bin/sh**

7. shellcode demo

![](https://hackmd.io/_uploads/H1MKxx082.png)


# 故障排除
1.gcc編譯程式時出現/usr/include/stdio.h:27:10: fatal error: bits/libc-header-start.h
解決方式：Sudo apt-get install gcc-multilib
2.編譯程式時出現Missing libc.so.6
解決方式：sudo apt-get install libgl1-mesa-glx-lts-utopic:i386


