pwntools基础知识
pwntools基础知识
连接:本地process() 里面放文件名 例如process('./test') ;远程remote( , ),remote接受url并指定端口,remote('url',端口)。
数据处理:主要对整数进行打包,就是转换成二进制的形式,用p32,p64进行打包
用u32,u64进行解包
IO模块:
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模块:
elf = ELF('文件名')
# 获取文件基本地址:
print hex(elf.address)
# 获取函数地址:
print hex(elf.symbols['函数名'])
# 获取函数got表地址:
print hex(elf.got['函数名'])
# 获取函数plt地址
print hex(elf.plt['函数名'])
context:
context.arch = 'amd64' //设置架构
context.log_level = 'debug' //显示log详细信息
libc = ELF('./libc-2.24.so') //加载库文件
还有一种写法:
context(os='linux', arch='amd64', log_level='debug')
1、os设置系统为linux系统
2、arch设置架构为amd64,可以简单的认为设置为64位的模式,对应的32位模式是’i386’
3、log_level设置日志输出的等级为debug,调试时一般会设置,这样pwntools会将完整的io过程都打印下来,使得调试更加方便。
shellcraft:
shellcraft模块是shellcode的模块,包含一些生成shellcode的函数。
shellcode = asm(shellcraft.sh())
print(shellcraft.sh()) # 打印出shellcode
print(asm(shellcraft.sh())) # 打印出汇编后的shellcod
asm : 汇编与反汇编,支持x86/x64/arm/mips/powerpc等基本上所有的主流平台