# 電腦攻擊與防禦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