2.4.2 zio
zio 简介
zio 是一个易用的 Python io 库,在 Pwn 题目中被广泛使用,zio 的主要目标是在 stdin/stdout 和 TCP socket io 之间提供统一的接口,所以当你在本地完成 利用开发后,使用 zio 可以很方便地将目标切换到远程服务器。
zio 的哲学:
from zio import *
if you_are_debugging_local_server_binary:
io = zio('./buggy-server') # used for local pwning development
elif you_are_pwning_remote_server:
io = zio(('1.2.3.4', 1337)) # used to exploit remote service
io.write(your_awesome_ropchain_or_shellcode)
# hey, we got an interactive shell!
io.interact()官方示例:
需要注意的的是,zio 正在逐步被开发更活跃,功能更完善的 pwntools 取代,但如果你使用的是 32 位 Linux 系统,zio 可能是你唯一的选择。而且在线下赛中,内网环境通常都没有 pwntools 环境,但 zio 是单个文件,上传到内网机器上就可以直接使用。
安装
zio 仅支持 Linux 和 OSX,并基于 python 2.6, 2.7。
termcolor 库是可选的,用于给输出上色:$ sudo pip2 install termcolor。
使用方法
由于没有文档,我们通过读源码来学习吧,不到两千行,很轻量,这也意味着你可以根据自己的需求很容易地进行修改。
总共导出了这些关键字:
zio 对象的初始化定义:
通常可以这样:
内部函数很多,下面是常用的:
zio 里的 read 和 write 对应到 pwntools 里就是 recv 和 send。
另外是对字符的拆包解包,是对 struct 库的封装:
l 和 b 就是指小端序和大端序。这些函数可以对应 pwntools 里的 p32(),p64()等。
当然你也可以直接在命令行下使用它:
zio 在 CTF 中的应用
何不把使用 pwntools 的写的 exp 换成 zio 试试呢xD。
Last updated
Was this helpful?