CTF-PWN环境搭建
在準備安裝之前.可以換一下源: 參考
1.虛擬環境:Ubuntu 18.04
2.必備一般軟件
vim:個人必備,強烈建議學習一點vim的相關知識,可以提高效率,避免安裝過多的編輯器或者IDE git:必備,很多高效的插件都是放在GitHub上的 python:必備,建議python3,畢竟python2已經不支持了 pip:必備,有一些插件需要使用pip進行安裝 一款編輯器:這個看個人需求,vscode、sublime text等,個人喜歡就好。如果有條件的話,可以設置一下配置,當作一個簡單的開發IDE使用,畢竟Pwn環境中開發的代碼不會很多。以上各軟件根據官方文檔自行安裝即可。
3.Pwn常用軟件
pwntools
一個ctf框架和漏洞利用開發庫,用python開發,必備神器,作用不多解釋。
安裝方法:
個人使用的是python2版本,需要注意一下。pwntools現在支持python3了,這里給出GitHub地址,有需要的可以參考其readme進行安裝python3的pwntools。支持python3的pwntools
安裝完成后,打開python測試, 執行from pwn import *不會報錯即可。
備注:在mac平臺下不要使用pip安裝,你會懷疑人生的,使用homebrew安裝
gdb
動態調試軟件,必備。
安裝方法:
peda/pwngdb/gef
這是常見的gdb的三個插件,配合gdb使用可以提升調試效率。
安裝pwndbg
1. git clone https://github.com/pwndbg/pwndbg2. cd pwndbg3. ./setup.sh安裝peda:
git clone https://github.com/longld/peda.git ~/peda echo "source ~/peda/peda.py" >> ~/.gdbinit安裝gef:
wget -q -O- https://github.com/hugsy/gef/raw/master/scripts/gef.sh| sh wget -q -O ~/.gdbinit-gef.py https://github.com/hugsy/gef/raw/master/gef.py echo source ~/.gdbinit-gef.py >> ~/.gdbinit因為在同一時刻只能使用一種插件,而且在解決不同類型的題目時使用不同的插件,因此需要配置三種插件的快捷切換。
首先,gdb使用哪種插件是在.gdbinit文件(一般在root目錄下)中使用source進行控制的,我們可以在使用插件時注釋掉其他的source命令,即可單獨使用某一插件。但是每次都編輯該文件實在是麻煩,因此可以使用腳本進行選擇。巧合之下,之前看到一位師傅寫了個自動選擇插件的腳本,很是好用。
#!/bin/bashfunction Mode_change {name=$1gdbinitfile=~/.gdbinit #這個路徑按照你的實際情況修改# gdbinitfile=/root/Desktop/modepeda="source ~/peda/peda.py" #這個路徑按照你的實際情況修改gef="source ~/.gdbinit-gef.py" #這個路徑按照你的實際情況修改pwndbg="source /opt/pwndbg/gdbinit.py" #這個路徑按照你的實際情況修改sign=$(cat $gdbinitfile | grep -n "#this place is controled by user's shell") #這是一個定位flag,此處上面的查找內容要和你自己的保持一致pattern=":#this place is controled by user's shell"number=${sign%$pattern}location=$[number+2]parameter_add=${location}iparameter_del=${location}dmessage="TEST"if [ $name -eq "1" ];thensed -i "$parameter_del" $gdbinitfilesed -i "$parameter_add $peda" $gdbinitfileecho -e "Please enjoy the peda!\n"elif [ $name -eq "2" ];thensed -i "$parameter_del" $gdbinitfilesed -i "$parameter_add $gef" $gdbinitfileecho -e "Please enjoy the gef!\n"elsesed -i "$parameter_del" $gdbinitfilesed -i "$parameter_add $pwndbg" $gdbinitfileecho -e "Please enjoy the pwndbg!\n"fi}echo -e "Please choose one mode of GDB?\n1.peda 2.gef 3.pwndbg"read -p "Input your choice:" numif [ $num -eq "1" ];thenMode_change $numelif [ $num -eq "2" ];thenMode_change $numelif [ $num -eq "3" ];thenMode_change $numelseecho -e "Error!\nPleasse input right number!"figdb $1 $2 $3 $4 $5 $6 $7 $8 $9現在我們把這個shell腳本放到一個環境變量指向的路徑里面,查看一下自己的路徑,shell腳本放進去。我放在了/usr/local/sbin目錄下,這樣就可以執行 gdb.sh,輸入對應插件的數字就可以選擇使用哪個插件,無需手動更改.gdbinit文件。
實在不會可以參考這位師傅的教程:自動選擇gdb插件
32位程序支持
必備,裝它。 apt-get install libc6-dev-i386qemu
這是arm的pwn環境,前期可以不安裝,但是終究是逃不過的,建議一步到位。
安裝qemu:
安裝依賴庫:
sudo apt-get install -y gcc-arm-linux-gnueabisudo apt-get install qemu libncurses5-dev gcc-arm-linux-gnueabi build-essential gdb-arm-none-eabi synaptic gcc-aarch64-linux-gnu eclipse-cdt gitLibcSearcher
泄露libc庫中函數的偏移的庫,建議安裝,可以節省時間,提高效率。
安裝LibcSearcher:
ROPgadget和one_gadget
ROPgadget是用來找gadget的,one_gadget用來尋找libc庫中的execve(’/bin/sh’, NULL, NULL)可以一個gadget就可以getshell,建議安裝。
安裝ROPgadget:
# 先安裝Capstone,它是一個輕量級的多平臺架構支持的反匯編架構。sudo apt-get install python-capstone# 下載好ROPgadget解壓,并進入文件夾中python setup.py install安裝one_gadget:
sudo apt install ruby gem install one_gadgetIDA
靜態調試必備,不多解釋。這里建議安裝52上的版本:
52上的IDA
總結
以上是生活随笔為你收集整理的CTF-PWN环境搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决windows找不到D:launch
- 下一篇: 详细讲解python中的析构方法;