pwntools基本使用及规范

发布于 2023-03-23  200 次阅读


from pwn import *

把pwntools导入进来,同时会把一些系统库给导入进来。本地打的话 p=process('./filename'),远程的话 p=remote('192.168.1.103',10001)

发送payload

p.send(payload) 发送 payload

p.sendline(payload) 发送 payload,并进行换行(末尾\n)

p.sendafter(some_string, payload) 接收到 some_string 后, 发送你的 payload

p.sendlineafter(some_string, payload) 接收到 some_string 后, 发送你的 payload,加个换行(末尾\n)

接收返回内容

p.recvn(n) 接受 n(数字) 字符

p.recvline() 接收一行输出

p.recvlines(n) 接收 n(数字) 行输出

p.recvuntil(some_string) 接收到 some_string 为止

p.interactive() 直接进行交互,相当于回到shell的模式,一般在取得shell之后使用
p.close() 关闭交互

生成shellcode

asm(shellcraft.sh())

对于sendlineafter的使用

1:倘若遇见puts函数

puts函数本身会自动换行,此时若用sendlineafter就需要对好格式sendlineafter("encrypted\n",p),才能使发送的payload被gets精确接收。

2:倘若遇见printf函数

举个栗子:printf("Input your Plaintext to be encrypted")

printf函数本身不会自动换行,若使用sendlineafter,则需 sendlineafter("encrypted",p),才能精确发送payload并被程序接收。



穿过云层我试着努力向你奔跑