Environment
host
- OS version: ubuntu 20.04
- QEMU version: 4.2.1
- gdbserver version: 7.11.1
- buildroot branch: 2016.08.x
firmware
- CPU: MIP32 big endian
Cross compile
測試用程式
撰寫了明顯有bof的測試程式。
1 |
|
buildroot
buildroot可以產出
- cross-compilation toolchain
- root filesystem
- Linux kernel image
- bootloader
我們利用cross-compilation toolchain來編譯我們的source code以及gdbserver。
使用舊版本的builtroot
1 | git clone https://github.com/buildroot/buildroot.git |
調整配置參數
1 | make menuconfig |
target version配置如下圖的。
接下來開始編譯
1 | make -j 16 |
gdbserver編譯
1 | #與路徑有關的指令須調整 |
gdb-multiarch下載
1 | sudo apt-get install -y gdb-multiarch |
編譯測試用程式
1 | #與路徑有關的指令須調整 |
QEMU
firmware emulation
kernel&disk載點
啟動虛擬機
1 | sudo tunctl -t tap0 |
虛擬機內,將/etc/network/interfaces
的內容,替換成下方配置。
1 | # This file describes the network interfaces available on your system |
設置虛擬機網卡IP
1 | ifconfig eth0 192.168.50.1/24 up |
上傳檔案
以下指令在host端執行
1 | #使用scp將韌體root filesystem |
GDB
Guest
在虛擬機中執行以下指令
1 | ./gdbserver 0.0.0.0:9000 ./vuln AAAAAAAAAAAAAAAAAAAAAAAAAA |
Host
在Host上執行以下指令啟動gdb-multiarch
1 | #要將檔案中的符號以及架構讀入 |
gdb中下指令連接到gdbserver,執行以下指令後可以發現確實造成Buffer overflow,覆蓋到PC。
1 | target remote 192.168.50.1:9000 |
Resource
学习记录:交叉编译环境配置(buildroot and gdb&gdbserver)
akpotter/embedded-toolkit
CVE-2020-8423 栈溢出复现