[pwn基礎]PWN環境搭建


[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

image-20211018145631089

pwngdb(GDB插件)

git clone https://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh

image-20211018150323138

checksec(查保護)

安裝完pwntools后,checksec會自動被安裝上,此工具主要用來查程序保護。
ps:(如果安裝完pwntools后,發現你的checksec不能運行,請添加環境變量 ~/.local/bin到.bashrc)
image-20220321123533929

checksec hackpwn

image-20211018150502561

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

image-20211018194352772

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成功后應該是這種效果。

image-20211018151314802

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

image-20211018151601531

安裝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時候報錯了。

image-20211018161752175

發現是系統時間不正確,然后就找了資料同步了網絡時間https://www.freesion.com/article/71991435396/,之后發現還是報錯!后面又根據一篇文章說是要編譯一個openssl版libcurl依賴的git才行,后面編譯出來后還是報錯,裂開了。

最后發現是macOS VMware的坑,要把橋接改成NAT共享模式並且修改DNS為114.114.114.114后就可以了。

image-20211018185134126

image-20211018185119596

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

image-20211018185544134

也可以用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

image-20211018190004252

seccomp-tools(用來讀取seccomp沙箱規則)

image-20211018190238328

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里面。

image-20211018191543633

image-20211018192053683

最后歡迎各位大佬加群學習交流PWN技術、或者re

avatar


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM