Pwntools的功能和用法摘要[日语] #CTF #Pwn


我觉得我无法掌握Pwntools的各种功能,因此我进行了调查和总结。

什么是Pwntools?

Gallopsled CTF团队用来解决Pwnable

的Python库

pwntools是一个CTF框架和漏洞利用开发库。
它是用Python编写的,旨在用于快速原型开发和开发,旨在使漏洞利用程序编写尽可能简单。
引用:http://docs.pwntools.com/en/stable/index.html

  • 点击这里了解详情

    • Pwntools存储库
    • 官方文件

用于程序输入/输出的功能

标准输入/输出

接收数据

  • recv(n):接收n个字节的数据

  • recvline():接收一行数据(直到出现换行符)

  • recvuntil(hoge):接收数据,直到到达hoge

  • recvregex(pattern):接收数据,直到它与pattern指定的正则表达式匹配为止

  • recvrepeat(timeout):接收数据直到其超时或达到EOF

  • clean():丢弃缓冲的数据

发送数据

  • send(data):发送数据

  • sendline(line):发送时将" \\ n"添加到作为参数给出的数据中

流程和基本功能

您可以使用

process与该流程进行交互。

1
2
3
4
5
6
from pwn import *

io = process('sh')
io.sendline('echo Hello, world')
io.recvline()
# 'Hello, world\n'

如果需要设置命令行参数或环境变量,请使用其他选项。
有关详细信息,请参见官方文档

1
2
3
4
5
from pwn import *

io = process(['sh', '-c', 'echo $MYENV'], env={'MYENV':'MYVAL'})
io.recvline()
# 'MYVAL\n'

互动交流

您可以使用

interactive()与任何进程进行交互通信。

1
2
3
4
5
from pwn import *

io = process('sh')

io.interactive()

网络通讯

您可以使用

remote与远程主机进行通信。 (同时支持IPv4 / IPv6)

1
2
3
4
5
6
from pwn import *

io = remote('google.com', 80)
io.send('GET /\r\n\r\n')
io.recv(8)
# 'HTTP/1.0'

实用程序

通用功能

整数操作

使用

pack()unpack()," int类型"