#pwntools常用功能
1.process
跟一个参数 一个程序的本地路径
2.remote
指定IP和窗口。
3.p64 u64(p32 u32)(p8 u8)
p64(0x12345678)
enhex(p64(0x12345678))
pack打包,unpack。
p64
可以把数字转换成小端法的字符串
u64
把一个小端法的数据解回数字
4.context.binary=
设置当前的上下文。
在当前环境下,需要设置一些常见变量。
用于asm功能。
asm(shellcraft.sh())
binary可以直接把一个程序的路径设给它,会自动根据程序的位数架构平台来设计一些context.arch bits这些。
context.arch,地址等等
5.context.log_level=‘debug’
pwntools在与程序交互过程中有一些不可见字符。这条语句可以把每一次交互的数据以16进制显示,方便调试。
6.send sendline recv recvuntil
#send()
p.send(‘aa’)把数据传送
#sendline()
接受到一个换行符为止
#recv()
接受
#recvuntil()
接收直到
#recvrepeat()
是跟一个数字(一个描述),若超过该描述结束接收。
7.shellcraft.各种
print shellcraft。sh()
8.asm disasm
asm
可以将一段汇编代码编译成对应的机器语言
disasm
可以反编译
disasm(‘0x80')
printf disasm(asm(shellcraft。sh()))
binutils
9.ELF
pwntools提供的一个模块,提供一个文件的路径,它就可以生成一个ELF对象,这个对象就可以很方便地查看它的信息,比如got表,plt表还有一些其他的信息,后面再提怎么查看。
10.Cyclid
一个比较常用的功能。
cyclic 100
生成一百个字符,这一百个字符默认32位字符。每四个字符都是独一无二的。
拿这个字符去当做输入,当它报错的时候,就有四个去覆盖了ESP返回地址,我们再查找这四个字符,就可以定位。64位的要 -c(context 成64 ,help里面有)
cyclic -h
-help的意思,查看相关信息。
11.调试相关
gdb.attach()
pwntools模板
12.pwn template
一个问题,pwn template可以生成一个模板,一个exp的模板。具体再看看。