Ubuntu_16.04 從0開始配置pwn環境

基礎軟件安裝

  1. 大佬@giantbranch 配置的虛擬機,如果覺得自己用搭建環境比較麻煩,可以在他的github中直接下載虛擬機(提取碼: kypa),個人感覺是非常適合新手入門時使用的一套工具,也可以從github上獲取腳本進行安裝(最近爲了安裝新環境重新測試了一下github中的腳本,在Ubuntu16下測試失敗了,建議直接下載虛擬機)。下載的虛擬機搭建瞭如下環境:

    • apt源修改爲清華源, pip 修改爲豆瓣源

    • 爲64位系統提供32位運行環境支撐

    • 下載了libc6的源碼,方便源碼調試( 調試方法看這裏

    • 給gdb裝上pwndbg和peda插件(./gdbinit 需要調整一下)

    • 安裝pwntools

    • 安裝one_gadget

    • 下載libc-database

    wget https://raw.githubusercontent.com/giantbranch/pwn-env-init/master/pwn_init_py2.sh
    chmod +x pwn_init_py2.sh
    sudo ./pwn_init_py2.sh
    

如果直接下載虛擬機,可以跳過下面的 2-10

  1. 從Ubuntu官網下載鏡像Ubuntu 16.04.6 LTS後安裝虛擬機,在啓動後將更新源修改爲國內的更新源。

  2. 基礎軟件安裝

    sudo apt-get install python2.7 python-pip python-dev git libssl-dev libffi-dev build-essential
    sudo apt-get install git gdb gdb-multiarch "binfmt*" -y
    
  3. GCC

GCC的全稱爲GNU CompilerCollection, 是 Linux 系統下重要的編譯工具。默認Ubuntu
gcc
5. pwndbg
使用 gdb 調試 pwn 題時非常常見的一款插件。和下面的peda有很多地方有重合,可以選擇一款插件進行安裝。
shell git clone https://github.com/pwndbg/pwndbg cd pwndbg ./setup.sh
6. Peda
Peda (Python Exploit Development Assistance for GDB) 和 pwntools 一樣屬於gdb的插件,用於對題目的動態調試。關於peda的使用,推薦一篇博客:@killshadow 師傅的一篇博客,關於各種命令講的都非常詳細,同時也介紹了ida和gdb的使用,非常的實用且易懂。

git clone https://github.com/longld/peda.git ~/peda
sudo gedit ~/.gdbinit
# 在./gdbinit 中新添加行:source ~/peda/peda.py
# 保存並退出 gedit

在這裏插入圖片描述

  1. Pwntools
    Pwntools是一個CTF框架和漏洞利用開發庫。它是用Python編寫的,旨在用於快速開發,使漏洞利用程序編寫儘可能簡單。
    sudo -H pip install pwntools
    
  2. 安裝multilib,以支持32位程序
    sudo apt install gcc-multilib
    
  3. Libcdatabase
    建立libc偏移量數據庫以簡化開發。
  • 安裝:
    git clone https://github.com/niklasb/libc-database
    cd libc-database
    ./get
    
  • 命令說明:
命令 作用 示例
./get 獲取所有已配置的libc版本並提取符號偏移量。也可以使用它來更新數據庫。不會重複下載
./add 將指定的libc添加到數據庫中。 ./add /usr/lib/libc-2.21.so
./find 在數據庫中找到在給定地址上具有給定名稱的所有libc。因爲基址隨機化的原因,僅檢查最後12位。 ./find printf 260 puts f30
從泄漏的返回地址中找到指定的libc對應__libc_start_main函數的地址。 ./find __libc_start_main_ret a83
./dump 給定一個libc版本,查詢偏移量。也可以查詢指定的函數名。 ./dump libc6_2.19-0ubuntu6.6_i386
./identify 檢查數據庫中是否已存在對應的libc庫。 ./identify /usr/lib/libc.so.6
./download 下載與libc ID對應的整個庫。 ./download libc6_2.23-0ubuntu10_amd64
  1. one_gadget
    one_gadget 通過符號執行來查找可以成功執行execve命令的代碼片段,並輸出其需要的約束。
# 可以通過 ruby 直接安裝,所以我們首先安裝一下 ruby
sudo apt install ruby
sudo gem install one_gadget

one_gadget

  • github上可以查看英文文檔,看英語比較喫力的小朋友們可以看一下這篇翻譯的介紹來上手

其他軟件

  1. pwngdb
    pwngdb 同屬於gdb的一個插件,對查看堆之類的操作比較友好。

    git clone https://github.com/scwuaptx/Pwngdb.git 
    cat /Pwngdb/.gdbinit
    :'
    cat 命令顯示內容如下:
    	source ~/Pwngdb/pwngdb.py
    	source ~/Pwngdb/angelheap/gdbinit.py
    	
    	define hook-run
    	python
    	import angelheap
    	angelheap.init_angelheap()
    	end
    	end
    這裏去掉了peda的安裝路徑, 因爲pwngdb不需要peda作爲前置軟件
    peda的安裝方式在前面有提到
    將內容添加到 ~/.gdbinit 中
    如果安裝路徑不爲$home, 則需將前三行中的安裝路徑修改爲自定義安裝路徑
    '
    sudo gedit ~/.gdbinit
    

    .gdbinit 文件中的配置如下圖所示
    pwngdb配置

  2. LibcSearcher
    基於前面的libc-database開發的一款python小工具,可以直接在python腳本中執行以下命令查找對應的libc庫和函數偏移。

  • 安裝
    git clone https://github.com/lieanu/LibcSearcher.git
    cd LibcSearcher
    sudo -H python setup.py develop
    
  • 使用:
    from LibcSearcher import *
    
    #第二個參數,爲已泄露的實際地址,或最後12位(比如:d90),int類型
    obj = LibcSearcher("fgets", 0X7ff39014bd90)
    
    obj.dump("system")        #system 偏移
    obj.dump("str_bin_sh")    #/bin/sh 偏移
    obj.dump("__libc_start_main_ret")    
    
  1. Sublime
    一款輕量級的代碼編輯器,當然VSCode也很香,PyCharm也很香,gedit也很香,根據個人喜好去使用就ok。

    wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
    sudo apt-get install apt-transport-https
    echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list
    sudo apt-get update
    sudo apt-get install sublime-text
    
  2. gdb attach 調試
    有一些情況會需要從腳本附加進行調試,這時候需要修改一下Ubuntu本身的調試權限:

    sudo su # 進入root權限
    gedit /etc/sysctl.d/10-ptrace.conf
    # 將	 kernel.yama.ptrace_scope = 1 
    # 修改爲 kernel.yama.ptrace_scope = 0
    

    同時建議直接使用 root 賬戶進行調試,這時候需要爲我們的root賬戶重新設置一下我們的gdb環境:

    # 下面的USER爲自己的用戶名
    cp /home/USER/.gdbinit ~/.gdbinit
    # 打開 .gdbinit 文件,將裏面所有的 ~ 替換爲 /home/USER 
    gedit ~/.gdbinit
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章