標籤:如何 兩種 一個 改變 ctypes pytho 解碼 不同 xmlrpc
網路愛好者總是要掌握程式設計語言的,這裡推薦:python。下面,一文瞭解駭客們會用到哪些Python技術!
進群:548377875 即可擷取數十套PDF哦!
安裝依賴包
很多時候讀者們會發現,藉助大型python社區中的python庫編寫的個人工具,可以協助我們很快得到結果。你可以通過個人軟體管理組件或者可用的python軟體包管理器安裝這些庫,其中最權威的就是pip工具了。有了pip,你可以全域安裝這些依賴包(#pip install),或者逐使用者安裝($ pip install --user),或者在虛擬環境中安裝((venv) $ pip install)。讀者可以手動地使用個人發行版包管理器,或者基於Python3.4提供的庫,安裝pip包。
如果讀者們需要與包括JSON/XML的HTTP服務互動,我建議特別好用的requests依賴庫。該python庫可以處理與網頁互動面對的各類操作,如編碼、解碼、參數、標記、重新導向等。例如,請求和解析一個JSON資源的代碼如下:
增加TSL加密鏈路也非常簡單:
上述功能也可以在已經使用的串連中實現:
如何你不需要這些低級服務互動,還有些模組可以提供高層服務互動:
- smtplib
- ftplib
- poplib
- imaplib
- httplib (Python 3以上版本的http用戶端)
- nntplib
- telnetlib (應用於服務開發和之後的需要互動命令列會話)
- xmlrpclib (Python 3以上版本的xmlrpc用戶端)
5
安二進位操作或編碼
當開發與服務或者檔案互動的指令碼時,你經常會發現需要將資料轉換為不同格式或者編碼。在Python2.x版本中,通常使用encode或者decode方法將字串在不同格式之間轉換。
很可惜,這種捷徑在Python3.x版本中被取消了,encode和decode方法當前只可以實現字元編碼,如utf-8, cp1250, iso8859, big5等。
作為替代,你現在只能使用bytes類型的兩種方法實現十六進位編碼:
對於Base64編碼,你需要使用另外的模組(在Python2.x版本中也有):
URLs編碼或者解析可以用urllib.parse模組實現(Python2.x版本中是urllib)
Python普通資料類型(如int,float,str)與二進位之間的一般轉換,可以在stuct模組中實現:
Python3.2也可以使用int類型直接擷取其二進位表示:
ctypes 模組還有一個特別棒的特徵,如果你將cpython作為解譯器(通常大家都是這樣),就可以使用ctypes.Structure結構化描述C語言,擷取它們的二進位表示,就好像從C應用程式中轉儲的一樣。
ctypes 模組通常是Python程式集和C語言庫之間的橋樑,不需要編寫任何Python封裝器。有了ctypes模組,你可以使用任何C語言庫和其輸出函數:
上文中提到Structure 類型主要用於C語言庫的互動,在函數調用過程中傳遞或者擷取結構。
4
漏洞開發工具
很多CTF團體提供他們自己的的CTF解決方案架構,我發現來自Gallopsled 的pwntools架構特別有用,尤其是開發遠程elf二進位時,它包含很多方便的函數,例如位移計算(通過cyclic模式)、格式化字串開發(普通資料摘要以及產生的格式化字串)、跳躍群組合(基於ropgadget解析elf二進位以及提供產生簡單跳躍群組合調用的封裝器)和不同傳輸通道的全部API(稱作管道)。這些可以讓讀者們開發gdb編譯後端,同時簡單地改變一行代碼就可以傳輸到目標服務。
駭客隨牛逼,但是有些東西是禁區,可不能隨便去觸碰哦!
Python真的無所不能!連駭客技術都要用它!你知道要用哪些技術嗎