pwntools介紹及使用

2021-10-05 12:26:09 字數 2484 閱讀 5489

pwntools:簡單來說就以一整套pwn工具集,涵蓋了pwn題利用指令碼所需要的各種工具。包括方便的io互動函式,rop、格式化字串等利用的自動化工具,shellcode生成器等等。pwntools是目前最好用也是僅有的大型pwn利用框架。能節省大量編寫指令碼的時間。

pwntools使用參考文獻

pwnlib.asm

asm模組主要通過capstone進行彙編的編譯和反編譯。通常用來編譯各種平台構架的shellcode。

pwnlib.constants

標頭檔案巨集定義的封裝,通過此模組,可以直接獲取一下系統巨集定義對應的整數資料。

pwnlib.context

上下文管理器,通過他來控制一些全域性的資訊。比如目標計算機體系結構,log等級等。控制生成shellcode,log時候的預設行為。

pwnlib.dynelf

通過記憶體leak資料來自動化定位程式中函式位置。及其實用。

pwnlib.encoders

shellcode編碼工具,通過編碼排除shellcode中的特殊字元,防止無法轉化。

pwnlib.elf

讀寫elf檔案結構中的各種資訊。非常方便實用。

pwnlib.fmtstr

格式化字串自動化利用工具。有缺陷,只能使用少數情況。

pwnlib.gdb

可以在指令碼中直接使用此模組attach程序或者啟動gdb

pwnlib.libcdb

libc的database,可以通過一些資訊查詢對應libc

pwnlib.log

通常是pwntools內部**使用

pwnlib.memleak

記憶體洩漏管理工具,方便拼接多次洩露出來的記憶體。

pwnlib.shellcraft

shellcode生成工具

pwnlib.tubes

主要的io工具

pwnlib.util

包含一些列有效的小工具

pwnlib.rop

rop生成工具,可以直接生成32位rop

tubes模組包含remote和process子模組

from pwn import

*io = remote(

"127.0.0.1"

,32152

)# 與網際網路主機互動

io.sendline(

"hello"

)io.send(

"hello"

)# sendline傳送資料會在最後多新增乙個回車

io.recv(

1024

)io.revuntil(

)io.recvline(

"hello"

)# recv()讀取1024個位元組,recvline()會讀取一直到回車,recvline()讀取到指定資料

io.interactive(

)

io = process(

"./bin"

, shell=

true

)#啟動本地程式進行互動,用於gdb除錯

io.p32(

0xdeadbeef

)io.p64(

0xdeadbeefdeadbeef

)io.u32(

"1234"

)io.u64(

"12345678"

)# 將位元組陣列與陣列進行以小端對齊的方式相互轉化,32負責轉化dword,64負責轉化qword

shellcraft&asm

pwntools的shellcraft主要用來生成彙編**形式的shellcode,而asm的作用是根據彙編**編譯出二進位制shellcode。

# 生成執行sh的shellcode並編譯

asm(pwnlib.shellcraft.thumb.linux.sh(

), arch=

"thumb"

)# 可以將thumb換成對應cpu

# 讀取flag並輸出到標準輸出

pwnlib.shellcraft.i386.linux.cat(

"flag"

, fd=

1)

# 使用forkbomb破壞系統(慎用)

pwnlib.shellcraft.i386.linux.forkbomb(

)

context
context.log_level =

"debug"

context.arch =

"amd64"

# 設定成debug,pwntools會將所有io資料等輸出,方便編寫poc的時候進行除錯,而arch可以設定攻擊目標的指令構架。

elf

用於讀取elf檔案中的各種結構資料。例如plt,got,函式位址等等。

Pwntools使用介紹

pwntools的許多設定都是通過全域性變數context進行控制的,例如系統 架構 位元組序等都可以通過如下的方法更改 context.clear 清空context context.update arch amd64 設 置架構型別 context.os linux 設定os型別 要進行漏洞利用...

SAS SHARE 介紹及使用

sas share功能 其提供乙個多使用者訪問的資料伺服器,允許多個使用者同時讀寫同乙個資料檔案 除了提供本地資料共享給使用者外,也可以通過遠端路徑共享其它資料給使用者,而無需構架sas connect進行sign on 通過sas access配合,sas share提供了乙個訪問不同資料來源的統...

APT介紹及使用

apt advanced packaging tool 是debian linux和基於debian進行開發的linux發行版 如ubuntu 使用的高階包管理系統.apt最初的設計目的是處理debian系統中的.deb軟體包,但現在通過apt4rpm,已經可以在其他系統處理rpm軟體包了.apt通...