pwntools的許多設定都是通過全域性變數context進行控制的,例如系統、架構、位元組序等都可以通過如下的方法更改:
>>> context.clear() #清空context
>>> context.update(arch= 『 amd64 』) #設 置架構型別
>>> context.os == 'linux' #設定os型別
要進行漏洞利用,首先就需要與程式進行通訊 ,pwntools提供的函式能夠與本地或遠端進行 通訊。
本地程式通過process函式執行,遠端通過 remote函式進行連線,示例如下:
通過process函式執行了當前路徑下的pwnbin 二進位制程式,通過remote函式與 127.0.0.1:4444建立連線。
在漏洞利用的過程當中,往往需要將輸入的payload轉 化成8位、16位、32位或64位、大端或小端所對應格 式 。
pwntools提供了一組函式用來對給定的資料按照一定 的格式進行解碼和編碼。這些函式以p或u為開頭,後 面加上乙個數字代表位數,例如p32和u32。
pwntools還提供了asm和disasm兩個函式進行彙編和反彙編的 轉換。
在漏洞利用指令碼的編寫過程中,經常需要使用got表地 址、plt表位址或是system函式在libc中的偏移, pwntool能夠快速的幫助你找到相應的位址。
dynefl函式能夠在特定情況下解析動態鏈結的elf二 進製檔案的符號。給定乙個函式可以洩漏任意位址信 息,dynefl函式進而能夠解析載入的庫中任意符號。 lookup方法用來尋找函式符號的位址。
在格式化字串利用中,攻擊者往往需要通過 漏洞實現任意記憶體位址寫,但構造合適的 payload往往需要占用大量的時間。
pwntools中的fmtstr模組中實現了和格式化 字串漏洞利用相關的多個函式,極大的加速 了漏洞利用指令碼的開發速度。
如上**,通過fmtstr模組中的fmtstr_payload函式 ,生成一段payload實現修改0x8041337位址內容為 0xdeadbeef。
如在進行漏洞利用的過程中,除錯是幾乎必不可少的 乙個環節,需要通過除錯來檢視漏洞利用指令碼是否達 到了預期目或者得到一些關鍵資訊。
pwntools提供了用於在程式執行中呼叫gdb的函式。
使用gdb.attach(target, gdbscript = none, exe = none, arch = none)函式來啟動gdb除錯 。
使用者可以使用shellcraft.arch.os生成相應架構、系統 的shellcode 。
例如64位linux位shellcraft.amd64.linux,以下為 官方文件示例,通過shellcraft.amd64.linux.sh()可 以生成一段linux 64位系統下執行shell的彙編**。
pwntools介紹及使用
pwntools 簡單來說就以一整套pwn工具集,涵蓋了pwn題利用指令碼所需要的各種工具。包括方便的io互動函式,rop 格式化字串等利用的自動化工具,shellcode生成器等等。pwntools是目前最好用也是僅有的大型pwn利用框架。能節省大量編寫指令碼的時間。pwntools使用參考文獻 ...
無pwntools時如何檢視保護
在很多線下比賽並且使用舉辦方提供的電腦時,會沒有python的模組和外掛程式,這就包括pwntools 工具人爆哭!眾所周知,當乙個小菜雞沒有pwntools沒有補全 不是我 基本就廢掉嘍.所以經過對大佬的取經之後準備寫一些關於脫手pwntools的部落格作為記錄,孩子是個超級超級大菜雞,有任何錯誤...
epoll使用介紹
linux下的epoll較之傳統的select函式比較其優點 突破了單程序開啟socket描述符最大數目的限制,select單程序開啟fd的資料是有限制的,由fd setsize設定,預設值是2048,而這在那此需要支援上萬連線數目的網路伺服器來說是不能忍受的,雖然這個限制可以通過修改巨集重編譯核心...