天天看點

Ubuntu 16.04 for pwn

往往我們做pwn題,都是拿到可執行檔案(elf)和其依賴檔案libc.so,工欲善其事必先利其器,利用好的工具,可以事半功倍。在此列出自己做pwn題的ubuntu配置:

對于可執行檔案(elf),可以從三個不同的方向入手:

1)        運作程式,了解程式邏輯;

2)        gdb調試,動态調試程式;

3)        IDA靜态分析,了解程式邏輯。

以上三步主要涉及漏洞挖掘,這是最基礎的部分,也是方向和手段最多的部分。如果我們可以找到漏洞,那麼一起好說。

利用工具:

peda :gdb插件,調試神器,誰用誰知道。

vim : 安裝插件,為後續編寫exploit。

安裝vim插件:https://github.com/ma6174/vim

速度可能較慢,耐心等待,效果圖:

Ubuntu 16.04 for pwn

安裝peda插件:https://github.com/longld/peda

安裝指令:

git clonehttps://github.com/longld/peda.git ~/peda

echo"source ~/peda/peda.py" >> ~/.gdbinit

echo"DONE! debug your program with gdb and enjoy"

截圖:

Ubuntu 16.04 for pwn

利用peda調試事半功倍。

在分析程式時,往往少不了IDA Pro來靜态分析程式,或者F5檢視程式的僞代碼,程式下載下傳:http://www.52pojie.cn/thread-450156-1-1.html

此版本為linux下ida pro,但是沒有F5功能,我往往是将IDA Pro安裝在windows下,ubuntu作為虛拟機來運作,充分利用各自的優勢。

windows下IDA Pro下載下傳位址:連結: http://pan.baidu.com/s/1dFBgpjz 密碼: sgjs

以上是漏洞挖掘,主要是靠人工手動的來分析程式尋找漏洞,另外還可以通過fuzzing測試,來讓程式産生crash,進而能更快速的定位問題,常見的fuzzing工具有:

peach :高度定制,萬能fuzzing工具;

Trinity :用于fuzzing linux核心驅動;

sulley/kitty-fuzzer等,請自行google。

常見的pwn漏洞堆溢出、棧溢出、use after free、格式化字元串、指令注入以及競态(常見于多線程)等程式漏洞,在程式漏洞利用常利用python腳本來編寫exploit,也有大牛專門寫了pwn的python庫——pwntools。

下載下傳位址:https://github.com/Gallopsled/pwntools

說明指導文檔:https://pwntools.readthedocs.org/

安裝:

apt-get update

apt-get install python2.7 python-pippython-dev git libssl-dev

pip install --upgradegit+https://github.com/Gallopsled/pwntools.git

可能安裝不太順利,多安裝幾次。

在程式棧溢出中我們通常會用到ROP程式設計,所謂的rop程式設計就是控制eip跳轉同時利用程式本身或者libc庫來構造代碼片段執行指令達到程式構造的目的。而這些代碼片段稱為gadget,尋找可用的gadget有下面等工具:

1)        ROPEME: https://github.com/packz/ropeme

2)        Ropper: https://github.com/sashs/Ropper

3)        ROPgadget: https://github.com/JonathanSalwan/ROPgadget/tree/master

4)        rp++: https://github.com/0vercl0k/rp

本人比較喜歡用Ropper/ROPgadget,Ropper依賴包主要有filebytes、capstone等,安裝pwntools時一般會安裝capstone,安裝指令pip install capstone安裝成功後,執行ropper/ROPgadget時往往會出錯。

解決方法:

pip uninstall capstone來解除安裝capstone,然後到github上下載下傳安裝包手動安裝:https://github.com/aquynh/capstone

make && make install 來安裝capstone,然後進去目錄

Ubuntu 16.04 for pwn

在此目錄下: sudo python setup.py install,安裝成功後ROPgadget/Ropper就可以成功運作了。