pwntools

连接:本地process()、远程remote( , );对于remote函数可以接url并且指定端口
数据处理:主要是对整数进行打包:p32、p64是打包为二进制,u32、u64是解包为二进制
IO模块:这个比较容易跟zio搞混,记住zio是read、write,pwn是recv、send

send(data): 发送数据
sendline(data) : 发送一行数据,相当于在末尾加\n      
recv(numb=4096, timeout=default) : 给出接收字节数,timeout指定超时
recvuntil(delims, drop=False) : 接收到delims的pattern
(以下可以看作until的特例)
recvline(keepends=True) : 接收到\n,keepends指定保留\n
recvall() : 接收到EOF
recvrepeat(timeout=default) : 接收到EOF或timeout
interactive() : 与shell交互

ELF模块:获取基地址、获取函数地址(基于符号)、获取函数got地址、获取函数plt地址

e = ELF('/bin/cat')
print hex(e.address)  # 文件装载的基地址
0x400000
print hex(e.symbols['write']) # 函数地址
0x401680
print hex(e.got['write']) # GOT表的地址
0x60b070
print hex(e.plt['write']) # PLT的地址
0x401680

解题常用:

context.arch = 'amd64'   //设置架构
context.log_level = 'debug' //显示log详细信息
libc = ELF('./libc-2.24.so')  //加载库文件

作者:SueLyon
链接:https://www.jianshu.com/p/6e528b33e37a


CTF常用python库PwnTools的使用学习 这个博主不错

Python 编程核心知识体系
Exploit利器——Pwntools
PwnTools常见用法
pwntools使用简介