[pwn基礎]PWN環境搭建
本教程主要參考PWN虛擬機配置、Linux Pwn入門教程-----環境配置 、星盟安全 PWN系列教程 PWN環境配置 。
需要的工具或系統
如何安裝VM虛擬機,虛擬機如何安裝kali系統,這里就不再介紹,讀者可自行通過搜索引擎查找相關資料,這里主要記錄下kali安裝相關pwn工具的過程。
安裝PWN工具
pwntools (CTF庫、漏洞利用庫)
#提前安裝pip
sudo apt-get install python3-pip
#安裝pwntools
pip install pwntools -i https://pypi.tuna.tsinghua.edu.cn/simple
pwngdb(GDB插件)
git clone https://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh
checksec(查保護)
安裝完pwntools后,checksec會自動被安裝上,此工具主要用來查程序保護。
ps:(如果安裝完pwntools后,發現你的checksec不能運行,請添加環境變量 ~/.local/bin
到.bashrc)
checksec hackpwn
ROPGadget(二進制文件查找工具)
sudo pip install capstone
git clone https://github.com/JonathanSalwan/ROPgadget.git
cd ROPgadget
sudo python3 setup.py install
安裝后運行ROPgadget
會報錯,然后按照此文章的方法解決即可https://blog.csdn.net/weixin_44061097/article/details/103133240
one_gadget(libc查找one gadget最佳RCE工具)
最開始按照https://www.yuque.com/hxfqg9/bin/hg3qeh 教程安裝此工具遇到些坑,主要是因為ruby版本引起的,教程中是如下方式安裝:
sudo apt-get install ruby -y
sudo apt-get install gem -y
sudo gem install one_gadget
但是用此方法安裝one_gadget會報錯,會顯示one_gadget安裝失敗,解決辦法是手動編譯源碼安裝最新ruby 3.0版.
wget https://cache.ruby-lang.org/pub/ruby/3.0/ruby-3.0.2.tar.gz
tar -zxvf ruby-3.0.2.tar.gz
cd ruby-3.0.2
sudo ./configure
sudo make
sudo make install
make成功后應該是這種效果。
ps:(如果你發現運行sudo gem install one_gadget報openssl的錯誤,請你查看此文章謝謝:https://askubuntu.com/questions/513369/openssl-installed-but-ruby-unable-to-require-it#)
運行one_gadget命令
one_gadget /lib/x86_64-linux-gnu/libc.so.6
安裝32位的庫
在kali下安裝lib32ncurses5
會發現找不到包,需要將其改成lib32ncurses5-dev
。
sudo apt-get install lib32ncurses5-dev
sudo apt-get install lib32z1
LibcSearcher(清華大佬寫的工具 獲取libc對應版本和地址)
因為工具長久沒有維護,也可用此在線網站工具https://libc.blukat.me/
git clone https://github.com/lieanu/LibcSearcher.git
cd LibcSearcher
python setup.py develop
git clone時候報錯了。
發現是系統時間不正確,然后就找了資料同步了網絡時間https://www.freesion.com/article/71991435396/,之后發現還是報錯!后面又根據一篇文章說是要編譯一個openssl版libcurl依賴的git才行,后面編譯出來后還是報錯,裂開了。
最后發現是macOS VMware的坑,要把橋接改成NAT共享模式並且修改DNS為114.114.114.114后就可以了。
main_arena_offset(用來計算 main_arena 的偏移)
這是一個bash腳本直接用就行。
git clone https://github.com/bash-c/main_arena_offset.git
cd main_arena_offset
./main_arena /lib/x86_64-linux-gnu/libc.so.6
也可以用dev2ero封裝的py_main_arena_offsetpy模塊來計算main_arena的偏移。
from pymao import *
libc = "/lib/x86_64-linux-gnu/libc.so.6"
main_arena_offset = gmao(blic)
main_arena_offset
seccomp-tools(用來讀取seccomp沙箱規則)
docker版pwn環境
如果怕麻煩的話可以直接用大神們打包好的docker版的pwn環境,skysider/pwndocker。
命令行:
docker run -d \
--rm \
-h ${ctf_name} \
--name ${ctf_name} \
-v $(pwd)/${ctf_name}:/ctf/work \
-p 23946:23946 \
--cap-add=SYS_PTRACE \
skysider/pwndocker
docker exec -it ${ctf_name} /bin/bash
具體使用方法如下:
打開你的終端,然后比如你今天要打buuctf,那么在終端輸入ctf_name=buuctf,然后再輸入上面的命令行,並且此時你終端當前目錄會多出一個buuctf的目錄,你可以把pwn文件放進去這樣就能同步到docker里面。
最后歡迎各位大佬加群學習交流PWN技術、或者re