前言
近日來解 CTF 時,時常會用到一些工具及 python 的 module 因此先記下來作為日後參考用
Python modules
socket
- 說明:
- 解 ctf 幾乎是必用的一個 module,主要用來 create 一個 tcp 連線
- 一般來說比 netcat 更為方便,更好送出 payload
- 以下僅列出常使用的,其餘部分請參考官方文件
- 使用方式:
- class:
- socket(family,type[,protocal])
- family :
- socket.AF_INET (IPV4)
- socket.AF_INET6 (IPV6)
- type :
- socket.SOCK_STREAM (TCP)
- socket.SOCK_DGRAM (UDP)
- 範例:
- 創立一個 TCP socket :
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
- 創立一個 UDP socket :
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
- 函式:
- sock.connect((host,port))
- sock.recv(buffersize)
- 接收 socket 所傳來的訊息,接收量為 buffersize
- sock.send(string)
- sock.close()
struct
- 說明:
- 用來將數值以 binary 的方式輸出( ex:\x54\x01\x05\x08 ) ,原先主要是用來讀入 c 語言的 data ,轉成 python 看得懂的數值,詳情可參考官方文件
- 製作 payload 時非常好用
- 可指定要 little-endian 還是 big-endian
- 使用方式:
- 格式:
- 函式:
- struct.pack(fmt,v1,v2,...)
- struct.unpack(fmt,string)
telnetlib
- 說明:
- 很久以前就有在用了,以前在當網管時常常使用它來管理各項設備,不過後來沒再用了,畢竟安全性上是一項問題,不過就單純的 telnet 連線來說,是個非常方便的 module,詳細的內容一樣可參考官方文件
- 搭配 socket 可是 ctf 中很常用的方法,當在遠端成功執行 shell 時,需要靠它來保持連線
- 用法:
Tool
沒有留言:
張貼留言